mysql通过binlog恢复数据

张开发
2026/4/21 3:40:34 15 分钟阅读

分享文章

mysql通过binlog恢复数据
原文地址一、查看是否开启binlog是否开启SHOWVARIABLESLIKElog_bin;开启的模式SHOWVARIABLESLIKEbinlog_format;查看当前使用的哪个文件showmasterstatus查看所有我们通过文件的最后修改时间可以看出binlog覆盖的时间范围。一般后缀的数字越大表示越新。showmaster logs查看保存位置SHOWVARIABLESLIKElog_bin_basename;查看内容分析mysqlbinlog --base64-outputdecode-rows-v--start-datetime2024-09-12 11:59:00--stop-datetime2024-09-12 12:01:00mysql-bin.000213binlog.sqlmysqlbinlog命令即可直接恢复等二、删除命令恢复python脚本自己改下脚本的表什么的importreif__name____main__:# 读取文件withopen(rD:\pythonTools\Models\test.txt,r,encodingutf-8)asf:contentf.read()# 分割每条 DELETE 记录blockscontent.split(DELETE FROM dhgx_cloud_test.sys_user)[1:]inserts[]forblockinblocks:# 提取所有 Nxxx 行matchesre.findall(r###\s(\d)(.*),block)ifnotmatches:continue# 构建字典 {位置: 值}values{}forpos,valinmatches:posint(pos)valval.strip()ifvalNULL:values[pos]NULLelifval.startswith()andval.endswith():values[pos]val# 保留引号else:values[pos]f{val}# 非 NULL 且非字符串如数字也加引号更安全MySQL 允许# 确保有26个字段缺失的设为 NULLrow[]foriinrange(1,27):row.append(values.get(i,NULL))sqlfINSERT INTO dhgx_cloud_test.sys_user ( user_id, dept_id, user_name, nick_name, user_type, email, phonenumber, sex, avatar, password, status, del_flag, login_ip, login_date, create_by, create_time, update_by, update_time, remark, version, custom_id, is_ent_admin, ent_id, ent_name, position, enti_identity ) VALUES ({, .join(row)});inserts.append(sql)# 输出到文件withopen(./recover_sys_user.sql,w,encodingutf-8)asf:f.write(\n.join(inserts))print(f已生成{len(inserts)}条 INSERT 语句保存至 recover_sys_user.sql)

更多文章