上一章咱们了解了GBase8a的冗余副本,但是仅有副本还是不够的,GBase8a还有完善的故障转移机制,当节点故障时能够自动发现故障,并将任务转移到正常的节点继续执行,还能在故障节点恢复上线后,通过一定的机制自动对故障节点的数据进行恢复,使该节点能够再次达到正常提供服务的条件和状态。
今天咱们来聊一聊GBase8a的故障转移机制。
对于gnode节点,由于与故障节点持有同一副本数据的其他节点保持有和故障节点相同的数据副本,所以当该节点故障后,任务将自动转移至其他数据节点继续执行,查询处理仍能返回与故障节点同样的查询结果集合;对于加载或DML操作等的故障转移,gcluster将任务执行切换到与故障的数据节点持有同一副本数据的其他活动的gnode节点上执行,更新后的最新数据状态会在这个活动的gnode节点的数据上反映,同时GCware会将在故障的gnode节点上丢失的更新操作通过日志形式在集群内的其他节点内保存,以备故障恢复后对该故障节点恢复数据时使用。
对于gcluster节点,当该节点故障时(包括进程死的软件故障或者系统宕机的硬件故障),GCware首先会检测到该节点上的故障,并将这一故障状态通知给集群内其他协调节点,此时GCware会协调这个gcluster节点从集群成员中离开并调整集群构成的元数据信息更新。同时,若该故障的gcluster节点此时正在执行任务,由于客户端与该gcluster节点的已经断开连接,则查询任务会失败退出并释放资源,加载或DML操作也会失败,并由另一个活动的gcluster节点协调所有gnode节点回滚到任务执行之前的状态,以确保数据的一致性。
GBase8a还有哪些技术能够保障数据不丢失和业务连续性呢?且听我下回分解。。。