故障处理

共享存储多主集群中出现故障时,能够自动进行处理,确保集群的可用性。

常见的故障类型:

  • 节点宕机
  • 节点断电
  • 节点硬件故障
  • 共享存储硬件故障
  • 网络连接故障

目前,神通数据库无法处理共享存储硬件故障的问题,针对其他类型的故障可以通过故障处理机制进行修复。

共享存储多主集群出现故障时,节点的心跳将会丢失,主节点通过仲裁盘心跳检测到从节点在一定时间内没有汇报心跳,则置从节点为宕机状态,多主集群系统会马上启动故障处理流程。

在多主集群故障处理机制下,一旦节点发生故障,登录到故障节点的所有连接将会断开,主节点会读取宕机节点的redo日志,对已提交的事务进行重做,所有未提交事务将被强制回滚。 其他活动节点上的请求可以继续执行,但是如果需要向故障节点传递信息(例如读取宕机节点正在修改的页面),当前操作就会被挂起。 在多主集群故障处理完成后,这些被挂起的操作可以继续执行。

也就是说,多主集群系统产生节点故障时,活动节点上的所有连接均会保留,正在执行的事务有可能被阻塞一段时间, 但最终可以正常完成,不会被强制回滚,也不会影响结果的正确性。

多主集群的故障处理分为两个阶段;第一阶段由所有活动节点共同参与,进行全局的信息收集、重构; 第二阶段由主节点执行,读取宕机节点的redo日志,重做已提交事务的修改,并将故障节点的未提交事务回滚。

在第一阶段执行期间,数据库实例不提供数据库服务,所有用户请求将被挂起。

在第二阶段操作之前,会唤醒所有活动节点,正常提供数据库服务。也就是说故障处理第二阶段的操作与正常的数据库操作在系统内部同时进行。 但在第二阶段执行完成之前,故障处理仍然没有真正结束,在此期间,不能处理节点重加入,也不能处理新的节点故障。