mysql数据误操作删除后恢复

106 阅读2分钟

前要:根据mysql的binlog日志恢复数据,前提条件是必须开启binlog

image.png

开始数据恢复步骤:

1、查看binlog日志文件,使用命令 show VARIABLES like '%log_bin%',获取binlog日志文件保存位置

image.png

2、查看最新文件名称,通常文件以*.00000X的形式命名,注意提取时间最新的那个或者是目标时间段的那个文件

image.png

3、根据条件筛查日志文件

注意:如果不需要筛查数据表,命令语句中bu不需要增加表名条件,如: mysqlbinlog --no-defaults --database=数据库名 --start-datetime="2022-11-22 00:00:00" --stop-datetime="2022-11-22 23:59:59" 日志文件全路径 > 导出文件(可自定义路径)

mysqlbinlog --no-defaults --database=数据库名 --start-datetime="2022-11-22 00:00:00" --stop-datetime="2022-11-22 23:59:59" 日志文件全路径 | grep 待恢复的数据表名 > 导出文件(可自定义路径)

例如: mysqlbinlog --no-defaults --database=zswodexs --start-datetime="2022-11-22 00:00:00" --stop-datetime="2022-11-22 23:59:59" /mysql5/data/master-bin.000003 > log_out.txt

4、查找导出的文件,获取日志标志点(通常找到最小和最大的即可)

image.png

5、导出日志的sql文件,执行命令: mysqlbinlog --no-defaults --base64-output=DECODE-ROWS -v --start-position=1020251928 --stop-position=1021060739 --database=zswodexs /mysql5/data/master-bin.000003 > sql_info.sql

6、导出文件后打开

实例如图:

image.png

具体的恢复数据根据具体的数据值、表名或者其他关键字查找,数据不多时手动组建sql 恢复数据量大的话,可采用工具 binlog2sql可以将binlog进行反向解析