MySQL 备份数据恢复数据备份策略

Posted 小伍

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 备份数据恢复数据备份策略相关的知识,希望对你有一定的参考价值。

备份数据

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一起使用。

--master-data[=value]:使转存的数据文件包含 CHANGE MASTER TO 语句,该语句标明了服务器的二进制日志文件名和位置。默认值为1,该语句不以注释的形式写入,并在重新加载转存的数据文件时执行。如果值为2,则以注释的形式写入,重新加载转存的数据文件时不会执行。因此生成的 .sql 转存文件包括以下几行:

-- 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,则在转存开始时在短时间内获得全局读锁定。

--single-transaction:对于支持事务的表如InnoDB表,此选项会将事务隔离级别设置为:REPEATABLE READ。并在备份前执行 START TRANSACTION 语句,让整个数据在备份过程中保证一致性,且不会锁表和阻塞其他应用程序。但是该选项不能保证MyISAM表和MEMORY表的数据一致性。

备份过程中应避免其他链接使用以下语句:ALTER TABLE,CREATE TABLE,DROP TABLE,RENAME TABLE,TRUNCATE TABLE,事务并不能隔离以上的语句,可能会导致备份的内容不正确或失败。

该选项与--lock-tables选项互斥,要备份大表,应该将--single-transaction选项与--quick选项结合使用。

--all-databases:备份所有库和表。

--delete-master-logs:执行备份操作后,向服务器发送 PURGE BINARY LOGS 语句来删除二进制日志。此选项会自动启用--master-data。

恢复数据

shell> mysql < backup_sunday_1_PM.sql
shell> mysqlbinlog gbichot2-bin.000007 gbichot2-bin.000008 | mysql
shell> mysqlbinlog gbichot2-bin.000009 ... | mysql

备份策略

  • 始终使用--log-bin选项或--log-bin=log_name选项运行MySQL服务器。
  • 定期使用mysqldump命令进行完整备份。
  • 定期使用 FLUSH LOGS 或 mysqladmin flush-logs 命令刷新日志进行增量备份。

参考:https://dev.mysql.com/doc/mys...

以上是关于MySQL 备份数据恢复数据备份策略的主要内容,如果未能解决你的问题,请参考以下文章

mysql备份策略之我理解

Linux12 -MYSQL数据库 -->17数据库的备份策略

Mysql数据库备份策略:全备与增量备份

mysql常用的备份命令与备份策略

MYSQL自动备份策略的方案

MYSQL自动备份策略的选择与实践