GaussDB(DWS) 集群扩容系列一:集群扩容与数据重分布

网友投稿 1261 2022-05-30

集群扩容

当数据库在运行性能和存储上到达瓶颈时,就需要通过增加主机来提升集群的性能及存储能力,此时,原集群需要进行扩容。

如图所示,集群扩容流程包含了四个步骤:

1. 节点预处理:确保扩容的节点符合当前环境部署要求。

2. 添加主机:将主机和实例添加到指定物理集群。

3. 数据重分布:将物理集群原有数据重分布到新扩容节点中。

4. 扩容验证:扩容结束后,验证新加主机及新增服务是否正常。

其中,添加主机与数据重分布为两个核心步骤,也是耗时最长的步骤,接下来,主要介绍添加主机和重分布的步骤。

添加主机

添加主机的核心点就是让新增节点上的GaussDB实例和老集群上的实例具有相同的元数据信息,此部分内容涵盖技术点较多,将在以后章节中单独介绍。下面介绍一下添加主机过程中的gs_expand运维工具的使用方法:

修改集群部署配置文件(cluster.xml)

在集群部署配置文件中添加新增主机的信息:

注意事项:

a) 原有的主备关系不能破坏;

b) 新增节点上不能包含主备GTM和主备CM Server;

c) 新增点上的DN自行成环;

执行前置脚本

执行前置脚本gs_preinstall, 在任意一台旧集群机器的安装目录下,以root用户执行:

gs_preinstall -U perfadm -G users -X  /opt/cluster.xml  --alarm-type=1  --sep-env-file=/opt/temp/env

其中: -U:表示用户名;

-G:表示用户群组;

-X:表示配置文件的地址;

--alarm-type:表示告警类型:

a) 1表示使用FusionInsight的告警管理工具管理告警;

b) 2表示告警将写入syslog日志,不发送恢复告警;

c) 3表示预留给OLTP的接口。

执行添加主机

在集群用户perfadm下执行:

gs_expand -t dilatation -X /opt/cluster.xml --dilatation-mode=insert

其中:-t dilatation:表示添加主机;

-X:表示配置文件的地址;

--dilatation-mode=insert:insert表示在线模式,read-only表示离线模式。

至此,添加主机的步骤已经完成。

数据重分布

通常情况下,集群老节点上的数据量基本趋于饱和,只有将数据平均的搬迁到新节点上,才能降低老节点的负载,这就是数据重分布需要达到的目标。

在集群用户perfadm下执行:

GaussDB(DWS) 集群扩容系列一:集群扩容与数据重分布

gs_expand -t redistribute --fast-redis --parallel-jobs=4 --redis-mode=insert

其中:-t redistribute :表示数据重分布;

--fast-redis:表示快速重分布模式;

--parallel-jobs=4:表示数据重分布的并发度为4;

--redis-mode=insert:insert表示在线模式,read-only表示离线模式。

在线重分布

在线扩容添加节点过程中会阻塞用户的DDL语句,但和离线扩容相比,阻塞时间较短,不阻塞用户数据的查询、插入、更新、删除语句,对用户业务影响小。

在线数据重分布过程中,对正在重分布的数据表,除少量场景有规格限制外,能保证大多数场景业务正常运行。

在线重分布期间的规格限制:

支持新建table、schema、tablespace、view、游标、存储等;

对于正在重分布的表,支持insert、select、update、delete、merge into、drop、copy、gds、truncate、truncate partition等操作;

对正在重分布的表,不支持绝大部分ALTER TABLE操作,包括修改表名、修改schema、新增或删除字段、删除分区、修改默认值等操作,但ALTER TABLE ... TRUNCATE PARTITION除外;

支持从jdbc、odbc、DS、gsql、LVS等客户端下发作业;

支持审计功能;

对于超过996列的宽表,该表重分布期间,仅支持insert和select操作,不支持delete、update操作;

不支持创建、删除、重命名database;

不支持创建、删除、重命名表空间;

不支持对正在重分布的表执行vacuum full和cluster命令,实际上,表完成重分布后也相当于完成了一次vacuum full操作;

data_redis是重分布预留的schema,用户应该避免创建同名的schema, 如果存在会导致重分布失败;

CN剔除和DN节点故障期间,集群状态为degraded,不支持在线重分布;

备份恢复期间,不支持与在线重分布同时使用;

增删cn期间,不支持与在线重分布同时使用;

用户业务对在线重分布的影响:

用户对重分布的表执行频繁的DDL和DML操作并且时间比较长时,会影响重分布时间,导致重分布作业处于pending中;

用户作业在事务中长时间对表加锁,会长时间阻塞对该表进行重分布,甚至导致该表重分布失败,并反复重试;

用户作业对正在重分布的表有大量的数据更新或删除时,会导致重分布多次追增时间较长,增加重分布时间;

用户作业如果有truncate或truncate partition操作,会中断重分布作业,重分布作业需要重入;

离线重分布

离线扩容采用read-only方式执行扩容重分布,在扩容加节点过程中,不建议执行用户业务,如果执行业务,会导致DDL相关语句报错。对于有大的数据库集群,扩容加节点执行时间很长,会导致用户业务被长时间阻塞。在扩容重分布阶段,仅允许用户执行查询操作,由于离线重分布会对重分布表加共享锁,用户插入、更新、删除数据都会被阻塞。由于大表的重分布时间很长,有可能几十分钟或一两个小时,被阻塞的用户作业会等锁超时而中断执行。

重分布进度查询

重分布过程中会创建以下几张表或视图,包括redis_progress视图、redis_progress_detail表、pgxc_redistb表、redis_status表和redis_config表。

它们各自的作用如下,管理员通过对应的视图或表可以查看重分布的进度。

管理员可以通过redis_progress视图查看重分布总体进度。

redis_progress_detail表记录了数据库中每张表重分布所耗时间。

pgxc_redistb表会在每个数据库中创建,记录了对应数据库中需要重分布的表。

redis_status表记录了重分布目前所处状态。

redis_config表记录了重分布的参数,可以直接通过修改数据库中的redis_config表来动态调整配置参数。

Gauss AP EI企业智能 数据仓库服务 GaussDB(DWS)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:jvm远程调试参数与原理
下一篇:嵌入式软件开发是做什么的?要学哪些课程?
相关文章