17.6.1. MySQL簇的启动阶段

本节介绍了启动簇时涉及的步骤。

有数种不同的启动类型和模式,如下所述:

·         首次启动:在所有节点上与干净的文件系统一起启动簇。这或是出现在首次启动簇时,或是使用“--initial”选项重启簇时。

·         系统重启:簇启动并读取保存在数据节点中的数据。这出现在下述情况下:使用完后关闭了簇,并希望从簇的停止点恢复簇操作时。

·         节点重启:这是在簇运行的同时簇节点的在线重启。

·         首次节点重启:与节点重启类似,差别在于将再次初始化节点,并与干净的文件系统一起启动。

启动之前,必须对每个节点进行初始化操作(ndbd进程)。这包括下述步骤:

1.    获取节点ID

2.    获取配置数据。

3.    为节点间的通信分配端口。

4.    根据从配置文件获得的设置分配内存。

一旦完成了对各节点的初始化操作,将进入簇启动进程。在该进程中,簇将经历下述阶段:

·         阶段0

清理簇文件系统。仅当使用“--initial”选项启动簇时,才会出现。

·         阶段1

建立簇连接,建立节点间的通信。启动簇“心跳”机制。

·         阶段2

选举仲裁程序节点。

如果这是系统重启阶段,簇将确定最近的可恢复全局检查点。

·         阶段3

该阶段包括众多内部簇变量的初始化。

·         阶段4

对于初始启动或初始节点重启,将创建redo日志文件。这类文件的数目等于NoOfFragmentLogFiles

对于系统重启:

o        读取方案。

o        从本地检查点和undo日志读取数据。

o        应用所有的redo信息,直至到达最近的可恢复检查点为止。

对于节点重启,找到redo日志的末尾。

·         阶段5

如果这是首次启动,将创建SYSTAB_0NDB$EVENTS内部系统表。

对于节点重启或首次节点重启:

o        节点包含在事务处理操作中。

o        将节点的方案与主服务器的方案进行比较,并与其同步。

o        对所收到的、来自本节点所在节点组内其他节点的、INSERT形式的数据进行同步。

o        在任何情形下,等待由仲裁程序判定的本地检查点操作的完成。

·         阶段6

更新内部变量。

·         阶段7

更新内部变量。

·         阶段8

在系统重启中,重建所有的索引。

·         阶段9

更新内部变量。

·         阶段10

在节点重启或首次节点重启的这一阶段,API可能会连接到节点,并接收事件。

·         阶段11

在节点重启或首次节点重启的这一阶段,将事件传递任务提交给加入簇的节点。新加入的节点负责将其主要数据传递给订方。

对于首次启动或系统重启,一旦该进程完成,将启用事务处理功能。对于节点重启或首次节点重启,启动进程的完成意味着节点现在能够成为事务协调程序。

关注编程学问公众号