千家信息网

误删MySQL 数据如何复原

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,本文主要给大家介绍误删MySQL 数据如何复原,希望可以给大家补充和更新些知识,如有其它问题需要了解的可以持续在行业资讯里面关注我的更新文章的。数据库备份语句mysqldump -S /tmp/mys
千家信息网最后更新 2024年09月22日误删MySQL 数据如何复原

本文主要给大家介绍误删MySQL 数据如何复原,希望可以给大家补充和更新些知识,如有其它问题需要了解的可以持续在行业资讯里面关注我的更新文章的。

数据库备份语句

mysqldump -S /tmp/mysql3309.sock -u root -pMySQL8.0 \--single-transaction \--quick --flush-logs \--triggers \--routines \--events \--set-gtid-purged=OFF \--databases testdb > testdb.dump

备份时表 nw 存在以下数据

mysql> select * from nw;+---------------------+| dt                  |+---------------------+| 2018-11-12 10:20:26 || 2018-11-12 10:20:27 || 2018-11-12 10:20:28 || 2018-11-12 10:20:28 || 2018-11-12 10:20:29 || 2018-11-12 10:30:53 || 2018-11-12 10:30:54 || 2018-11-12 10:30:55 || 2018-11-12 10:30:55 || 2018-11-12 10:30:56 || 2018-11-12 10:30:57 || 2018-11-12 10:30:57 |+---------------------+

将最近的备份和备份后的二进制文件拷贝另一台有 MySQL 实例的云服务器B

将二进制文件提取为明文文件,查询数据删除的时间点

mysqlbinlog --base64-output=decode-rows -v binlog.000006 > result.sql#181112 10:34:23 server id 3309  end_log_pos 2846       Delete_rows: table id 694 flags: STMT_END_F### DELETE FROM `testdb`.`nw`### WHERE###   @1=1541989226### DELETE FROM `testdb`.`nw`

在服务器B上还原数据库

mysql -S /tmp/mysql3309.sock -u root -pMySQL8.0 < testdb.dump

将删除数据前的二进制日志重新应用到数据库

mysqlbinlog --stop-datetime="2018-11-12 10:34:00" \--skip-gtids binlog.000006 | \mysql -S /tmp/mysql3309.sock -u root -pMySQL8.0

将表 nw dump 出来

mysqldump -S /tmp/mysql3309.sock -u root -pMySQL8.0 \--single-transaction \--quick --flush-logs \--triggers \--routines \--events \--set-gtid-purged=OFF \testdb nw > nw.dump

提取 nw.dump 中的 insert 语句

grep "INSERT INTO \`nw\` VALUES" nw.dump > insert.sql

将 insert 语句在原数据库执行,查询结果数据已经恢复

mysql> use sbtest;mysql> source insert.sqlmysql> select * from nw;+---------------------+| dt                  |+---------------------+| 2018-11-12 10:20:26 || 2018-11-12 10:20:27 || 2018-11-12 10:20:28 || 2018-11-12 10:20:28 || 2018-11-12 10:20:29 || 2018-11-12 10:30:53 || 2018-11-12 10:30:54 || 2018-11-12 10:30:55 || 2018-11-12 10:30:55 || 2018-11-12 10:30:56 || 2018-11-12 10:30:57 || 2018-11-12 10:30:57 || 2018-11-12 10:33:37 || 2018-11-12 10:33:38 || 2018-11-12 10:33:39 || 2018-11-12 10:33:40 || 2018-11-12 10:33:40 || 2018-11-12 10:33:41 || 2018-11-12 10:33:42 || 2018-11-12 10:33:42 || 2018-11-12 10:33:43 |+---------------------+

注意:不要在原服务器上执行还原操作

看了以上关于误删MySQL 数据如何复原,希望能给大家在实际运用中带来一定的帮助。本文由于篇幅有限,难免会有不足和需要补充的地方,如有需要更加专业的解答,可在官网联系我们的24小时售前售后,随时帮您解答问题的。

0