南大通用GBase 8a集群非扩容时更改副本数量的方法

在某些特殊情况下,已经上线使用的集群要更改副本数量,本文介绍在GBase 8a数据库集群里更改副本数量的方法和建议。

如下讨论的是非扩容的情况,如果是扩容,包括缩容,请参考【GBase 8a 扩容操作详细实例】,只需要在构造新的分布策略(distribution时设置好副本数量即可)

如下1+1副本策略,表示1主1备,共2份数据;1+2代表1主2备,共3份数据。

场景分析

副本数量减少,一般是当数据量增加,磁盘空间不足以保存规划的存储周期,而又没有可用的新硬件来扩容,则可能会减少副本数量。考虑到高可用,一般都是原有1+2副本的减少到1+1副本策略.

副本数量增加,则都是出于安全考虑,常见的是如上的反向操作,从1+1副本策略,改造成1+2的副本策略。

操作步骤

整体操作与缩容完全相似,区别是:
1、节点数没变,只是副本数量变动;
2、没有最后一步的卸载节点服务的步骤;

编写新的分布策略配置文件

在这里编写的配置文件,与原始配置文件的节点数相同,IP的顺序也建议相同。

如果是采用人工指定的主备策略,则需要参考原有的,删掉1份或者增加1份备份即可。

创建新的分布策略

如果是人工指定的策略配置,则直接运行即可

gcadmin distribution gcChangeInfo.xml

如果是默认的,则需要注意副本参数d,如下d 1代表一个副本,

gcadmin distribution gcChangeInfo.xml p 1 d 1

如下是创建2个副本

gcadmin distribution gcChangeInfo.xml p 1 d 2

初始化

与扩容一样,请参考扩容操作

重分布

与扩容一样,请参考扩容操作

清理

除了没有缩容的最后一步卸载服务步骤,其余的与扩容缩容操作一样,请参考扩容操作。

工程建议

因为在初始化后,所有新建的表将使用新的分布策略,而原有的表保持原有的分布策略,这里就要考虑是否要做重分布,以及重分布的时机。

GBase 8a扩容时,缩短扩容整体时间的几个建议

如果数据量极大,比如每个节点几十T,则重分布过程耗时长,资源消耗高,对现有业务影响很大。按照普通环境每个节点3小时1T计算,30T需要90个小时。而如果带负载,比如加载和查询依旧,则重分布和复杂互相影响,性能都会严重下降。此种情况下,建议不做重分布,而是等数据自然老化,等着老的数据都删除了,需要重分布的数据也就变的非常少了。

另外,由于GBase 8a重分布支持表级,对于常用表,近期数据表,可以这部分执行重分布,其余的等待自然老化,是更常见的使用方式。由于数据量相对少,按照优先级和重要程度执行,完全可以做到耗时可控。

如果空间紧张,可以考虑删掉老的副本多的表,腾出的空间可以容纳更多的副本少的表数据量。

等老化数据都消除后,比如6个月后,再做实例级重分布和后面的步骤。当然如果期间由新硬件加入了,则需要先将上一次的操作做完,才能开始下一次的操作了。

参考

GBase 8a 扩容操作详细实例

GBase 8a扩容时,缩短扩容整体时间的几个建议