备份是恢复的基础,需提前通过mysqldump创建逻辑备份(.sql格式)。恢复步骤如下:
/home/user/db_backup.sql),继续下一步;若无,需先创建(见“预防措施”部分)。sudo systemctl stop mysql。mysql命令导入,如mysql -u root -p 数据库名 < /path/to/backup.sql(需替换为实际数据库名和路径)。sudo systemctl start mysql),登录MySQL(mysql -u root -p),执行USE 数据库名; SHOW TABLES;检查表是否恢复。若开启了二进制日志(默认关闭),可恢复备份后到故障前的增量数据。步骤如下:
SHOW VARIABLES LIKE 'log_bin';,若值为ON则表示开启。SHOW MASTER STATUS;获取当前binlog文件名(如mysql-bin.000001),或从/var/log/mysql/目录查找。mysqlbinlog工具截取故障时间段内的日志(如--start-datetime="2025-11-09 10:00:00" --stop-datetime="2025-11-09 11:00:00"),生成SQL文件并导入:mysqlbinlog --start-datetime="2025-11-09 10:00:00" --stop-datetime="2025-11-09 11:00:00" /var/log/mysql/mysql-bin.000001 | mysql -u root -p 数据库名
注:若需恢复到特定位置,可用--start-position和--stop-position替代时间参数。若拥有数据库目录的物理备份(如/path/to/backup/,包含.ibd、.frm等文件),可通过以下步骤恢复:
sudo systemctl stop mysql。sudo mv /var/lib/mysql /var/lib/mysql_old)。sudo mkdir /var/lib/mysql,sudo cp -R /path/to/backup/* /var/lib/mysql/。sudo chown -R mysql:mysql /var/lib/mysql。sudo systemctl start mysql,执行sudo mysqlcheck -u root -p --all-databases --auto-repair检查并修复表完整性。sudo apt-get install percona-xtrabackup-24。sudo xtrabackup --backup --target-dir=/path/to/backup。sudo xtrabackup --prepare --target-dir=/path/to/backup,sudo xtrabackup --copy-back --target-dir=/path/to/backup --datadir=/var/lib/mysql。mydumper -u root -p -B 数据库名 -o /path/to/backup;myloader -u root -p -B 数据库名 -d /path/to/backup。若只有InnoDB的.ibd数据文件(无备份),可使用ibd2sql工具提取数据:
sudo apt-get install ibd2sql。ibd2sql -u root -p -d 数据库名 /var/lib/mysql/数据库名/table.ibd > table.sql。mysql -u root -p 数据库名 < table.sql。mysqldump创建逻辑备份(如每周全备+每日增量),或用xtrabackup做物理备份。/etc/mysql/mysql.conf.d/mysqld.cnf,添加log_bin = /var/log/mysql/mysql-bin.log,重启服务生效。恢复过程中若遇错误,可通过/var/log/mysql/error.log查看详细日志定位问题。建议优先使用备份文件恢复,若备份丢失再尝试二进制日志或第三方工具。