以下是Linux上MySQL故障恢复的常见方法:
停止MySQL服务
sudo systemctl stop mysql
备份当前数据
恢复前建议先备份现有数据,避免二次损坏:
sudo cp -r /var/lib/mysql /var/lib/mysql_backup
backup.sql
),执行:mysql -u 用户名 -p 数据库名 < 备份文件.sql
直接复制数据文件
适用于冷备份(需先停止服务),将备份的文件复制到MySQL数据目录(默认/var/lib/mysql
):
sudo cp -r /path/to/backup/* /var/lib/mysql/
热备份工具恢复
若使用Percona XtraBackup等热备份工具,需按工具文档执行恢复流程,通常涉及--copy-back
参数。
基于时间点恢复
通过mysqlbinlog
工具指定时间范围恢复:
mysqlbinlog --start-datetime="2025-01-01 00:00:00" --stop-datetime="2025-01-02 00:00:00" binlog.000001 | mysql -u 用户名 -p
基于位置点恢复
指定日志位置恢复:
mysqlbinlog --start-position=12345 binlog.000001 | mysql -u 用户名 -p
myisamchk(MyISAM引擎)
sudo myisamchk --recover /var/lib/mysql/数据库名/表名.MYI
mysqlcheck(InnoDB引擎)
sudo mysqlcheck -r --all-databases
参考来源: