答案是根据MySQL宕机情况,通过检查日志、磁盘、进程状态确定问题,尝试重启或设置innodb_force_recovery启动实例,优先使用备份和Binlog恢复数据,结合mysqldump导出重建,确保数据完整性后恢复正常服务。
MySQL 宕机或异常后,恢复的核心是确保数据完整性并尽快恢复正常服务。操作需根据具体情况(如是否能启动实例、是否有备份、是否启用 Binlog 等)来决定。以下是常见且实用的恢复流程。
先确认 MySQL 是否完全无法启动,还是只是连接超时:
在未明确数据损坏前,可尝试标准重启:
InnoDB 支持崩溃恢复,可通过配置项控制恢复级别:
innodb_force_recovery = 1
若实例能启动但不稳
定,优先导出数据:
mysqldump -u root -p --all-databases --single-transaction > backup.sql
如果有定期备份和开启 Binlog,可实现精确恢复:
mysqlbinlog --start-datetime="2025-01-01 10:00:00" --stop-datetime="2025-01-01 10:50:00" binlog.000001 | mysql -u root -p
个别表损坏可尝试修复:
基本上就这些。关键是平时做好备份(逻辑 + 物理)、开启 Binlog、监控磁盘和日志。一旦出问题,别慌,按日志一步步排查,优先保数据。