当前位置: 代码网 > it编程>数据库>Mysql > mysql binlog如何恢复数据到某一时刻

mysql binlog如何恢复数据到某一时刻

2024年06月12日 Mysql 我要评论
问题误操作将线上数据库进行了覆盖,且没有完整备份数据库版本:mysql8.0.26预期结果:数据恢复到 2023.12.051、首先 查看数据库的binlog日志show binary logs;2、

问题

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

数据库版本: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、核对数据

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com