在 Debian 系统上恢复 MySQL 数据,常见场景主要有 误删数据恢复、数据库损坏恢复、备份恢复、二进制日志恢复 等。下面按最常见情况给你一个完整、实用的恢复指南。
Debian 下 MySQL 默认数据目录一般是:
/var/lib/mysql
确认:
mysql -u root -p -e "SHOW VARIABLES LIKE 'datadir';"
mysqldump 备份恢复如果你之前做过逻辑备份:
mysql -u root -p < backup.sql
或指定数据库:
mysql -u root -p db_name < backup.sql
✅ 推荐方式 ✅ 不会破坏现有结构
⚠️ 风险较高,仅限同版本 MySQL
恢复步骤:
systemctl stop mysql
cp -a /var/lib/mysql /var/lib/mysql.bak
cp -a /path/to/backup/mysql /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql
systemctl start mysql
SHOW VARIABLES LIKE 'log_bin';
如果没有开启,说明无法用 binlog 恢复。
ls /var/lib/mysql/mysql-bin.*
查看当前 binlog:
SHOW MASTER STATUS;
mysqlbinlog /var/lib/mysql/mysql-bin.000001 | less
找到错误操作的时间点或 position。
mysqlbinlog --start-datetime="2025-01-01 10:00:00" \
--stop-datetime="2025-01-01 10:30:00" \
/var/lib/mysql/mysql-bin.000001 | mysql -u root -p
mysqlbinlog --start-position=1234 --stop-position=5678 \
/var/lib/mysql/mysql-bin.000001 | mysql -u root -p
✅ 适合误删、误更新 ✅ 生产环境最常用
编辑配置文件:
nano /etc/mysql/mysql.conf.d/mysqld.cnf
添加:
[mysqld]
innodb_force_recovery = 1
(1~6,数字越大越强制)
重启:
systemctl restart mysql
⚠️ 只能 导出数据,不能写入
mysqldump -u root -p --force db_name > recover.sql
然后重新初始化数据库并导入。
.ibd 文件(困难但可行)适用情况:
DROP.ibd 文件还在步骤概要(高级):
.ibd⚠️ 复杂、风险高,不建议新手操作
| 类型 | 路径 |
|---|---|
| 数据目录 | /var/lib/mysql |
| 配置文件 | /etc/mysql/ |
| binlog | /var/lib/mysql/mysql-bin.* |
| 错误日志 | /var/log/mysql/error.log |
✅ 先备份当前状态
✅ 不要直接在线上操作
✅ 先测试环境验证
✅ 保证 MySQL 版本一致
✅ 恢复前停止写操作
你可以直接告诉我:
mysql -V)我可以给你 一步一步可执行的命令,避免你踩坑。