高性能MySQL(第三版)第十五章:备份与恢复

本文详细探讨了MySQL备份的重要性,定义了恢复需求,并提出了设计备份方案的建议,包括在线备份与离线备份、逻辑备份与物理备份的选择。强调了在备份策略中考虑RPO和RTO的重要性,推荐使用物理备份并结合二进制日志实现时间点恢复。讨论了备份内容的选择,以及备份工具和恢复技术,包括InnoDB的崩溃恢复。最后,提醒备份不仅需要关注数据安全,还需要确保可恢复性。
摘要由CSDN通过智能技术生成

15.1 为什么要备份

  • 灾难恢复:硬件故障、一个不经意的Bug导致数据损坏,或者服务器及其数据由于某些原因不可获取或无法使用等。
  • 人们改变想法:删除某些数据和又想要恢复这些数据
  • 审计: 数据快照,过去某个时间点的数据状态
  • 测试:取数据到测试环境做测试使用

15.2 定义恢复需求

不仅仅要有备份系统,还要有一个强大的恢复系统。

规划恢复策略时,有两个重要的需求可以帮助思考:恢复点目标(PRO)和恢复时间目标(RTO)。他们定义了可以容忍丢失多少数据,以及需要等待多久将数据恢复。

在定义RPO和RTO是,先尝试回答下面几类问题:

  • 在不导致严重后果的情况下,可以容忍丢失多少数据?
  • 需要故障恢复,还是可以接受自从上次日常备份后所有的工作全部丢失?
  • 是否有法律法规的要求?
  • 恢复需要在多长时间内完成?
  • 哪种类型的宕机是可以接受的?
  • 哪些影响(例如,部分服务不可用)是应用和用户可以接受的?
  • 当那些场景发生时,又该如何持续服务? 需要恢复什么?

常见的需求是恢复整个服务器,单个数据库,单个表,或仅仅是特定的事务或语句

复制 != 备份: 例如Drop table后需要恢复,复制就恢复不了,需要靠备份才能恢复,当然延迟复制有可能的。

15.3 设计MySQL备份方案

细节之前的建议:

  • 在生产实践中,大数据库来说,物理备份是必须的:逻辑备份太慢并且受资源限制,逻辑备份中恢复需要很长时间。基于快照的备份,例如Perconna XtraBackup和MySQL Enterprise Backup是最好的选择。
  • 保留多个备份集
  • 定期从逻辑备份(或者物理备份)中抽取数据进行恢复测试
  • 保存二进制日志以用于基于故障时间点的恢复。expire_logs_days应该设置的足够长.至少大于全量备份的间隔时间。
  • 完不借助备份工具本身来监控备份和备份的过程。需要另外验证备份是否正常。
  • 通过演练整个恢复过程来测试备份和恢复。测算恢复所需要的资源(CPU、磁盘空间、实际时间,以及网络带宽等)
  • 对安全性要仔细考虑。

15.3.1 在线备份还是离线备份

规划备份是,有一些与性能相关的因素需要考虑:

  • 锁时间:需要持有锁多长时间,例如备份期间持有的全局FLUSH TABLES WITH READ LOCK?
  • 备份时间: 复制备份到目的地需要多久
  • 备份负载:在复制备份到目的地时对服务器性能的影响有多少
  • 恢复时间:把备份镜像从存储位置复制到MySQL服务器,重放二进制日志需要多久?

最大的权衡是备份时间与备份负载。提高备份的优先级,代价是降低服务器性能。

15.3.2 逻辑备份还是物理备份

逻辑备份(也叫"导出")和直接复制原始文件的物理备份。

逻辑备份有如下的优点

  • 逻辑备份可以使用编辑器或grep和sed之类的命令查看和操作的普通文件。
  • 恢复非常简单。直接导入。
  • 可以通过网络来备份和恢复
  • 可以在类似Amazon RDS这样不能访问底层文件系统中使
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值