shell> mysqldump --single-transaction --flush-logs --master-data=2 \ --all-databases --delete-master-logs > backup_sunday_1_PM.sql
--flush-logs, -F:轉存數據文件前刷新MySQL服務日誌,在數據目錄生成一個新的二進制日誌文件。一般與--lock-all-tables,-master-data或--single-transaction一塊兒使用。html
--master-data[=value]:使轉存的數據文件包含 CHANGE MASTER TO
語句,該語句標明瞭服務器的二進制日誌文件名和位置。默認值爲1,該語句不以註釋的形式寫入,並在從新加載轉存的數據文件時執行。若是值爲2,則以註釋的形式寫入,從新加載轉存的數據文件時不會執行。所以生成的 .sql
轉存文件包括如下幾行:mysql
-- Position to start replication or point-in-time recovery from -- CHANGE MASTER TO MASTER_LOG_FILE='gbichot2-bin.000007',MASTER_LOG_POS=4;
--master-data選項會自動關閉--lock-tables,而且打開--lock-all-tables,除非同時指定了--single-transaction,則在轉存開始時在短期內得到全局讀鎖定。sql
--single-transaction:對於支持事務的表如InnoDB
表,此選項會將事務隔離級別設置爲:REPEATABLE READ。並在備份前執行 START TRANSACTION 語句,讓整個數據在備份過程當中保證一致性,且不會鎖表和阻塞其餘應用程序。可是該選項不能保證MyISAM表和MEMORY表的數據一致性。shell
備份過程當中應避免其餘連接使用如下語句:ALTER TABLE,CREATE TABLE,DROP TABLE,RENAME TABLE,TRUNCATE TABLE,事務並不能隔離以上的語句,可能會致使備份的內容不正確或失敗。服務器
該選項與--lock-tables選項互斥,要備份大表,應該將--single-transaction選項與--quick選項結合使用。ui
--all-databases:備份全部庫和表。日誌
--delete-master-logs:執行備份操做後,向服務器發送 PURGE BINARY LOGS
語句來刪除二進制日誌。此選項會自動啓用--master-data。code
shell> mysql < backup_sunday_1_PM.sql shell> mysqlbinlog gbichot2-bin.000007 gbichot2-bin.000008 | mysql shell> mysqlbinlog gbichot2-bin.000009 ... | mysql