MySQL--mysqldump(數據導出工具)


mysqldump 客戶端工具用來備份數據庫或在不同數據庫之間進行數據遷移。備份內容包含創建表或裝載表的 SQL 語句。mysqldump 目前是 MySQL 中最常用的備份工具。

有 3 種方式來調用 mysqldump:

      shell> mysqldump [options] db_name [tbl_name ...]    #備份單個數據庫或者庫中部分數據表
      shell> mysqldump [options] --databases db_name ...    #備份指定的一個或者多個數據庫
      shell> mysqldump [options] --all-databases        #備份所有數據庫

官方文檔:https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#mysqldump-performance-options

 

連接選項:

  -u , --user=name      指定用戶名

  -p , --password[=name]   指定密碼

  -h , --host=name      指定服務器 IP 或者域名

  -P , --prot=#         指定連接端口

這 4 個選項經常一起配合使用,如果客戶端位於服務器上,則通常不需要指定 host。如果不指定端口,那么默認連接到 3306 端口,以下是一個遠程客戶端連接到服務器的例子:

1 mysqldump -h192.168.7.55 -P3306 -uroot -p test > test.txt

 

輸出內容選項:

  --add-drop-database      每個數據庫創建語句前加上 DROP DATABASE 語句

  --add-drop-table         在每個表創建語句前加上 DROP TABLE 語句

以上這兩個選項可以在導入數據庫時不用先手工刪除舊的數據庫,而是會自動刪除,提高導入效率,但是導入前一定要做好備份並且確認舊數據庫的確已經可以刪除,否則誤操作將會造成數據的丟失。在默認情況下,這兩個參數都自動加上。

  -n ,  --no-create-db       不包含數據庫的創建語句

  -t ,  --no-create-info      不包含數據表的創建語句

  -d ,  --no-data         不包含數據

這 3 個選項分別表示備份文件中不包含數據庫的創建語句、不包含數據表的創建語句、不包含數據,在不同的場合下,用戶可以根據實際需求來進行選擇。

 

輸出格式選項

  --compact 選項使得輸出結果簡潔,不包括默認選項中的各種注釋。

  -c 或者 --complete-insert 選項使得輸出文件中的 insert 語句也包括字段名稱,默認是不包括字段名稱的。

  -T 選項將指定數據表中的數據備份為單純的數據文本和建表 SQL 兩個文件,經常和下面幾個選項一起配合使用,將數據導出為指定格式顯示。

  -T ,  --tab=name          備份數據和建表語句

  --fields-terminated-by=name      域分隔符

  --fields-enclosed-by=name       域引用符

  --fields-optionally-enclosed-by=name   域可選引用符

  --fields-escaped-by=name        轉義字符

導出為 

 

字符集選項:

--default-character-set=name 選項可以設置導出的客戶端字符集。

這個選項在導出數據庫的時候非常重要,如果客戶端字符集和數據庫字符集不一致,數據在導出的時候就需要進行字符集轉換,將數據庫字符集轉換為客戶端字符集,經過轉換后的數據很可能成為亂碼或者 ? 等特殊字符,使得備份文件無法恢復。

 

其他常用選項:

  -F  --flush-logs   #備份前刷新日志

  加上此選項后,備份前將關閉舊日志,生成新日志。使得進行恢復的時候直接從新日志開始重新做,大大方便了恢復過程。

  -l  --lock-tables  #給所有表加讀鎖

  可以在備份期間使用,使得數據無法被更新,從而使備份的數據保持一致性,可以配合 -F 選項一起使用。

 

關聯表,去除建表語句,鎖表問題

1 D:\Desktop>mysqldump -h10.70.12.17 -P3306 -uroot -p -t SAJT_DZFP_PT tbl_ec_document_
2 item --where="fpqqlsh in (select fpqqlsh  from tbl_ec_document t where unix_time
3 stamp(t.create_date)>unix_timestamp('2016-06-20 15:37:34')") --skip-lock-tables
4 > shit.sql
5 Enter password: **********

-t 跳過表相關語句


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM