开发者

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

目录
  • 问题
    • 1、首先 查看数据库的binlog日志
    • 2、经查 binlog.000001并没有数据操作
    • 3、将binlog.000002
    • 4、找一台本地mysql的环境(linux)
    • 5、重放binlog.000003中的部分
    • 6、start-postion,stop-position获取
    • 7、核对数据
  • 总结

    问题

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

    数据库版本:mysql8.0.26

    预期结果:数据恢复到 2023.12.05

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

    SHOW BINARY LOGS;

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

    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、s编程tart-postion,stop-position获取

    • --start-datetime="2023-12-05 01:00:00" 操作开始时间
    • --stop-datetime="2023-12-05 14:30python: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的javascript数据变动记录 将结果输出到log.txt文件中

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

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

    7、核对数据

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

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客python栈(www.devze.com)。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新数据库

    数据库排行榜