GBase 8a有节点故障离线OFFLINE后对系统的影响如何?

GBase 8a数据库集群是通过主备机制实现的高可用,但有节点离线OFFLINE后,其任务必然会由备份节点接管,从理论上性能会有下降,影响程度需要根据不同情况分析。

一、功能影响

1  纯管理节点下线

如果下线的是管理节点,且数量没有达到或超过1半,那么继续剩余的管理节点可以继续对外提供正常服务。

如果下线的管理节点达到或超过一半,则集群处于LOCK状态,不再对外提供真长服务。对于V8系统,gcadmin显示集群状态为LOCK。对于V9,gcadmin命令一直卡住,用strace gcadmin能看到内部一直在重试连接。

2 纯数据节点下线

对于主备的高可用机制(1+1),只要有一个分片可以对外服务,整个表就可以正常对外服务。

如果所有的主备分片所在的节点都下线,那么这个表将不再完整,所有操作都将报错。参考 GBase 8a集群报错 Failed to get metadata: DETAIL: check nodes, no valid node for suffix

3 管理和数据复合节点下线

影响就是上面2个的组合。

二、性能影响

1 查询类影响

所有查询,都不再下发任务到OFFLIE状体的节点,如果是DML和DDL,则会在任务完成后,设置故障节点不一致的标记。

故障节点的工作任务,将由备份节点接管,在最极限情况下,单分片的集群,性能将下降50%。 实际业务,需要根据系统资源使用情况,节点任务在整个业务中的比例等,下降程度会少很多。如果配置的多分片,则下降程度理论上极限是25%,因为将有2个其它节点接管。

2、管理影响

集群的gcware层目前版本还是采用主动扫描的方式,判断服务状态。当对OFFLINE节点扫描时,由于网络不通, 需要最长等待cfg_connect_timeout参数指定的超时时间,而在gcware扫描期间,是不对外提供服务的。

所以如果系统在频繁的运行gcadmin ,在有节点OFFLINE时,会导致有些业务被卡住cfg_connect_timeout的时间。如果gcadmin并发了,则卡住时间会更长。

所以,数据库管理命令gcadmin不要频运行,特别是不要大量并发运行,否则在有节点故障时,会造成整个集群的性能下降。

3、数据event影响

节点离线,必然会在DML/DDL时,设置为不一致状态,以数据节点更明显。 当event数量积压到一定程度,根据工程经验,10万个以上的event就开始明显对系统性能造成影响,下降大约1-5秒。event数量越多,性能下降越明显。

虽然新版本集群改善了这个问题,影响很小,但依然不建议让系统积压太多的event。

所以OFELINE节点要尽快处理恢复。如果确认数据无法恢复,可以设置该节点进入不可用状态(unavailable),之后集群将不再记录该节点的event。详情请参考 GBase8a MPP Cluster 强制节点离线和节点替换replace

三、总结

作为集群,特别是使用了3年以上的,部分硬件,特别是磁盘,出现故障的几率激增,当发现故障时,尽快确认是否可恢复。如果无法恢复,尽快设置不可用状态。然后安排维修。

如果是网络延迟堵塞等导致的,则建议能给集群使用独立的交换机,避免和其它业务共享。