mysql 8.0数据备份恢复_MySQL 8 备份与恢复

备份应用的场景包括:系统崩溃、硬件故障、用户错误、升级MySQL Installation、传输MySQL Installation到另一台机器、设置复制等。Slave Server备份在备份Slave 数据库时,应该备份Master info 和 Relay log info repository,如果在备份时,Slave 正在复制 LOAD DATA语句应该备份slave_load_tmpdi...
摘要由CSDN通过智能技术生成

备份应用的场景包括:系统崩溃、硬件故障、用户错误、升级MySQL Installation、传输MySQL Installation到另一台机器、设置复制等。

Slave Server备份

在备份Slave 数据库时,应该备份Master info 和 Relay log info repository,如果在备份时,Slave 正在复制 LOAD DATA语句应该备份slave_load_tmpdir 系统变量指定目下的SQL_LOAD*文件。

备份和恢复策略的例子

假设数据存储在InnoDB存储引擎上,支持事务和自动崩溃恢复。也假设在崩溃时,MySQL有负载。如果没有负载,可能恢复是不需要的。

一种情况:操作系统崩溃或电源故障,MySQL Server磁盘上的数据在数据库重启后可用。InnoDB上的数据文件可能由于崩溃而不一致。InnoDB读它的日志发现还未刷新到磁盘上的pending 事务或者 noncommited 事务。InnoDB自动回滚未提交的事务,刷新已提交的事务到数据文件中。

另一种情况:如果是文件系统崩溃或者硬件文件,假设MySQL磁盘数据在重启后不可用。这时就需要使用备份恢复。

建立备份策略

假设现在是周日下午一点,做包含所有InnoDB表的全库备份,比如:

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

注:在MySQL 8.0 中默认情况下只有mysql schema下的两张日志表使用CSV存储引擎,其他表全部使用InnoDB存储引擎,在做备份时,mysqldump工具只会备份mysql.general_log、mysql_slow_log这两张日志的定义,而不会备份它们的数据。

这里使用--single-transaction,会在备份开始时,获取一个全局读锁(FLUSH TABLES WITH READ LOCK),在获取二进制日志的坐标位置后释放锁。如果在FLUSH语句执行时,有长时间运行的更新,备份操作可能要等它们完成。--single-transaction使用读一致性保证mysqldump看到的数据不会改变。这就需要没有其他语句破环读一致性,比如ALTER TABLE, DROP TABLE, RENAME TABLE,TRUNCATE TABLE等。

相对于连续的全备,一种有效的做法是:先做全备,然后做增量备份。增量备份更小,花时间也更短。但增量备份给恢复带来一些麻烦,比如:恢复是不能单纯的只应用一个全备,还需要应用增量备份。

在使用增量备份时,可以使用mysqldump工具提供的--flush-logs选项。这个选项会在备份时刷新二进制日志,这样mysqldump的备份中就包含刷新的二进制日志之前的所有数据。在做恢复时,在应用完全备后,可以方便的应用全备后生成的二进制日志。通过mysqldump工具的--maser-data可以知道全备之后的增量备份(二进制日志文件名)。

可以优化前面的备份脚本,比如:

shell> mysqldump --single-transaction --flush-logs --mast

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值