mysqldump 備份還原

Mysqldump mysql

         Mysqldump客戶端程序執行邏輯備份,能夠生產一組SQL語句,這些語句能夠執行重現原始數據庫對象定義和表數據;它能夠轉存一個或多個數據庫進行備份或者轉移到其餘數據庫。Mysqldump命令也能生成csv文件或其餘分隔符的文本,後者XML格式文件;sql

         Mysqldump必須有SELECT 選項for dumptable,SHOW VIEW權限for 存儲視圖,TRIGGER 存儲觸發器;shell

         導入dump文件的時候,你必須有這些語句的執行權限;數據庫

性能和可伸縮性考慮安全

         Mysqldump的優勢包括查看或編輯輸出前的方便和靈活性,你能夠爲了開發或者DBA工做克隆一個數據庫,或者生產輕量級的測試數據庫。對於大量的數據,即便備份花費時間少,可是恢復的時候也會花費大量時間;服務器

調用語法socket

         數據量大的狀況下,推薦物理備份,以原有格式備份數據文件,而且快速導入;性能

         若是你的表主要是InnoDB的,或者Myisam和InnoDB混合的,考慮使用Mysqlbackup命令。它爲InnDB提供最小的中斷性能。Mysqlbakcup也能夠備份Myisam和其餘引擎;測試

         Mysqldump如今能夠一行行地獲取表內容,或者獲取整個表數據,獲取的時候會將數據加載到內存中,數據量大的狀況下,加載過多數據會發生問題,這個時候就能夠--quick(--opt)選項來一行行地獲取數據;ui

 

語法調用:

         有三種方法使用mysqldump:

         Mysqldump[option] db_name [tb1_name …]     備份庫中某些表

         Mysqldump[option] --databases db_name…       備份指定數據庫

         Mysqldump[option] --all-databases                      備份整個數據庫

                  查看你的版本語法支持:mysqldump --help

選項-語法(字母順序)

         --add-drop-database

         --add-drop-table

         --add-drop-trigger

         --add-locks                       對每一個轉存的表進行LOCK和UNLOCK操做;

         --all-databases                         備份全部數據庫

         --bind-address                          指定mysql地址

         --comment                       增長註釋

         --compress                       壓縮全部信息

         --databases                      將全部名稱參數解釋爲數據庫名稱

         --debug                              記錄debug log信息

         --debug-check                          退出的時候打印debug信息

         --default-character-set  指定默認字符集

         --delete-master-logs      dump後刪除全部二進制日誌

         --flush-logs                       開始存儲以前刷新日誌文件

         --force                               及時發生錯誤也繼續執行

         --help                                 顯示幫助信息

         --host                                 鏈接的host地址

         --ignore-error                  忽略指定錯誤

         --ignore-table          忽略指定表

         --lock-all-tables      鎖定全部庫的全部表

         --lock-tables            dump前,鎖定全部表

         --log-error                記錄告警和錯誤

         --no-create-db                 不記錄create database語句

         --no-create-info     不記錄create table語句

         --no-data                          不記錄表內容

         --order-by-primary 以主鍵或第一個惟一索引排序

         --password               當鏈接服務器的時候輸入密碼

         --port                        指定端口

         --protocol                指定協議

         --quick

         --replace                  

         --secure-auth          不以老的格式發送密碼給服務器

         --set-charset            指定字符集

         --single-transaction       

         --skip-add-drop-table     每一個CREATE TABKE前,跳過DROPTABLE

         --skip-add-lock                         不加鎖

         --skip-comments             不加註釋

         --skip-set-charset            跳過字符集設置

         --skip-trigger                    跳過觸發器複製

         --ssl                            啓用加密鏈接

         --ssl-mode                以安全模式鏈接

         --triggers                  複製觸發器

         --user                       

         --verbose

         --where                    

         --xml                          產生xml文件

 

鏈接選項

         --bind-address=ip_address   鏈接到指定地址

    --compress, -C     壓縮serverclient間發送的全部信息

    --host=host_name, -h host_name

    --password[=password], -p[password]

         --port=port_num, -P port_num

         --protocol={TCP|SOCKET|PIPE|MEMORY}

    --socket=path, -S path

    --user=user_name, -u user_name   提供用戶名

    max_allowed_packet   C/S間通訊支持的最大buffer,默認24M最大1G

        

選項-文件

         --defaults-file=file_name   使用file_name而不是全路徑名

   

 

案例:

         備份整個數據庫文件
                  shell> mysqldump db_name > backup-file.sql

         將dump文件加載到sql

shell> mysql db_name < backup-file.sql

         從新加載的另外一方式:

         shell> mysql -e "source /path-to-backup/backup-file.sql"db_name

         一個命令導出幾個實例

         shell> mysqldump --databases db_name1 [db_name2...] > my_databases.sql

         dump全部數據庫

         shell> mysqldump --all-databases >all_databases.sql

         InnoDB中,提供在線備份

         shell> mysqldump --all-databases --master-data--single-transaction > all_databases.sql

 

mysqldump能夠用於升級/降級的兼容性測試:

mysqldump--all-databases --no-data --routines --events > dump-defs.sql

由於沒有導入數據,因此速度快,當驗證兼容性正常的時候,再行導入數據

mysqldump--all-databases --no-create-info > dump-data.sql

 

 

 

限制

         默認狀況下不會複製INFORMATION_SCHEMA,performance_schema信息

SCHEMA主要用於收集服務器性能參數,且庫裏表的存儲引擎均爲PERFORMANCE_SCHEMA

這張數據表保存了MySQL服務器全部數據庫的信息。如數據庫名,數據庫的表,表欄的數據類型與訪問權限等。

         若是想要複製這些信息,必須加上—databases選項去指定這2個庫;

 

 

 

驗證

Step1 作備份mysqldump--databases itdb > itdb.txt 備份itdb庫

cat itdb.txt能夠查看裏面內容

Step2: 刪除itdb庫;

Step3: itdb恢復  mysql < itdb.txt

Step4: 驗證