当数据库 crash 后,如何恢复未刷盘的数据到内存中?


根据 redo log 和 binlog 的两阶段提交,未持久化的数据分为几种情况:

    change buffer 写入,redo log 虽然做了 fsync 但未 commit,binlog 未 fsync 到磁盘,这部分数据丢失。
    change buffer 写入,redo log fsync 未 commit,binlog 已经 fsync 到磁盘,先从 binlog 恢复 redo log,再从 redo log 恢复 change buffer。
    change buffer 写入,redo log 和 binlog 都已经 fsync,直接从 redo log 里恢复。

0 0
讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
帮助