binlog+mysqldump恢复数据(误删数据库或者表)
2023-12-13 04:54:23
表删除恢复
1、准备数据
首先准备数据库环境,测试数据库为speech1,如下:
为test数据表添加3条记录,如下:三行为新加的记录,添加后将test表删除。
2、恢复数据
查看binlog日志状态
SHOW MASTER STATUS;
查看binlog事件记录
SHOW BINLOG EVENTS IN 'LAPTOP-LLVHJ3C1-bin.000095'
其中Event_type含义如下:
- **WRITE_ROWS:**插入数据。
- **UPDATE_ROWS:**更新数据。
- **DELETE_ROWS:**删除数据。
- **TABLE_MAP:**在写入、更新或删除操作时,提供有关涉及的表的信息。
- **QUERY:**SQL 查询语句。
- **XID:**表示一个事务已经完成,并为该事务分配了一个唯一的事务 ID。
- FORMAT_DESCRIPTION(格式描述):在日志文件开头
生成还原SQL语句:
mysqlbinlog --start-position=4 --stop-position=1583 --verbose LAPTOP-LLVHJ3C1-bin.000095 > bank.sql
还原恢复数据:
mysqlbinlog --start-position=4 --stop-position=1583 --verbose LAPTOP-LLVHJ3C1-bin.000095 | mysql -uroot -p speech1
执行结果如下:
数据已恢复
库删除恢复
1、准备数据
数据库环境如下:
通过mysqldump备份speech1数据库数据:
mysqldump -u root -p speech1 > output.sql
为test数据表添加一条记录,如下:第4行为新加的记录,添加后将test表删除。
最后将整个speech1数据库删除
2、恢复数据
执行备份数据库speech1的SQL语句:
mysql -u root -p speech1 < output.sql
数据库已恢复,但是test表还缺失id为4的记录。
查看Binlog事件:
使用mysqlbinlog恢复插入id=4那条记录的SQL。
其中开始Pos为4,结束为449:
mysqlbinlog --start-position=4 --stop-position=449 --verbose LAPTOP-LLVHJ3C1-bin.000097 | mysql -uroot -p speech1
结果如下:数据已恢复。
文章来源:https://blog.csdn.net/qq_42219004/article/details/134960681
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!