MySQL 崩溃恢复过程

发布于 2023-11-01 13:22:49 字数 1237 浏览 17 评论 0

正常关闭

  • buffer pool 里边的脏页都会都会刷新一遍到磁盘
  • 记录最新 LSNibdata 文件的第一个 page

非正常关闭

  • 没有上述两个过程
  • 日志进行操作
    • redo log 处理
      • 打开系统表空间 ibdata ,找到第一个完整 page 中的 LSN
      • 进入 redo log 中,找到文件头中的第一个 checkpoint LSN ,开始进行三次扫描
        • 找到 MLOG_CHECKPOINT 日志,如果是非正常恢复将没有这个文件:获取 MLOG_FILE_NAME 中指定后续需要恢复的 ibd 文件
        • 根据 MLOG_CHECKPOINT 日志,读取对应 LSN 之后的日志解析到 hash 表中
        • 若第二次扫描 hash 表空间不足,则发起第三次扫描,清空 hash 表空间,重新从新的 checkpoint 点开始扫描
          • 此前的 redo log 已经存储到 buffer pool 中,最终所有的 redo log 被应用结束
    • undo logbinlog 处理
      • 通过 binlog 获取所有可能没有提交事务的 xid 列表
      • 通过 undo log 中的 insert_undo_list,upddate_undo_list 事务链,构建 undo_list ,在根据 undo_list 构建未提交事务链表
      • 存在 xid 列表进行提交

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

金兰素衣

文章 0 评论 0

ゃ人海孤独症

文章 0 评论 0

一枫情书

文章 0 评论 0

清晰传感

文章 0 评论 0

mb_XvqQsWhl

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文