久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

mysql備份還原庫命令有哪些

150次閱讀
沒有評論

共計 6271 個字符,預計需要花費 16 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

這篇文章給大家分享的是有關 mysql 備份還原庫命令有哪些的內容。丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考。一起跟隨丸趣 TV 小編過來看看吧。

關于 mysql 數據庫備份與還原的方法,這里首先講到備份的工具:mysqlhotcopy,使用 mysqlhotcopy 工具可進行快速備份,然后數據還原,使用 MySQL 命令還原;最后需要導出數據庫表。詳細的介紹還得閱讀本文。

1. 數據備份

定期的備份數據庫,使得在意外情況發生的時候,盡量的減少損失。

1. 使用 mysqldump 命令備份

mysqldump 是 MySQL 提供的一個數據庫備份工具,mysqldump 命令執行的時候,將數據庫備份成一個文本文件,該文件中包含了多個 CREATE 和 INSERT 語句,使用這些語句可以重新創建表和插入數據;

【使用 mysqldump 備份單個數據庫中】

mysqldump -u user -h host -p password dbname filename.sql

【使用 mysqldump 備份數據庫中的指定表】

mysqldump -u user -h host -p password dbname[tbname,[tbname…]] filename.sql

【使用 mysqldump 備份多個數據庫】

mysqldump -u user -h host -p password --databases[dbname,[dbname…]] filename.sql

使用 –databases 參數之后,必須指定至少一個數據庫的名稱,多個數據庫之間使用空格隔開;

【備份系統中所有的數據庫】

mysqldump -u user -h host -p password --all-databases filename.sql

提示:如果在服務器上進行備份,并且表均為 MyISAM,應考慮使用 mysqlhotcopy,因為可以更快的進行備份和恢復;

2. 直接復制整個數據庫目錄

因為 MySQL 表保存為文件方式,所以可以直接復制 MySQL 數據庫的存儲目錄以及文件進行備份。

這是一種簡單、快速、有效的備份方式,要想保持備份的一致性,備份前需要對相關表執行 LOCK TABLES 操作,然后對表執行 FLUSH TABLES(確保開始備份前將所有激活的索引頁寫入硬盤)。這樣當復制數據庫目錄的文件時,允許其他的用戶繼續查詢表。

這種方法對 InnoDB 存儲引擎的表不適用。使用這種方法備份數據最好還原到相同版本的服務器中,不同版本可能不兼容;

3. 使用 mysqlhotcopy 工具快速備份

mysqlhotcopy 是一個 Perl 腳本。

只能運行在數據庫目錄所在的機器上,并且只能備份 MyISAM 和 ARCHIVE 類型的表;

2. 數據還原 1. 使用 MySQL 命令還原

mysql -u username -p [dbname] filename.sql

注意:如果 filename.sql 文件為 mysqldump 工具創建的包含創建數據庫語句的文件,執行的時候不需要指定數據庫名;

如果已經登錄到 MySQL 服務器,還可以使用 source 命令導入 SQL 文件。

source filename

提示:執行 source 命令之前,必須使用 use 語句選擇數據庫。不然,恢復過程中會出現錯誤;

2. 直接復制到數據庫目錄

如果數據庫通過復制數據庫文件備份,可以直接復制備份的文件到 MySQL 數據目錄下實現還原。

通過該方式還原的時候,必須保持備份數據庫和待還原的數據庫服務器的主版本號相同。而且這種方式只是對 MyISAM 引擎的表有效,對于 InnoDB 引擎的表不可用;

執行還原以前關閉 MySQL 服務,將備份的文件或者目錄覆蓋 MySQL 的 data 目錄,啟動 MySQL 服務。

對于 Linux/Unix 操作系統來講,復制完文件需要將文件的用戶或者用戶組更改為 mysql 運行的用戶和組,通常用戶是 mysql,組也是 mysql;

3.mysqlhotcopy 快速恢復

mysqlhotcopy 備份之后的文件也可以用來恢復數據庫,在 MySQL 服務器停止運行的時候,將備份的數據庫文件復制到 MySQL 存放的位置(MySQL 的 data 文件夾),重新啟動 MySQL 服務即可。

如果以根用戶執行該操作,必須指定數據庫文件的所有者

chown -R mysql.mysql /var/lib/mysql/dbname
cp -R /usr/backup/test usr/local/mysql/data

執行完該語句,重啟服務器,MySQL 將恢復到備份狀態

提示:如果需要恢復的數據庫已經存在,則在使用 DROP 語句刪除已經存在的數據庫之后,恢復才可以成功,另外 MySQL 不同版本之間必須兼容;

3. 數據庫遷移

數據庫遷移就是把數據從一個系統移動到另一個系統上。數據遷移有以下原因:

1. 相同版本的 MySQL 數據庫之間的遷移

相同版本的 MySQL 數據庫之間的遷移就是指在主版本號相同的 MySQL 數據庫之間進行數據庫移動。

舉例:

將 www.abc.com 主機上的 MySQL 數據庫全部遷移到 www.bcd.com 主機上:

mysqldump -h www.abc.com -u root -ppassword dbname | mysql -h www.bcd.com -uroot -ppassword

說明:

mysqldump 導入的數據直接通過管道符 |,傳給 mysql 命令導入到主機 www.bcd.com 數據庫中,dbname 為需要遷移的數據庫名稱,如果需要遷移全部的數據庫,可以使用參數 –all-databases

2. 不同版本的 MySQL 數據庫之間的遷移

MySQL 服務器升級的時候,需要先停止服務,然后卸載舊版本,并安裝新版本 MySQL,這種更新方法很簡單,如果想保留舊版本中的用戶訪問控制信息,需要備份 MySQL 中的 mysql 數據庫,在新版本 MySQL 安裝完成之后,重新讀入 mysql 備份文件中的信息;

舊版本與新版本的字符集不同時,遷移過程需要對默認字符集進行修改,不然可能無法正常顯示結果;

對于 InnoDB 引擎的表,一般只能使用 mysqldump 工具將數據導出,然后使用 mysql 命令導入到目標服務器上。

從新版本向舊版本遷移數據的時候,需要特別的小心,最好使用 mysqldump 命令導出,然后導入目標數據庫中;

3. 不同數據庫之間的遷移

數據庫遷移可以使用一些工具,例如在 Windows 系統下,可以使用 MyODBC 實現 MySQL 和 SQL Server 之間的遷移。

MySQL 官方提供的工具 MySQL Migration Toolkit 也可以實現在不同數據庫間進行數據遷移;

4. 表的導出和導入

MySQL 數據庫中的數據可以導出成 SQL 文本文件、xml 文件或者 HTML 文件。

1. 使用 SELECT…INTO OUTFILE 導出文本文件

MySQL 數據庫導出數據的時候,允許使用包含導出定義的 SELECT 語句進行數據導出操作。該文件被創建到服務器主機上,因此必須擁有文件寫入權限(FILE 權限),才能使用此語法。

語法格式:

SELECT columnlist FORM table WHERE condition INTO OUTFILE‘filename’[OPTIONS]

[OPTIONS] 選項:

● FIELDS TERMINATED BY‘value’

● FIELDS [OPTIONALLY] ENCLOSED BY‘value’

● FIELDS ESCAPED BY‘value’

● LINES STARTING BY‘value’

● LINES TERMINATED BY‘value’

說明:filename 不能是一個已經存在的文件;

OPTIONS 部分語法包括 FIELDS 部分的語法和 LINES 子句,其可能的取值有:

FIELDS TERMINATED BY‘value’:

設置字段之間的分隔字符,可以為單個或者多個字符,默認情況下為制表符‘\t’

FIELDS [OPTIONALLY] ENCLOSED BY‘value’:

設置字段的包圍字符,只能為單個字符,如果使用了 OPTIONALLY,則只有 CHAR 和 VERCHAR 等字符數據字段被包括;

FIELDS ESCAPED BY‘value’:

設置如何寫入或者讀取特殊字符,只能為單個字符,即設置轉義字符,默認值為“\”

LINES STARTING BY‘value’:

設置每行數據開始字符,可以為單個或者多個,默認不使用任何字符

LINES TERMINATED BY‘value’:

設置每行數據結尾的字符 可以為單個或者多個字符,默認值為‘\n’;

注意:FIELDS 和 LINES 兩個子句是可選的,如果同時指定,FIELDS 必須位于 LINES 的前面;

2. 使用 mysqldump 命令導出文本文件

mysqldump 工具不僅可以將數據導出為包含 CREATE、INSERT 的 SQL 文件,也可以導出為純文本文件;

mysqldump -T path-u root -p dbname [tables] [OPTIONS]

–OPTIONS 選項:

● –fields-terminated-by=value

● –fields-enclosed-by=value

● –fields-optionally-enclosed-by=value

● –fields-escaped-by=value

● –lines-terminated-end-by=value

說明:只有指定了 T 參數才可以導出為純文本文件;path 表示導出數據的目錄;tables 為指定要導出表的名稱;如果不指定,將導出數據庫 dbname 中的所有的表;

[options] 取值:

● –fields-terminated-by=value:

設置字段之間的分隔字符,可以為單個或者多個字符,默認情況下為制表符‘\t’

● –fields-enclosed-by=value:

設置字段的包圍字符;

● –fields-optionally-enclosed-by=value:

設置字段的包圍字符,只能為單個字符,如果使用了 OPTIONALLY,則只有 CHAR 和 VERCHAR 等字符數據字段被包括;

● –fields-escaped-by=value:

控制如何寫入或者讀取特殊字符,只能為單個字符,及設置轉義字符,默認為反斜線“\”;

● –lines-terminated-end-by=value:

設置每行數據結尾的字符,可以為單個或者多個字符,默認值為‘\n’

3. 使用 MySQL 命令導出文本文件

mysql 是一個功能豐富的工具命令,使用 MySQL 還可以在命令行模式下執行 SQL 指令將查詢結果導入到文本文件中。相比 mysqldump,MySQL 工具導出的結果可讀性更強。

如果 MySQL 服務器是一個單獨的機器,用戶是在一個 client 上進行操作,用戶要把數據導入到 client 機器上,可以使用 mysql - e 語句;

使用 MySQL 導出數據文本文件語句的基本格式如下:

mysql -u root -p --execute=”SELECT 語句”dbname filename.txt

使用 MySQL 命令還可以指定查詢結果的顯示格式:

如果某行記錄字段很多,可能一行不能完全顯示,可以使用 –vartical 參數,將每條記錄分為多行顯示;

【將查詢結果導出到 HTML 文件中】

mysql -u root -p --html --execute=”SELECT 語句”dbname filename.html

【將查詢結果導出到 xml 文件中】

mysql -u root -p --xml --execute=”SELECT 語句”dbname filename.xml

4. 使用 LOAD DATA INFILE 方式導入文本文件

LOAD DATA INFILE 語句用于高速的從一個文本文件中讀取行,并裝入一個表中。文件名稱必須為文字字符串。

LOAD DATA INFILE‘路徑 + 文件名.txt’INTO TABLE tablename [OPTIONS] [IGNORE number LINES]

注意:如果導出的.txt 文件中指定了一些特殊的字符,因此還原語句中也要指定這些字符,以確保還原之后數據的完整性和正確性;

–OPTIONS 選項

● FIELDS TERMINATED BY‘value’

● FIELDS [OPTIONALLY] ENCLOSED BY‘value’

● FIELDS ESCAPED BY‘value’

● LINES STARTING BY‘value’

● LINES TERMINATED BY‘value’

可以看到 LOAD DATA 語句中,關鍵字 INFILE 后面的 filename 文件為導入數據的來源;

tablename 表示待導入的數據表名稱;

OPTIONS 部分語法包括 FIELDS 部分的語法和 LINES 子句,其可能的取值有:

FIELDS TERMINATED BY‘value’:

設置字段之間的分隔字符,可以為單個或者多個字符,默認情況下為制表符‘\t’

FIELDS [OPTIONALLY] ENCLOSED BY‘value’:

設置字段的包圍字符,只能為單個字符,如果使用了 OPTIONALLY,則只有 CHAR 和 VERCHAR 等字符數據字段被包括;

FIELDS ESCAPED BY‘value’:

設置如何寫入或者讀取特殊字符,只能為單個字符,即設置轉義字符,默認值為“\”

LINES STARTING BY‘value’:

設置每行數據開始字符,可以為單個或者多個,默認不使用任何字符

LINES TERMINATED BY‘value’:

設置每行數據結尾的字符 可以為單個或者多個字符,默認值為‘\n’;

[IGNORE number LINES]

選項表示忽略文件開始處的行數,number 表示忽略的行數。執行 LOAD DATA 語句需要 FILE 權限;

5. 使用 mysqlimport 命令導入文本文件

使用 mysqlimport 命令可以導入文本文件,并且不需要登錄 MySQL 客戶端。

使用 mysqlimport 語句需要指定所需的選項、導入的數據庫名稱以及導入的數據文件的路徑和名稱。

mysqlimport 命令的基本語法如下:

mysqlimport -u root -p dbname filename.txt [OPTIONS]

[options] 取值:

● –fields-terminated-by=value:

設置字段之間的分隔字符,可以為單個或者多個字符,默認情況下為制表符‘\t’

● –fields-enclosed-by=value:

設置字段的包圍字符;

● –fields-optionally-enclosed-by=value:

設置字段的包圍字符,只能為單個字符,如果使用了 OPTIONALLY,則只有 CHAR 和 VERCHAR 等字符數據字段被包括;

● –fields-escaped-by=value:

控制如何寫入或者讀取特殊字符,只能為單個字符,及設置轉義字符,默認為反斜線“\”;

● –lines-terminated-end-by=value:

設置每行數據結尾的字符,可以為單個或者多個字符,默認值為‘\n’

● –ignore-lines=n

忽略數據文件的前 n 行;

注意:mysqlimport 命令不能指定導入數據庫的表名稱,數據表的名稱由導入文件名稱決定,即文件名作為表名,導入數據之前該表必須存在。

感謝各位的閱讀!關于 mysql 備份還原庫命令有哪些就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向 AI 問一下細節

丸趣 TV 網 – 提供最優質的資源集合!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-18發表,共計6271字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 黄龙县| 巴中市| 修武县| 阿鲁科尔沁旗| 云梦县| 沾化县| 鹤壁市| 乐亭县| 交口县| 鹤岗市| 新干县| 连城县| 柯坪县| 察隅县| 天峻县| 右玉县| 卢湾区| 华宁县| 五寨县| 浙江省| 望谟县| 巴彦县| 正阳县| 德阳市| 宿松县| 岐山县| 巫溪县| 永和县| 合江县| 永仁县| 桃园市| 吴桥县| 连山| 休宁县| 咸宁市| 柘城县| 武义县| 潞城市| 黑河市| 体育| 七台河市|