在某些特殊情况下,已经上线使用的集群要更改副本数量,本文介绍在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
初始化
与扩容一样,请参考扩容操作
重分布
与扩容一样,请参考扩容操作
清理
除了没有缩容的最后一步卸载服务步骤,其余的与扩容缩容操作一样,请参考扩容操作。
工程建议
因为在初始化后,所有新建的表将使用新的分布策略,而原有的表保持原有的分布策略,这里就要考虑是否要做重分布,以及重分布的时机。
如果数据量极大,比如每个节点几十T,则重分布过程耗时长,资源消耗高,对现有业务影响很大。按照普通环境每个节点3小时1T计算,30T需要90个小时。而如果带负载,比如加载和查询依旧,则重分布和复杂互相影响,性能都会严重下降。此种情况下,建议不做重分布,而是等数据自然老化,等着老的数据都删除了,需要重分布的数据也就变的非常少了。
另外,由于GBase 8a重分布支持表级,对于常用表,近期数据表,可以这部分执行重分布,其余的等待自然老化,是更常见的使用方式。由于数据量相对少,按照优先级和重要程度执行,完全可以做到耗时可控。
如果空间紧张,可以考虑删掉老的副本多的表,腾出的空间可以容纳更多的副本少的表数据量。
等老化数据都消除后,比如6个月后,再做实例级重分布和后面的步骤。当然如果期间由新硬件加入了,则需要先将上一次的操作做完,才能开始下一次的操作了。