表删除恢复
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
结果如下:数据已恢复。