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
《MySQL 运维实战课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论