MySQL基于binlog恢复数据遇到的问题

本文记录了一次在MySQL数据丢失后,通过binlog恢复数据的过程。由于上线操作失误,数据库表被误删除,但AWS快照只提供了20天前的数据。尝试常规恢复方法失败后,转而使用binlog2sql工具。在解析binlog生成SQL时发现表字段顺序不一致导致导入错误。通过对现有表调整字段顺序,成功将binlog转换的SQL导入,最终实现数据恢复。
摘要由CSDN通过智能技术生成

一、背景

   因为在一次上线的过程中,由于上线给的数据库表表明相同,而数据库名不同,由于同事给的sql语句没有评审,并未给创建数据库语句,导致已存在生产的数据库表被重建了,被重建表的数据库表数据完全丢失。基于这种情况需要紧急恢复数据。但是,郁闷的是AWS的快照在20天前就停止了,最近的数据也只能从20天前数据为基点。恢复过程中,没有想象的恢复那么顺利,总结如下:

二、方法一 基于通用方法恢复数据

    基于下面这些命令,都没有成功恢复数据。

$> /usr/bin/mysqlbinlog --no-defaults ‐‐stop‐position=123 ‐‐stop‐position="1493923" /db/mysql/mysql-bin.000022|mysql ‐uabc ‐p test

或导出SQL,再导入到库。

$> /usr/bin/mysqlbinlog  -v --base64-output=decode-rows \
--start-datetime  "2020-12-09 00:00:00" \
--stop-datetime "2020-12-29 00:00:00" \
-vv \
/db/mysql/mysql-bin.000020 >> /home/centos/binlog20-2020-12-29.sql

mysql> source /home/centos/binlog20-2020-12-29.sql;

三、 方法二 从binlog文件提出标准SQL语句

使用binglog2sql前提是MySQL必须配置了binlog,并且是row处理如下:


                
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值