mysql binlog恢复数据到某一时刻

问题:误操作将线上数据库进行了覆盖,且没有完整备份

数据库版本:mysql8.0.26

预期结果:数据恢复到 2023.12.05

1、首先 查看数据库的binlog日志

SHOW BINARY LOGS;

2、经查 binlog.000001并没有数据操作,需要从binlog.000002开始还原(重放binglog)

  说明:binlog.000002里有建表语句、数据插入、修改等

3、将binlog.000002、binlog.000003文件从服务器上复制到本地

4、找一台本地mysql的环境(linux)

mysqlbinlog --no-defaults ./binlog.000001 --database=rewards | mysql -h127.0.0.1 -P3306 -uroot -p

完整重放binlog.00001中的所有操作。

5、重放binlog.000003中的部分

mysqlbinlog --no-defaults ./ --database=rewards --start-position=156 --stop-position=47183769 | mysql -h127.0.0.1 -P3306 -uroot -p

--start-position=156 ,--stop-position=47183769  这两个值是数据从那个位置开始重放、哪个位置结束。

6、start-postion,stop-position获取

--start-datetime="2023-12-05 01:00:00"  操作开始时间

--stop-datetime="2023-12-05 14:30:00" 操作结束时间

--database=rewards  数据库名称

mysqlbinlog --no-defaults -v --base64-output=decode-rows --database=rewards --start-datetime="2023-12-05 01:00:00" --stop-datetime="2023-12-05 14:30:00" /var/lib/mysql/binlog.000003 > log1.txt

上述解释为,从binlog.000003中提取数据库rewards 2023-12-05 01:00:00到2023-12-05 14:30:00的数据变动记录  将结果输出到log.txt文件中

7、核对数据

核对还原的数据是否完整,没有问题就导到线上。

参考连接:MySQL 开启配置binlog以及通过binlog恢复数据_mysql8开启binlog-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值