MySQL簇的启动阶段
本节介绍了启动簇时涉及的步骤。
有数种不同的启动类型和模式,如下所述:
· 首次启动:在所有节点上与干净的文件系统一起启动簇。这或是出现在首次启动簇时,或是使用“--initial”选项 重启簇时。
· 系统重启:簇启动并读取保存在数据节点中的数据。这出现在下述情况下:使用完后关闭了簇,并希望从簇的停止点恢复簇操 作时。
· 节点重启:这是在簇运行的同时簇节点的在线重启。
· 首次节点重启:与节点重启类似,差别在于将再次初始化节点,并与干净的文件系统一起启动。
启动之前,必须对每个节点进行初始化操作(ndbd进程)。这包括下述步骤:
1. 获取节点ID。
2. 获取配置数据。
3. 为节点间的通信分配端口。
4. 根据从配置文件获得的设置分配内存。
一旦完成了对各节点的初始化操作,将进入簇启动进程。在该进程中,簇将经历下述阶段:
· 阶段0
清理簇文件系统。仅当使用“--initial”选项启动簇时,才会出现。
· 阶段1
建立簇连接,建立节点间的通信。启动簇“心跳”机制。
· 阶段2
选举仲裁程序节点。
如果这是系统重启阶段,簇将确定最近的可恢复全局检查点。
· 阶段3
该阶段包括众多内部簇变量的初始化。
· 阶段4
对于初始启动或初始节点重启,将创建redo日志文件。这类文件的数目等于NoOfFragmentLogFiles/
对于系统重启:
o 读取方案。
o 从本地检查点和undo日志读取数据。
o 应用所有的redo信息,直至到达最近的可恢复检查点为止。
对于节点重启,找到redo日志的末尾。
· 阶段5
如果这是首次启动,将创建SYSTAB_0和NDB$EVENTS内部系统表。
对于节点重启或首次节点重启:
o 节点包含在事务处理操作中。
o 将节点的方案与主服务器的方案进行比较,并与其同步。
o 对所收到的、来自本节点所在节点组内其他节点的、INSERT形式的数据进行同步。
o 在任何情形下,等待由仲裁程序判定的本地检查点操作的完成。
· 阶段6
更新内部变量。
· 阶段7
更新内部变量。
· 阶段8
在系统重启中,重建所有的索引。
· 阶段9
更新内部变量。
· 阶段10
在节点重启或首次节点重启的这一阶段,API可能会连接到节点,并接收事件。
· 阶段11
在节点重启或首次节点重启的这一阶段,将事件传递任务提交给加入簇的节点。新加入的节点负责将 其主要数据传递给订方。
对于首次启动或系统重启,一旦该进程完成,将启用事务处理功能。对于节点重启或首次节点重启,启动进程的完成意味着 节点现在能够成为事务协调程序。