记一次生产mysql数据误操作恢复过程

提示:建议每次对数据库进行修改时都做下备份

 

注意:以下Mysql开启的是row格式的binlog日志,确定到误操作具体时间可能有些麻烦,默认的格式就能很快找出来。这里开启row的原因是还有一种更快的方法实现误操作数据回滚(binlog2sql工具或用python脚本生成反向sql语句),以下介绍的为最常规方法

 

1.发现生产主页打不开,并确定是数据库误操作更新了某个表格引起,大概误操作时间为2018-04-03 15:49——2018-04-03 15:55(每次数据库操作前都通过脚本进行了备份,记录的备份时间后面一段大概就是误操作时间,此处备份时间在15:48)

 

2.vim /etc/my.cnf 注释binlog日志,防止数据恢复时再次被记录

#binlog_do_db=xxx
#max_binlog_size = 100M
#binlog_format = row
#binlog_row_image = full

 

3.先恢复误操作之前的备份xx.sql

mysql -uroot -p  -S /var/lib/mysql/mysql.sock <xxx.sql

 

4.导出当前binlog日志以便确定具体误操作时间

mysqlbinlog --start-datetime='2018-04-03 15:49:00' --stop-datetime='2018-04-03 15:55:00' mysql-bin.000014 >test.txt

 

5.vim test.txt 确认具体误操作位置时间(红色部分)

复制代码
# at 192
#180403 15:50:13 server id 1  end_log_pos 242 CRC32 0x1b094e96  Table_map: `xxx`.`xxx` mapped to number 70
# at 242
#180403 15:50:13 server id 1  end_log_pos 299 CRC32 0xa5ba6d25  Update_rows: table id 70 flags: STMT_END_F

BINLOG '
NTLDWhMBAAAAMgAAAPIAAAAAAEYAAAAAAAEABHNwMnAABHRlc3QAAgMPAi0AA5ZOCRs=
NTLDWh8BAAAAOQAAACsBAAAAAEYAAAAAAAEAAgAC///8AwAAAAVkYW5uefwDAAAABGxvbmclbbql
'/*!*/;
# at 299
#180403 15:50:13 server id 1  end_log_pos 330 CRC32 0xad17ed0c  Xid = 13
COMMIT/*!*/;
# at 330
#180403 15:51:05 server id 1  end_log_pos 402 CRC32 0x6a703d5a  Query   thread_id=2     exec_time=0     error_code=0
SET TIMESTAMP=1522741865/*!*/;
复制代码

 

6.恢复binlog增量记录部分(15:50:13为误操作时间,从15:51:05开始为后续正常操作),增量恢复分两个部分,15:48:00——15:50:05(日志上看误操作之前最新数据时间)和15:51:00——现在

mysqlbinlog --start-datetime='2018-04-03 15:48:00'  --stop-datetime='2018-04-03 15:51:05'  mysql-bin.000xxx |mysql -uroot -p

mysqlbinlog --start-datetime='2018-04-03 15:51:00' mysql-bin.000xxx |mysql -uroot -p

 

 

7.确认数据恢复情况,重新开启binlog日志再重启Mysql

 

posted @   叮伱格斐呃  阅读(433)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
Live2D
欢迎阅读『记一次生产mysql数据误操作恢复过程』
点击右上角即可分享
微信分享提示