市场人员前几天说删除某些记录,但是今天又要恢复......
操蛋啊!~!! 还好前辈们早就启用了binlog
进入mysql环境 查询binlog所在目录 exit退出mysql环境 cd到刚刚查询到binlog所在目录 执行 “ll”命令查看日志文件生成的时间 根据需要导出的时间选择文件
# 是否启用binlog日志
show variables like 'log_bin';
# 查看详细的日志配置信息
show global variables like '%log%';
# mysql数据存储目录
show variables like '%dir%';
# 查看binlog的目录
show global variables like "%log_bin%";
查看所有binlog日志列表
show master logs;
利用mysqlbinlog导出日志
mysqlbinlog -v --base64-output=DECODE-ROWS /var/lib/mysql/binlog.000920
--start-datetime="2023-02-15 9:21:30"--stop-datetime="2023-02-15 10:30:59" >1.txt
利用pyhton来读取文件 生成insert
```
# mysqlbinlog -v --base64-output=DECODE-ROWS /var/lib/mysql/binlog.000920 --start-datetime="2023-02-15 9:21:30"
# --stop-datetime="2023-02-15 10:30:59" >1.txt
# 导出的日志文件 从中找出指定表在特定时间段中被删除的数据 并根据脚本生成insert语句
# 你要恢复误删数据的表名 可以从binlog中复制 注意不要多复制空格
TableName = "`njbx_ms_storehouse`.`store_house_order`"
value = "INSERT INTO " + TableName + " VALUES"
file = open(r"D:\1.txt", 'r', encoding='utf-8') # D:\1.txt你复制出的文件路径
line = file.readline()
# 逐行读取:
while line:
if line.__contains__("DELETE FROM " + TableName):
line = file.readline()
if line.__contains__("### WHERE"):
value += "\n("
line = file.readline()
while line.startswith("### @"):
value += line.split("=")[1].rstrip("\n") + ","
line = file.readline()
value = value.rstrip(",")+"),"
line = file.readline()
file.close()
value = value.rstrip(",")+";"
print(value)
```
从控制台复制生成的inset语句 执行sql 完成