MySQL被误操作的更新或删除后如何回滚
首先,需要确认mysql开启了binlog
打开mysql默认的配置文件地址
#vim /etc/my.cnf
如果没有开启,那么比较遗憾,我暂时还没找到其他回滚的方法。
如果不是Row格式的,我也没有试过,查的资料中都是要求开启Row格式。
然后,打开mysql服务器端,输入如下命令:
注意上方图片中datadir的地址,需要先进入此文件夹,否则可能会报文件找不到的错误
# mysqlbinlog –no-defaults –start-datetime=’2016-09-19 14:56:00′ –stop-datetime=’2016-09-19 14:57:00′ -vv mysql-bin.000056 > /home/wencst/restore/binlog.txt
注意,时间的起止时间越精确找到的对应误操作语句会更精准
最后,将binlog.txt文件导出来分析
找到对应的update或delete语句,可以看到,虽然我们执行的是一个update语句,而实际log中记录的是针对每一条数据都会出现这么一条语句,而且这条语句包含了修改或删除前的数据,那么后面我们就知道该如何还原了吧?
如图,我改的是第18个字段。目前我还没有做自动生成还原语句的脚本,如果小伙伴们有兴趣自己做对应的脚本,可以回复到下方,供大家参考,谢谢。