墨墨导读:备份恢复是DBA最后一道防线。最近项目碰到备份恢复的相关的事项,结合自己的经验,巩固一下知识。 怎样理解备份恢复 MySQL使用环境中,基本都会搭建高可用架构最基本的主从,当主库发生故障导致无法使用的时,可以切换从节点提供服务。 那如果:
这时可以通过之前备份+binglog进行恢复数据。 备份的目的是发生灾难时进行恢复。 这里提供几个建议: 为了保证有效备份,需要考虑备份的扩展性以及用于备份有效性验证的服务器,还需要配合多种备份机制
对于恢复,没有恢复的备份是无意义的, 所以需要
备份恢复工具 MySQL方面各种备份手段: 常用的备份工具有三个: 1.mysqldump 是 MySQL 自带的逻辑备份工具。 2.xtrabackup是一款mysql开源备份(物理备份)工具,是由percona公司开发的。 3.mydumper是一个针对MySQL和Drizzle的高性能多线程备份和恢复工具,能多线程进行备份。 1.数据量少于10G以内使用mydumper,mysqldump 进行备份,其他备份建议xtrabackup 4.处置之外MySQL8.0的clone功能确实非常不错的功能,需要脚本配合,应该比xtrabackup优秀,就是业界使用经验太少,后期继续关注 备份策略: 对于不同的数据,可以采取不同的备份策略,结合全备和增量备份的方式,binlog也需要定期进行备份 以下是常用备份策略: 备份方面最佳实践:
备份恢复注意 常见的备份失败问题: 生产案例: 1. xtrabackup备份和恢复的GTID不一致:5.7和8.0都会存在
解决方案: 2. sql导致失败的案例
3. DDL语句导致失败案例 InnoDB: Last flushed lsn: 3375345258517 load_index lsn 3379255303757 InnoDB: An optimized (without redo logging) DDLoperation has been performed. All modified pages may not have been flushed to the disk yet. PXB will not be able take a consistent backup. Retry the backup operation xtrabackup在备份innoDB数据是,有2种线程: redo拷贝线程和ibd数据拷贝线程。 xtrabackup进程开始执行后,会启动一个redo拷贝的线程,用于从最新的checkpoint点开始顺序拷贝redo.log;再启动ibd数据拷贝线程,进行拷贝ibd数据。 刷新大量数据,或则 redo刷新跟不上 导致刷新redo丢失的情况下,那备份就会失败 4. 大量事务刷新日志&IO性能差 xtrabackup: error: log block numbers mismatch: xtrabackup: error: expected log block no. 201901064, but got no. 208192508 from the log file. xtrabackup: error: it looks like InnoDB log has wrapped around before xtrabackup could process all records due to either log copying being too slow, or log files being too small. xtrabackup: Error: xtrabackup_copy_logfile() failed. Innodb产生日志的速度远超于Xtrabackup复制的速度,部分Innodb日志被截断, 导致备份失败。 5. 空间不足 innobackupex: Error writing file '/tmp/xbtempevLQbf' (Errcode: 28 - No space left on device) xtrabackup: Error: write to logfile failed xtrabackup: Error: xtrabackup_copy_logfile() failed.
所以备份的时候需要确认空间,mysql的tmp空间 6. 备份软件,处理机制不太友好 failed to execute query SET SESSION lock_wait_timeout=31536000,MySQL server has gone away.
MySQL报gone away错误的常见因素 7. nfs挂载注意 从数据库服务器备份到NFS挂载,然后使用另一台同样挂载该卷的服务器来准备备份(应用日志),那么其他服务器对数据的视图可能不一致。这是因为数据可能还没有被刷新到NFS服务器——它可能就在数据库服务器的缓存中。 8. 恢复注意
总结
墨天轮原文链接:https://www./db/40658(复制到浏览器中打开或者点击“阅读原文”立即前往) |
|