网站首页 > 经典案例

MySQL 8.0误update数据后使用mysqlbinlog解析出来的语句将生产库内所有表删除并重建

客户在生产环境误更新了一张表的数据,尝试使用binlog恢复误更新数据的时候误将所有表删除并重建。 MySQL误操作数据修复 MySQL数据库修复 MySQL数据库事务日志恢复

客户名称: 保密

数据类型: MySQL 8.0.33 on Windows

数据库大小: 1 GB

故障检测: 客户执行update语句未加where条件误更新了一张表的一个字段的所有内容,客户MySQL实例开启了log_bin。客户尝试使用mysqlbinlog解析binlog事务日志内容获取回滚语句,但是误操作将生产数据库内所有表删除并重建了。

使用老备份及不全的binlog恢复。

执行mysqlbinlog解析出来的语句时报错:

[ERROR] [MY-013146] [Repl] Replica SQL: Column 17 of table 'supervisor.b_witness_data' cannot be converted from type 'blob' to type 'varchar(300(bytes) utf8mb3)', Error_code: MY-013146

修改表结构:alter table supervisor.b_witness_data modify `witness_res` text DEFAULT NULL COMMENT '见证结论';

[ERROR] [MY-010584] [Repl] Replica SQL: Could not execute Update_rows event on table supervisor.sys_user; Can't find record in 'sys_user', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's source log FIRST, end_log_pos 48491639, Error_code: MY-001032

找不到行数据导致update执行失败,使用脚本将UPDATE语句内容替换为REPLACE INTO。

修复结果: 数据恢复率达90% 客户非常满意。将恢复出来的所有表数据导入客户生产环境使用没有任何问题。

在此提醒大家重要的数据库操作之前务必备份数据库。


 
上一篇:MySQL 8.0数据库被之前备份文件覆盖 误操作恢复 MySQL数据库恢复 MySQL数据库事务日志恢复 下一篇:MySQL 5.6表损坏数据恢复 MySQL数据库恢复 MySQL误删除数据库恢复