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