关于Mysql的数据恢复问题

lee7996 2016-11-17 05:34:14
有如下场景
服务器为一master一slave的主从复制,slave复制机制为延迟1小时

某天12:35:22的一次误操作中将数据update掉,需要回复正常数据

解决方案1:从slave中复制表数据恢复到master。

疑问:此时表数据实际应为11:35:22秒的数据,11:35:22-12:35:22的数据该如何恢复。如果使用master的二进制日志进行恢复,slave的中继日志中的POS位置跟master日志中的POS位置相同吗?还是只能一句句查找SQL语句来截取POS的位置。

解决方案2:从全备份文件中恢复相应的表,再根据master中二进制日志进行增量恢复。

困惑:增量恢复数据大的话影响生产。


另外在恢复此表数据时是否需要将master跟slave中所有的表都锁定?

谢谢!
...全文
152 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lee7996 2016-11-19
  • 打赏
  • 举报
回复
引用 1 楼 yupeigu 的回复:
方案一中,你的疑问是 如果把slave的数据把master中误操作的数据修改之后,这个修改本身在同步到slave之前,要先过滤二进制日志? 这个一般不会有问题,复制有按照语句,或者是基于行格式记录,当在master修改误操作的数据之后,这个修改操作也会同步到slave,这样并没有什么问题。。。
想来想去还是方案二方便些,直接从全备份中恢复受影响的表,再根据二进制日志剔除误操作做增量恢复。 另外还想问下如果出现这种情况该如何来避免slave同步master中的误操作呢? 感觉如果不考虑读写分离跟主库切换的话,只要做好备份那slave存在的意义就不大了。还是slave存在的意义就在此? 谢谢!
LongRui888 2016-11-18
  • 打赏
  • 举报
回复
方案一中,你的疑问是 如果把slave的数据把master中误操作的数据修改之后,这个修改本身在同步到slave之前,要先过滤二进制日志? 这个一般不会有问题,复制有按照语句,或者是基于行格式记录,当在master修改误操作的数据之后,这个修改操作也会同步到slave,这样并没有什么问题。。。

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧