误删mysql数据如何通过binlog 日志文件进行恢复

	大家好,这两天做项目是真的难受,误删库里面9万多条数据,项目经理一脸想杀了我的表情,幸亏最终找到了解决方案,为了防止下次再次碰见这种问题,记录下来分享给大家

一:确保mysql已经开启binlog,查看命令

#进入数据库命令面板,输入以下命令
show variables like '%log_bin%';

在这里插入图片描述
值为ON,表示已开启

二:进入binlog文件目录,找出日志文件

查看日志存放位置,mysql默认的存放位置在 var/lib/mysql/
show variables like '%datadir%';

在这里插入图片描述

三:切换到mysqlbinlog目录

	该目录默认在 /usr/bin/
mysqlbinlog 命令的语法格式: mysqlbinlog mysql-bin.0000xx | mysql -u用户名 -p密码
数据库名

-------------------------------------------------------- 常用参数选项解释:
–start-position=875 起始pos点
–stop-position=954 结束pos点
–start-datetime=2016-9-25 22:01:08” 起始时间点
–stop-datetime=2019-9-25 22:09:46” 结束时间点
–database=zyyshop 指定恢复的数据库
-------------------------------------------------------- 不常用选项:
-u --user=name 连接到远程主机的用户名
-p --password[=name] 连接到远程主机的密码
-h --host=name 从远程主机上获取binlog日志
–read-from-remote-server 从某个MySQL服务器上读取binlog日志

四:通过mysqlbinlog工具命令查看数据库增删改查记录

首先通过命令 根据你的操作时间 去日志文件中截取那段日志
mysqlbinlog --no-defaults --database=youku --start-datetime="2023-04-19 14:00:00" --stop-datetime="2023-04-19 15:00:00" /var/lib/mysql/binlog.000020  > /123.txt 

然后在根据 pos点的范围来获取 操作的那段日志
mysqlbinlog --no-defaults --base64-output=DECODE-ROWS -v --start-position=393923040 --stop-position=406094626 --database=uimpx_parse /var/lib/mysql/binlog.000020 > /restore123.sql

发现得到了这样的文件
在这里插入图片描述

五:利用第四步输出的sql语句或者txt文本进行语句过滤,重新插入数据或更新数据

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL的二进制日志binlog记录了对数据库的所有更改操作,包括增删改等操作。如果你误删了某些数据,可以使用binlog进行恢复。 以下是使用binlog恢复数据步骤: 1. 确认binlog是否开启,在MySQL配置文件中确认是否有以下配置: ``` [mysqld] log-bin=mysql-bin ``` 如果没有,则需要在配置文件中添加上述配置,并重新启动MySQL服务。 2. 查看binlog日志文件列表 可以使用以下命令查看binlog日志文件列表: ``` mysqlbinlog --no-defaults --base64-output=DECODE-ROWS -v --start-datetime="2022-01-01 00:00:00" --stop-datetime="2022-01-01 23:59:59" mysql-bin.000001 > /tmp/mysql_binlog.sql ``` 上述命令将把2022年1月1日这一天的binlog日志文件转换成文本格式,并保存到/tmp/mysql_binlog.sql文件中。 3. 找到误删的SQL语句 在/binlog.sql文件中查找误删的SQL语句,可以使用grep命令查找。 例如,查找包含“DELETE FROM users WHERE id=100”的SQL语句: ``` grep "DELETE FROM users WHERE id=100" /tmp/mysql_binlog.sql ``` 4. 恢复数据 找到误删的SQL语句后,可以使用mysql客户端连接到数据库,并执行该语句来恢复数据。 例如,执行以下命令来恢复数据: ``` mysql -u root -p mysql> use mydatabase; mysql> DELETE FROM users WHERE id=100; ``` 以上就是使用binlog恢复数据步骤。需要注意的是,在执行恢复操作前,最好先备份一下数据库,以防止误操作导致数据丢失。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值