8a节点扩容步骤
扩容目的:
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 = 222.停止集群所有服务
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 。
评论
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25044
- 42023-09-25浏览数:18519
- 52020-05-11浏览数:17526