MySQL:生产误删除数据恢复方法

刺骨的言语ヽ痛彻心扉 2022-09-25 08:19 303阅读 0赞

因为生产上误执行语句,需要找回原数据

delete from `xxx` where a = 1;

步骤

  1. 1、解析主的binlog找到执行删除语句时对应的pos点,如下:
  2. # at 272065343
  3. #160815 16:27:46 server id 1 end_log_pos 272065370 Xid = 12731823587
  4. COMMIT/*!*/;
  5. # at 272065370
  6. #160815 16:27:21 server id 1 end_log_pos 272065441 Query thread_id=83836962 exec_time=26 error_code=0
  7. SET TIMESTAMP=1471249641/*!*/;
  8. SET @@session.sql_mode=0/*!*/;
  9. BEGIN
  10. /*!*/;
  11. # at 272065441
  12. #160815 16:27:21 server id 1 end_log_pos 272065566 Query thread_id=83836962 exec_time=26 error_code=0
  13. SET TIMESTAMP=1471249641/*!*/;
  14. delete from `xxx` where a = 1;
  15. /*!*/;
  16. # at 272065566
  17. #160815 16:27:21 server id 1 end_log_pos 272065593 Xid = 12731793231
  18. COMMIT/*!*/;
  19. 2、找一台空机器,恢复备份
  20. /usr/bin/innobackupex-1.5.1 --user=root --host=127.0.0.1 --port=3306 --defaults-file=/data/mysql/mysql3307/my.cnf --apply-log /data/mysqlbak/db_bak/20160815_3306
  21. /usr/bin/innobackupex-1.5.1 --user=root --host=127.0.0.1 --port=3306 --defaults-file=/data/mysql/mysql3307/my.cnf --copy-back /data/mysqlbak/db_bak/20160815_3306
  22. 3、因为只需要恢复一张表 xxx,修改my.cnf添加参数
  23. replicate-wild-do-table = x.xxx
  24. 4、搭建从库,恢复到制定位置
  25. change master to master_host='192.168.x.x',
  26. master_port=3306,
  27. master_user='qqq',
  28. master_password='qqq',
  29. master_log_file='mysql-bin.001002',
  30. master_log_pos=203021225;
  31. START SLAVE UNTIL master_log_file='mysql-bin.001003',master_log_pos=272065343;

发表评论

表情:
评论列表 (有 0 条评论,303人围观)

还没有评论,来说两句吧...

相关阅读

    相关 mysql 删除数据恢复

    mysql 误删除数据恢复 1.首先确认误删除了那些表的数据以及什么时间执行的删除操作 2.根据上面的时间去mysql服务器下载二进制日志 3.把下载的二进制日志文