標籤:mysql mysqldump databases master 全量
mysqldump是mysql用於轉儲存資料庫的公用程式。它主要產生一個SQL指令碼,其中包含從頭重新建立資料庫所必需的命令CREATE TABLE INSERT等mysqldump 文法 : 預設配置讀取路徑: /etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf Usage: mysqldump [OPTIONS] database [tables] OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] OR mysqldump [OPTIONS] --all-databases [OPTIONS] 常用參數 : -u, --user=name 指定使用者 -h, --host=name 指定主機 -p, --password[=name] 指定密碼 -A, --all-databases 指定所有庫,-A與--all-databases不同時使用 -B, --databases 只指定--databases表示備份單個資料庫;多資料庫之間使用空格隔開;如果不指定--databases表示備份整個資料庫;只指定dbname表示備份單張表;多表之間使用空格隔開 --master-data[=#] 0 表示關閉,預設值為 0 1 表示開頭列印CHANGE MASTER命令資訊,在複製情境中有用 2 表示添加註釋資訊,記錄當前所處二進位日誌及所處位置 --single-transaction 如果全部為 InnoDB引擎表,則不需要使用 --lock-all-tables;基於此選項能實現熱備InnoDB表;會啟動單個大事務,對全域服務影響可能是持久的 --lock-all-tables 執行備份前請求鎖定表,一般只鎖定當前要備份的資料庫及表 --add-drop-database 在恢複之前先刪除已經存在的對應資料庫 --add-drop-table 在恢複之前先刪除已經存在的對應表 -C, --compress 將資料先壓縮後通過網路傳輸 -E, --events 備份資料同時,備份事件調度器代碼 -R, --routines 備份資料同時,備份預存程序和儲存函數 -d, --no-data 表示只備份表結構不備份資料,複製表結構、空庫至其它伺服器時有用.其它任何時候不可用 --opt 同時啟動各種進階選項 備份方式 : 全量+增量+二進位日誌 前提需要在配置中添加參數 : default-storage-engine = InnoDB 設定預設儲存引擎為InnoDB innodb_file_per_table=1 設定每表單個資料表空間 log-bin=mysql-bin 啟用二進位功能 備份過程 : 全量備份 : 使用InnoDB引擎,備份使用--single-transaction選項不需要鎖定表即實現熱備;使用非InnoDB引擎,備份需要使用--lock-all-tables選項進行請求鎖定所有表後開始備份 mysqldump -uroot -pmypass --single-transaction --all-databases --master-data=2 > /backup/mysql_fullbak.sql 增量備份 : mysql> SHOW MASTER STATUS; 查看當前處於哪個記錄檔及位置 less /backup/mysql_fullbak.sql 查看從哪個位置開始 mysqlbinlog --start-position=4579 --stop-position=4868 mysql-bin.000015 > /backup/increment.sql 指定開始及結束位置匯出成增量備份 二進位記錄備份: mysql> INSERT INTO test (Name,Age) VALUES (‘tom‘,18); 增量備份後,插入一條資料 mysql> DROP DATABASE hello; 此時刪除資料庫 mysql> SHOW MASTER STATUS; 查看當前處於哪個記錄檔及位置 mysqlbinlog --start-position=4868 mysql-bin.000015 查看資料庫崩潰前二進位日誌開始位置,結束位置必須是資料庫刪除之前位置 mysqlbinlog --start-position=4868 --stop-position=5062 mysql-bin.000015 > /tmp/hello.sql 將二進位日誌啟動時位置至崩潰前位置資料匯出 恢複過程 : 前提 : 清空資料目錄下所有檔案,重新初始化資料庫 mysql> SET GLOBAL sql_log_bin=0; 恢複時需要臨時關閉二進位日誌,如不關閉,恢複資料將記錄進二進位日誌增加日誌管理難度 mysql> FLUSH LOGS; 手動對二進位日誌進行一次滾動 mysql < /backup/mysql_fullbak.sql 恢複全量備份 mysql < /backup/increment.sql 恢複增量備份 mysql < /tmp/hello.sql 恢複崩潰前置出位元據 恢複後需要使用 mysqlcheck -c --all-databases 檢查所有表是否存在問題,所有恢複完成後請記得對資料庫做一次全量備份. 至此,使用mysqldump備份恢複完成,如有錯誤請大家指教!
本文出自 “Why no !” 部落格,請務必保留此出處http://mydove.blog.51cto.com/8487472/1790005
mysql使用mysqldump備份、恢複