5.3 STTOR 阶段 0

大多数NDB内核块在第 1 阶段开始它们的启动阶段,但和 STTOR除外,它们从第 0 阶段开始,这可以通过检查数组中每个元素的第一个值(在 中定义 )看出。此外,当信号被发送到一个块时,返回信号总是包含该块感兴趣的开始阶段列表。只有在那些开始阶段,块才真正接收到信号。 NDBFSNDBCNTRALL_BLOCKSsrc/kernel/blocks/ndbcntr/NdbcntrMain.cppSTTORSTTORRYSTTOR

STTORALL_BLOCKS信号按照内核块在数组中列出的顺序发出 。在 NDBCNTR经历开始阶段 0 到 255 时,其中大部分是空的。

阶段 0 中的两个活动都与 NDB文件系统的初始化有关。首先,如有必要, NDBFS为数据节点创建文件系统目录。在初始启动的情况下,NDBCNTR从数据节点的目录中清除所有现有文件以确保该DBDIH块随后不会发现任何系统文件(如果 DBDIH找到任何系统文件,它不会将启动正确解释为初始开始)。

每次NDBCNTR完成向所有内核块发送一个启动阶段时,它都会 NODE_STATE_REP向所有块发送一个信号,这有效地更新了NodeState所有块中的 in。

每次NDBCNTR完成非空启动阶段时,它都会将此报告给管理服务器;在大多数情况下,这会记录在集群日志中。

最后,在完成所有启动阶段后, NDBCNTR使用信号更新所有块中的节点状态NODE_STATE_REP;它还发送一个事件报告,通知所有启动阶段都已完成。此外,通知所有其他集群数据节点该节点已完成其所有启动阶段,以确保所有节点都知道彼此的状态。每个数据节点向 NODE_START_REP所有块发送一个;但是,这仅对 有意义 DBDIH,因此它知道何时可以解锁对 上架构更改的锁定 DBDICT

笔记

在下表和整篇文章中,我们有时将STTOR开始阶段简称为 开始阶段阶段 N(其中 N是一些数字)。 NDB_STTOR开始阶段总是这样限定的,因此被称为 NDB_STTOR开始阶段NDB_STTOR阶段

表 5.1 NDB 内核块和启动阶段

内核块 接受开始阶段
NDBFS 0
DBTC 1个
DBDIH 1个
DBLQH 1, 4
DBACC 1个
DBTUP 1个
DBDICT 1, 3
NDBCNTR 0, 1, 2, 3, 4, 5, 6, 8, 9
CMVMI 1 (在 之前QMGR), 3, 8
QMGR 1, 7
TRIX 1个
BACKUP 1, 3, 7
DBUTIL 1, 6
SUMA 1、3、5、7、100(空)、101
DBTUX 1,3,7
TSMAN 1、3(均被忽略)
LGMAN 1、2、3、4、5、6(全部忽略)
PGMAN 1、3、7(第 7 期目前空置)
RESTORE 1,3(仅在阶段 1 中完成任何实际工作)

笔记

该表在撰写本文时是最新的,但可能会随着时间的推移而改变。最新信息可以在源代码中找到。