MySQL: Admin: Recovery

 1st September 2020 at 4:31pm

MySQL 的数据恢复分几种:

  • Point-in-time recovery,即恢复 DB 到过去某一刻。一般是在一些误操作,比如误删数据后进行
  • Recovery from data corruption or disk failure,因为数据文件或者磁盘损坏需要修复,过程与 point-in-time 类似,不再描述
  • Crash recovery,崩溃修复,指在 MySQL 异常退出(如操作系统 bug、掉电等)时的恢复

Point-in-Time Recovery

在要恢复的时间点前需要有全量备份,配合 binlog 即可恢复。具体操作看 官方文档

Crash recovery

崩溃修复有不同的维度:

  • 磁盘有 partial-write 的情况下:InnoDB 的 Doublewrite 机制可以解决
  • 有未完成的事务、未提交的自增 ID、被破坏的 index tree 等:通过 redo log 恢复。写 log 过程中使用的 2PC 算法 也保证了数据的可靠性

References