Mysql通过binlog恢复误删数据

博客强调了数据库备份的重要性,指出备份重要程度依次为系统备份<docker备份<数据库备份<sql备份。还介绍了操作流程,包括执行sql语句查看日志、导出binlog、找出误删语句及pos等,同时给出恢复数据时的注意事项。

重要提醒

一定要对数据库备份!!!备份!!!!备份!!!!

  1. 有时候备份docker并不会备份里面的数据,所以做好docker备份的检查
  2. 系统备份<docker备份(如果有的话)< 数据库备份 < sql备份 根据重要程度最好依次做好备份

操作流程

  1. 执行sql语句,查看当前使用的日志文件
show master status

在这里插入图片描述

  1. 执行sql语句,查看日志列表详情
show binlog events in 'master-mysql-bin.000004'

在这里插入图片描述

  1. 将对应的binlog导出
mysqlbinlog --no-defaults -vv  /var/lib/mysql/master-mysql-bin.000004 > /tmp/all.sql
  1. 使用合适的编辑器查看导出的all.sql文件,并找出造成误删除的sql语句,找到其前面的pos,比如下方示例的819306
# at 819306
exec_time=0	error_code=0	Xid = ***
SET TIMESTAMP=****/*!*/;
SET @@session.pseudo_thread_id=*****/*!*/;
DROP TABLE `误删除的数据表` /* generated by server */

注意

  1. 特别重要:恢复前一定要对现有的所有数据库的数据进行备份,并保证就算在一台新服务器上备份的数据库也可以被顺利恢复。
  2. 注意其最早的记录,如果该记录时间较晚,可能造成恢复数据的过程中报错,或者数据不完整。
  3. 注意查看是否有创建对应表的sql,如果没有创建表的sql,后续需要手动创建对应的表。
  4. 逐个检查drop
  1. 导出其之前的sql进行恢复
mysqlbinlog --no-defaults -v --database="要恢复的数据库"  --start-position="4" --stop-position="819306"  /var/lib/mysql/master-mysql-bin.000004 > /放临时文件的目录/有意义的文件名.sql
  1. 导入文件
mysql -uroot -p密码 < /放临时文件的目录/有意义的文件名.sql

或者进入mysql

mysql -uroot -p密码
source /放临时文件的目录/有意义的文件名.sql

完结

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值