MySQL数据恢复实用指南
一、恢复前的关键判断
SHOW VARIABLES LIKE 'log_bin';,返回值为 ON 表示已启用。二、有备份时的恢复
mysql -u 用户名 -p 数据库名 < 备份文件.sql。innobackupex --apply-log /path/to/backupinnobackupex --copy-back /path/to/backup三、无备份或需精确到某时点的恢复(Binlog PITR)
SHOW VARIABLES LIKE 'log_bin';SHOW BINARY LOGS;mysqlbinlog 检索关键事件与时间:
mysqlbinlog --start-datetime="2025-12-05 10:00:00" --stop-datetime="2025-12-05 10:05:00" mysql-bin.000001mysqlbinlog --start-position=12345 --stop-position=67890 mysql-bin.000001mysql -u 用户名 -p 数据库名 < 全量.sqlmysqlbinlog --start-datetime="2025-12-05 10:00:00" mysql-bin.000001 | mysql -u 用户名 -pmysqlbinlog --stop-datetime="2025-12-05 10:04:59" mysql-bin.000001 | mysql -u 用户名 -pSTOP SLAVE; 在从库回放,验证无误后再切回主或从;必要时用 CHANGE MASTER TO ... 指定位置继续复制。my.cnf 设置 expire_logs_days=7 自动保留最近 7 天日志。四、InnoDB表损坏或异常崩溃的恢复
innodb_flush_log_at_trx_commit、sync_binlog 等参数配置合理,避免再次崩溃。my.cnf 的 [mysqld] 段设置 innodb_force_recovery=1..6(逐级增大),启动后尽快导出数据并重建实例。FLUSH TABLE ... FOR EXPORT,在异常前后妥善拷贝/恢复 .ibd 与表定义,再导入数据。五、预防与运维建议
log_bin=ON,设置合理保留期(如 expire_logs_days=7),避免被自动清理。免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。