暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

openGauss恢复详细流程

openGauss小助手 2021-10-24
1410

具体恢复流程如图4-72所示。

图4-72 恢复时序图

恢复过程如下。

(1) 通过openGauss的StartupXLOG函数调用MOT恢复过程。
(2) 如果存在检查点则从检查点执行第一次恢复。
(3) 读取控制文件,并获取重放lsn。当重启点(备机检查点)存在时,将使用lastReplayLsn作为重放点,而非lsn。
(4) 处理检查点映射文件并生成任务列表。由于MOT检查点仅由行组成,不需要以特定顺序重放,因此这些行的恢复可以并行执行。这就是检查点进程将表拆分成段的原因。
(5) 从元数据文件中恢复所有表的元数据。
(6) 创建检查点恢复线程,每个线程尝试从列表中获取任务,读取与此任务关联的文件并恢复行数据。此恢复是非事务性的。
(7) 如果有进程内事务,也会从检查点恢复。
(8) 检查点恢复完成,返回StartupXLOG,开始重放redo记录。
(9) 当遇到MOT资源管理器(resource manager,rmgr)记录时,将调用MOT引擎的MOTRedo函数,该函数调用恢复管理器ApplyRedoRecord方法。
(10) 在ApplyRedoRecord中,只有当数据的lsn大于恢复的检查点lsn,并且调用ApplyLogSegmentFromData时,才会处理数据。
(11) ApplyLogSegmentFromData从数据中提取LogSegment,分配并插入InProcessTransactions Map。
(12) 当遇到提交记录时,该记录可以是仅MOT事务的LogSegment的一部分,也可以来自MOT注册到openGauss的DDL或跨引擎事务的提交后回调。事务的相关日志段将进行事务性重放和提交。
(13) 上述过程将继续循环,直到StartupXLOG完成。
(14) 调用RecoverDbEnd完成恢复,设置CSN并应用代理状态。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论