GBase 8a
运维管理
文章

8a节点扩容步骤

发表于2025-08-09 11:54:32122次浏览2个评论

扩容目的:
1.提高集群并行度
2.提高集群可用性
3.提高集群数据存储量
扩容:
多vc模式下,节点加入集群会成为freenode节点,单vc会自动成为数据节点
coordiantor扩容
coordinator节点记录整个集群的元数据信息,且彼此间保持同步。扩容coordinator节点时只需为新节点进行数据库安装操作,新节点根据安装配置文件,指定的信息加入coordiantor集群后,集群内会自动进行元数据的同步和共享。
注意:
1.新增coordiantor节点时,须关停所有节点集群服务、
2.若元数据较多,需指定timeout时间,以避免拷贝元数据超时,默认15分钟
如./gcinstall.py  --silent=demo.options   --timeout=30
data节点扩容
新节点加入集群后,要参与集群内数据分片规划,对库内数据进行有效搬移
复合节点扩容
分片规划:
1.通过重新计算hash分布的方式进行扩容(适合单分片)
例:gcadmin  distribution  分布文件名.xml p 2 d1 pattern 1
2.人为手写分布信息:指定分片,直接进行分片搬移(适合多分片)
例:gcadmin  distribution  分布文件名.xml
v953版本 ,Gcware和gcluster 分离后 gcware 不支持扩容!

单分片扩容:扩容期间原节点会有段时间的数据膨胀
原理:原表都处于工作状态,将原表读到内存,根据分布策略分布数据,扩容成功后,删除原表

多分片扩容:新节点加入集群后,要参与集群内数据分片规划,对库内数据进行有效搬移。
建议使用手动创建分布信息,自动创建分片信息,根据hash计算,对分布信息可能更改较大
扩容建议:
1.建议按照扩展后各个节点上分片数相同进行规划。
2.将现有集群上面的分片,按照策略直接拷贝到扩展节点上面
3.扩展过程中可读数据,但不可写


扩容流程:
data节点扩容
1.安装扩容节点(data或coor)
1.安装集群软件,并修改demo.options文件(需要在集群主节点执行)
1) 设置 dataHost 参数为要安装的节点的 IP;
2) 修改 existCoordinateHost 参数为已存在的 Coordinator 节点的 IP;
3) 修改 existDataHost 参数为已存在的所有 data 节点的 IP。修改后的 demo.options 参考如下


installPrefix= /opt/gbase
#coordinateHost = 192.168.151.234,192.168.151.235,192.168.151.237
#coordinateHostNodeID = 234,235,237
dataHost = 192.168.18.12
existCoordinateHost = 192.168.18.11,192.168.18.13,192.168.18.14
existDataHost = 192.168.18.11,192.168.18.13,192.168.18.14
existGcwareHost= 192.168.18.11,192.168.18.13,192.168.18.14
#gcwareHost = 192.168.151.234,192.168.151.235,192.168.151.237
#gcwareHostNodeID = 234,235,237
dbaUser = gbase
dbaGroup = gbase
dbaPwd = 'gbase@123'
rootPwd = 'gbase@123'
#dbRootPwd = ''
#rootPwdFile = rootPwd.json
#characterSet = utf8
#sshPort = 22

执行安装操作:


[gbase@gbasedata1 gcinstall]$ ./gcinstall.py --silent=demo.options


安装完成后的状态以及分片情况

多vc模式下扩容(需使用addnodes命令)

[gbase@gbaseman gcinstall]$ gcadmin addnodes gcChangeInfo.xml  finance_vc
gcadmin add nodes ...
flush statemachine success
gcadmin addnodes to vc [finance_vc] success

 

2.创建另一个distribution并生成hashmap
修改安装目录下的 gcChangeInfo.xml 文件,增加待扩容的节点 IP,即将扩容后的所有节点 IP 都写入 gcChangeInfo.xml 文件。修改后的 gcChangeInfo.xml 文件参考如下:

 


<?xml version="1.0" encoding="utf-8"?>
<servers>
   <rack>
       <node ip="192.168.18.11"/>
   </rack>
   <rack>
       <node ip="192.168.18.10"/>
   </rack>
   <rack>
       <node ip="192.168.18.14"/>
   </rack>
   <rack>
       <node ip="192.168.18.13"/>
   </rack>
</servers>

创建distribution


[gbase@gbasedata1 gcinstall]$ gcadmin distribution gcChangeInfo.xml p 2 d 1 pattern 2
gcadmin generate distribution ...
copy system table to 192.168.18.10
gcadmin generate distribution successful
或 使用extension,会保证分片尽量在原节点上
[gbase@gbasedata1 gcinstall]$ gcadmin distribution gcChangeInfo.xml p 2 d 1 pattern 2  extension
gcadmin generate distribution ...
copy system table to 192.168.18.10
gcadmin generate distribution successful


初始化hashmap,使用rebalance功能
初始化hashmap


gbase> initnodedatamap;


重分布


gbase> rebalance instance;
Query OK, 19 rows affected (Elapsed: 00:00:00.82)
重分布速度大概是50-100M每秒,操作过程中可读不可写。


数据重分布操作
查看rebalance状态

gbase> select index_name, status, percentage from
gclusterdb.rebalancing_status;
+---------------+-----------+------------+
| index_name    | status    | percentage |
+---------------+-----------+------------+
| test.t11      | COMPLETED |        100 |
| test.t12      | STARTING  |          0 |
+---------------+-----------+------------+
19 rows in set (Elapsed: 00:00:00.03)


4.删除原有的hashmap和distribution
确认集群中没有使用旧的distribution


gbase> select index_name,tbname,data_distribution_id,vc_id from gbase.table_distribution;

删除旧分片


[gbase@gbasedata1 gcinstall]$ gcadmin rmdistribution 3
cluster distribution ID [3]
it will be removed now
please ensure this is ok, input [Y,y] or [N,n]: y
select count(*) from gbase.nodedatamap where data_distribution_id=3 result is not 0
refreshnodedatamap drop 3 success
gcadmin remove distribution [3] success
 或
 refreshnodedatamap  drop   <旧distribution_id>


coordinator节点扩容


1.停止所有服务


[gbase@gbasedata2 ~]$ gcluster_services all stop
Stopping gcrecover :                                       [  OK  ]
Stopping gcluster :                                        [  OK  ]
Stopping gbase :                                           [  OK  ]
Stopping syncserver :                                      [  OK  ]
[gbase@gbasedata2 ~]$ gcware_services all stop
Stopping GCWareMonit success!
Stopping gcware :                                          [  OK  ]
[gbase@gbasedata2 ~]$


2.修改配置文件


installPrefix= /opt/gbase
coordinateHost = 192.168.18.10
coordinateHostNodeID = 10
#dataHost = 192.168.18.10
existCoordinateHost = 192.168.18.11,192.168.18.13,192.168.18.14
existDataHost = 192.168.18.11,192.168.18.13,192.168.18.14,192.168.18.10
existGcwareHost= 192.168.18.11,192.168.18.13,192.168.18.14
gcwareHost = 192.168.18.10
#gcwareHostNodeID = 11,13,14
dbaUser = gbase
dbaGroup = gbase
dbaPwd = 'gbase@123'
rootPwd = 'gbase@123'
#dbRootPwd = ''
#rootPwdFile = rootPwd.json
#characterSet = utf8
#sshPort = 22


3.执行安装操作


复合节点扩容流程:


1.修改配置文件


installPrefix= /opt/gbase
coordinateHost = 192.168.18.12
coordinateHostNodeID = 12
dataHost = 192.168.18.12
existCoordinateHost = 192.168.18.11,192.168.18.13,192.168.18.14,192.168.18.10
existDataHost = 192.168.18.11,192.168.18.13,192.168.18.14,192.168.18.10
existGcwareHost= 192.168.18.11,192.168.18.13,192.168.18.14
#gcwareHost = 192.168.18.12
#gcwareHostNodeID = 11,13,14
dbaUser = gbase
dbaGroup = gbase
dbaPwd = 'gbase@123'
rootPwd = 'gbase@123'
#dbRootPwd = ''
#rootPwdFile = rootPwd.json
#characterSet = utf8
#sshPort = 22

2.停止集群所有服务
3.安装扩容节点
4.创建新的distribution
手动分片,通过getdistribution生产分片文件,然后进行修改
5.初始化hashmap,并进行数据重分布
6.删除旧的distribution

将集群free node添加到指定vc
将 gcChangeInfo.xml 中的 data 节点添加到指定集群中。集群安装成功后会自动调用此命令,无需用
户手工执行 addnodes 命令。
语法:
gcadmin addnodes gcChangeInfo.xml [vc_name | single_vc_add_to_rc]
参数说明:
gcChangeInfo.xml:要添加的数据节点信息文件。集群安装成功后生成该文件,并使用该文件自动调用addnodes 命令。用户执行该命令时可手工编写该文件。
vc name: 指定 vc name 则将节点添加到该 vc 中,否则仅添加到 root cluster 中。
single_vc_add_to_rc: 兼容模式下 addnodes 命令将节点添加到默认 VC 中,若想将新扩容数据节点添加到 root cluster 中,作为 free node,则需使用该参数。 该参数仅在兼容模式下有效,因节点安装后自动调用 addnodes 命令,一般用户无需使用该参数,除非先使用了 gcadmin rmnodes gcChangeInfo.xml 后再添加节点作为 free node 。

评论

登录后才可以发表评论
用户头像
levvel发表于 7个月前
写得真好!
GBase-doudouer发表于 2个月前
厉害了