重要提醒
一定要对数据库备份!!!备份!!!!备份!!!!
- 有时候备份docker并不会备份里面的数据,所以做好docker备份的检查
- 系统备份<docker备份(如果有的话)< 数据库备份 < sql备份 根据重要程度最好依次做好备份
操作流程
- 执行sql语句,查看当前使用的日志文件
show master status
- 执行sql语句,查看日志列表详情
show binlog events in 'master-mysql-bin.000004'
- 将对应的binlog导出
mysqlbinlog --no-defaults -vv /var/lib/mysql/master-mysql-bin.000004 > /tmp/all.sql
- 使用合适的编辑器查看导出的all.sql文件,并找出造成误删除的sql语句,找到其前面的pos,比如下方示例的819306
exec_time=0 error_code=0 Xid = ***
SET TIMESTAMP=****;
SET @@session.pseudo_thread_id=*****;
DROP TABLE `误删除的数据表`
注意
- 特别重要:恢复前一定要对现有的所有数据库的数据进行备份,并保证就算在一台新服务器上备份的数据库也可以被顺利恢复。
- 注意其最早的记录,如果该记录时间较晚,可能造成恢复数据的过程中报错,或者数据不完整。
- 注意查看是否有创建对应表的sql,如果没有创建表的sql,后续需要手动创建对应的表。
- 逐个检查drop
- 导出其之前的sql进行恢复
mysqlbinlog
- 导入文件
mysql -uroot -p密码 < /放临时文件的目录/有意义的文件名.sql
或者进入mysql
mysql -uroot -p密码
source /放临时文件的目录/有意义的文件名.sql
完结
|