一、使用备份恢复
备份是最常见的数据恢复方法。通过定期备份数据库,可以在数据丢失时快速恢复到最近的备份状态。
- 停止 MySQL 服务
sudo systemctl stop mysql
- 恢复备份
mysql -u root -p < /path/to/backup.sql
- 重启 MySQL 服务
sudo systemctl start mysql
优点:
- 简单易行:只需执行几条简单的命令即可完成恢复。
- 可靠性高:只要备份文件完整且未损坏,可以完全恢复到备份时的状态。
缺点:
- 数据丢失:只能恢复到最后一次备份的时间点,之后的数据无法恢复。
- 依赖备份策略:需要有定期的备份计划,否则可能没有可用的备份文件。
二、使用二进制日志(Binary Log)
二进制日志记录了所有对数据库进行的更改操作。通过这些日志,可以回滚到特定时间点或重放某些操作。
Binlog 模式说明:
- ROW:行模式,推荐设置,提供更好的一致性。
- STATEMENT:语句模式,仅记录 SQL 语句,可能丢失部分数据。
- MIXED:混合模式,根据情况自动切换。
操作步骤:
- 检查 Binlog 开启状态
SHOW VARIABLES LIKE 'log_bin';
若值为 ON,表示已开启。
- 查询 Binlog 格式
SHOW VARIABLES LIKE 'binlog_format';
- 查找包含删除操作的 Binlog 文件
SHOW BINARY LOGS;
- 查看当前 Binlog 状态
SHOW MASTER STATUS\G
- 解析 Binlog 文件
使用
mysqlbinlog工具将 binlog 文件解析成可读的 SQL 文件,指定时间范围以精确定位误删操作之前的状态。
mysqlbinlog --start-datetime="YYYY-MM-DD HH:MM:SS" --stop-datetime="YYYY-MM-DD HH:MM:SS" /path/to/binlog | mysql -u root -p
- 定位删除操作 筛选出 DROP TABLE 语句:

