MySQL 运维实战课
张新铭(俊达)
云掣科技资深数据库专家,前淘宝网、支付宝数据库专家
1080 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已更新 41 讲/共 50 讲
MySQL 运维实战课
15
15
1.0x
00:00/00:00
登录|注册

39|数据误操作了如何快速恢复?

你好,我是俊达。
上一讲中,我们知道了如何使用 Xtrabackup 来备份数据库和恢复数据库。不管是全量备份,还是增量备份,实际上都只能将数据库恢复到一个固定的时间点,这个时间点就是 Xtrabackup 备份完成的那个时刻。
但是在现实中,数据恢复的要求往往会更高。假设我们每天凌晨都会备份数据库。某一天下午,由于误操作,某一个重要的业务表的数据被清空了。使用凌晨的备份文件,只能恢复一部分数据。从凌晨到误操作发生的那一刻,这个表上进行了很多 DML 操作,这部分数据如何恢复呢?
这一讲我们就来解决这个问题。根据误操作的不同情况,我们可以选择不同方法来恢复数据。

Binlog 备份

为了将数据库恢复到任意一个时间点,我们需要将 Binlog 也备份起来。如果 Binlog 没有备份,同时你又把 Binlog 删除了,那么就可能无法将数据恢复到这些 Binlog 覆盖的时间点。
备份 Binlog 实际上比较简单,一个 Binlog,一旦完成切换,里面的内容就不会发生变化。你可以使用操作系统的命令,比如 cp,将除了最后一个 binlog 之外其他 Binlog,拷贝到备份空间。使用这种方式,无法实时备份最新的那个 Binlog 文件。极端情况下,如果这个时候数据库所在的服务器崩溃了,而且无法启动,那么你可能会丢失最后一个 Binlog 中的数据。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. 数据恢复的要求往往更高,需要将数据库恢复到任意一个时间点,因此需要备份Binlog来实现数据恢复。 2. 备份Binlog可以使用操作系统的命令,如cp,或者使用mysqlbinlog命令行工具实时接收远程数据库上生成的Binlog事件。 3. 只要有全量备份和全量备份后的所有binlog,就能将数据库恢复到全量备份之后的任意时间点。 4. 恢复到指定时间点需要找到时间点对应的binlog,可以使用python脚本批量查看binlog时间。 5. 使用mysqlbinlog解析binlog并执行,可以依次使用mysqlbinlog解析binlog,并发送给mysql执行,最后校验数据是否恢复到了正确的时间点。 6. 使用MySQL原生复制功能实现时间点恢复,可以提高可靠性和效率。 7. 时间点恢复注意事项包括监控主备库的复制状态和优先选择使用主库的binlog进行恢复。 8. 基于Binlog回滚的数据恢复可以使用ROW格式的Binlog,并解析Binlog中的数据来进行恢复。 9. 对于ROW格式的Binlog,mysqlbinlog加上-v选项,可以输出文本格式的数据,方便解析。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《MySQL 运维实战课》
新⼈⾸单¥59
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部