mysql binlog如何恢复数据到某一时刻
更新时间:2024年06月01日 15:37:05 作者:骚操作不断
这篇文章主要介绍了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、核对数据
核对还原的数据是否完整,没有问题就导到线上。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
解决Access denied for user root @&nbs
这篇文章给大家介绍了解决:Access denied for user ‘root‘@‘192.168.120.1‘ (using password: YES)的问题,文中通过图文和代码给大家分析的非常详细,具有一定的参考价值,需要的朋友可以参考下2024-01-01Centos7 安装mysql 8.0.13(rpm)的教程详解
这篇文章主要介绍了Centos7 安装mysql 8.0.13(rpm)的教程详解,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下2018-11-11
最新评论