本文记录服务器断电导致数据损坏,通过备份恢复+binlog恢复数据的过程。
早上11点多发现在系统无法连接,发现在断电后UPS没有供电,导致服务器关机,数据库数据损坏,系统无法正常使用。
目标是恢复到11点的数据。
恢复过程如下:
- 为了binlog恢复过程不会报主键重复,删除所有表(删除表的时候检查一下/var/lib/mysql/{database_name}/*.idb文件是否删除)。
- 恢复每天0点定时全量备份数据
- 执行binlog恢复:
cd /var/lib/mysql mysqlbinlog --start-datetime="2024-10-10 00:00:00" --stop-datetime="2024-10-10 11:00:00" binlog.000244 | mysql -u root -p database_name
--start-datetime为binlog恢复的开始时间,设置为备份完成的时间。如果执行会报某某表主键重复,找到某某表查看最近的创建时间,把--start-datetime改为这个创建时间。binlog.000244为binlog文件名。--stop-datetime为binlog恢复的结束时间