1 多实例管理
1.1 多实例的目录介绍
多实例与单实例的目录对比:
多实例服务器环境变量
环境变量对比(/home/gbase/.gbase_profile):
多实例复合节点 if [ -f /opt/192.168.146.20/gbase_profile ]; then if [ -f /opt/192.168.146.20/gcware_profile ]; then | 非多实例复合节点 if [ -f /opt/192.168.146.22/gbase_profile ]; then if [ -f /opt/192.168.146.22/gcware_profile ]; then |
多实例server中复合节点与纯gnode节点环境变量文件对比:
(一个多实例服务器,最多只能有一个节点是带有gcluster和gcware的复合节点)
192.168.146.20 复合节点 /opt/192.168.146.20/gbase_profile | 192.168.146.40 纯gnode节点 /opt/192.168.146.40/gbase_profile |
export GBASE_BASE=/opt/192.168.146.20/gnode export GBASE_HOME=/opt/192.168.146.20/gnode/server export GBASE_SID=gbase export GCLUSTER_USER=gbase export TCMALLOC_AGGRESSIVE_DECOMMIT=1 ulimit -v unlimited unset TERMINFO export TERMINFO_DIRS=/opt/192.168.146.20/gcluster/server/share/terminfo:/opt/192.168.146.20/gnode/server/share/terminfo export GCLUSTER_PREFIX=/opt/192.168.146.20 export GCWARE_BASE=/opt/192.168.146.20/gcware export PYTHONPATH=$PYTHONPATH:$GCWARE_BASE/python export SSH_GBASE_PASSWD=6762617365 export GCLUSTER_HOME=/opt/192.168.146.20/gcluster/server export GCLUSTER_BASE=/opt/192.168.146.20/gcluster export GCLUSTER_SID=gcluster | GBASE_HOME=/opt/192.168.146.40/gnode/server export GBASE_SID=gbaseexport SSH_GBASE_PASSWD=6762617365 export GCLUSTER_HOME=/opt/192.168.146.40/gcluster/server export GCLUSTER_BASE=/opt/192.168.146.40/gcluster export GCLUSTER_SID=gcluster |
1.2 多实例的服务管理
服务概述
coordinator 服务 | gclusterd gcrecover |
gcware服务 | gcware gcware_monit gcware_mmonit |
gnode服务 | gbased gc_sync_server |
监控服务 | coordinator gcluster/server/bin gcmonit gcmmonit gnode gnode/server/bin gcmonit gcmmonit |
多实例服务器所有实例统一启停命令
多实例服务器所有实例的统一启停所有服务命令:
gcluster_services all start
gcluster_services all stop
gcluster_services all restart
gcware服务不受统一启停所有服务命令控制,统一启停所有服务命令控制的服务如下:
gclusterd gcrecover gbased gc_sync_server gcmonit gcmmonit
gcware服务需要单独启停,命令如下:
gcware_services all start
gcware_services all stop
gcware_services all restart
gcware启停命令控制的服务有:gcware gcware_monit gcware_mmonit
示例:多实例服务器(2个gnode):192.168.146.20&192.168.146.40,其中192.168.146.20为复合节点
多实例服务器所有实例统一启停某类服务的命令
gcluster_services gcluster start/stop
gcluster_services gcware start/stop
gcluster_services gcrecover start/stop
gcluster_services syncserver start/stop
gcluster_services gbase start/stop
gcmonit.sh start/stop/status
示例:
[gbase@rhel73-1 ~]$ gcluster_services gbase stop
Stopping gbase: [ OK ]
Stopping gbase: [ OK ]
[gbase@rhel73-1 ~]$ gcmonit.sh stop
Stopping GCMonit success!
多实例服务器单实例启停命令
多实例只支持gnode多实例,gcware和coordinator一台物理机最多只能有一个实例,所以只有gbased和syncserver服务是多实例的。启停命令如下:
gcluster_services syncserver_ip start/stop
gcluster_services gbase_ip start/stop
示例:
gcluster_services gbase_192.168.146.40 stop
gcluster_services syncserver_192.168.146.40 stop
gncli连接多实例中gnode
多实例服务器上使用gncli连接某个实例:
gncli –h ip
示例:
[gbase@rhel73-1 sys_tablespace]$ pwd
/opt/192.168.146.40/gnode/userdata/gbase/testdb/sys_tablespace
[gbase@rhel73-1 sys_tablespace]$ ls
t_n1 t_n5
[gbase@rhel73-1 sys_tablespace]$ gncli -h 192.168.146.40
GBase client 9.5.3.17.123187. Copyright (c) 2004-2020, GBase. All Rights Reserved.
gbase> use testdb;
Query OK, 0 rows affected (Elapsed: 00:00:00.04)
gbase> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| t_n1 |
| t_n5 |
+------------------+
2 rows in set (Elapsed: 00:00:00.06)
2 受多实例影响的功能
相比于V8.6及V9.5.2版本,V9.5.3版本支持多实例部署方式,如下功能会发生变化:
- License的获取和安装变化
- 节点文件目录变化
- 集群服务管理变化
- 集群升级回退变化
- 集群节点替换变化
- 集群备份恢复变化
- 多实例与非多实例的兼容问题—本地加载变化
2.1 升级回退
单实例升级多实例
步骤:升级-->扩容-->多实例numa绑定[可选]
第一步:升级
升级语法无变化,升级的原集群必须是952及952以上的版本。
./gcinstall.py --silent=demo.options -U
集群升级,gcwareHost必须指定且值必须为旧版本gcware节点。
集群升级,IPV4不能指定gcwareHostNodeID;非IPV4必须指定gcwareHostNodeID且值必须为已有gcware的nodeid。
说明:
非IPV4指定gcwareHostNodeID,可以到gcware/config目录下查看gcware.conf,里面有nodeid。Totem下的nodeid是gcwarehostnodeid,gcware下的nodeid是coordinatehostnodeid。
第二步:扩容,使用数据库管理员用户(如:gbase)执行。
给新增加的多实例节点安装集群软件
./gcinstall.py --silent=demo.options --license_file=gbase.lic
demo.options需修改:添加dataHost,填写当前已存在的existCoordinateHost 、existDataHost 、existGcwareHost,注释#coordinateHost 、#coordinateHostNodeID 、#gcwareHost 、#gcwareHostNodeID
创建distribution
gcadmin distribution gcChangeInfo.xml p 1 d 1
生成新的hashmap
gbase> initnodedatamap;
数据重分布
下面的rebalance参数根据需要重分布的数据量进行灵活设置
gbase> set global gcluster_rebalancing_concurrent_count=0;
gbase> rebalance instance;
gbase> set global gcluster_rebalancing_concurrent_count=3;
gbase> select * from gclusterdb.rebalancing_status;
删除旧的hashmap
gbase> refreshnodedatamap drop 1;
删除旧的distribution
[gbase@pst_w61 ~]$ gcadmin rmdistribution 1;
第三步:多实例numa绑定[可选]
根据实际需要可选择是否绑定numa节点,绑定方式参考之前章节NUMA绑定。 修改多实例下的gnode/server/bin/gcluster_services文件后重启集群服务。
注意:
单实例升级多实例版本中扩容步骤可能出现的问题:
./gcinstall.py --silent=demo.options --license_file=20210323.lic
执行完后,多实例的数据节点下没有license文件,重新执行./License导入也没有该文件,需要手动拷贝过去后启动gbase服务
多实例升级多实例
升级语法无变化
- 自动回退
单实例升级多实例或多实例升级多实例过程中发生错误,升级失败后都会自动回退,无需人工干预。
- 手工回退
要求回退前集群可用。回退语法如下:
切换到gcinstall目录下
python Restore.py --silent=demo.options –backupFile= --backupGcwareFile=
注:
如果是多实例回退到单实例,要求升级后没有对集群进行过扩容缩容操作。
升级程序在升级前备份原集群重要文件,如系统表、环境变量等,用户数据不备份。如果原集群是多实例,备份文件会带多实例标识,回退程序会通过读取备份文件来自动判断回退目标是单实例还是多实例进行回退。
2.2 节点替换
节点替换分3种情况:
Coordinator节点替换
在服务正常的管理节点上执行下面命令
replace.py --host=IP --type=coor --dbaUser=dba_user --dbaUserPwd=*** --generalDBUser=db_user --generalDBPwd='***' –overwrite --sync_coordi_metadata_timeout=minutes --retry_times=* --license_file=***
Gnode节点替换
在服务正常的管理节点上执行下面命令
replace.py --host=IP --type=data --dbaUser=dba_user --dbaUserPwd=*** --vcname=vc_name --generalDBUser=db_user --generalDBPwd='***' –overwrite --sync_coordi_metadata_timeout=minutes --retry_times=* --license_file=***
Gcware节点替换
在服务正常的gcware节点执行下面命令
cd $GCWARE_BASE/gcware_server/
./gcserver.py --host=IP --dbaUser=gbase --dbaPwd=gbase --overwrite
其中coordinator节点替换和gnode节点替换不受多实例影响,操作无变化(包括coordinator和gnode的复合节点)。
gcware节点替换在gcware解绑后,有独立的替换语法,替换语法如下:
多实例下gcware节点替换去掉了—prefix参数,gcserver.py读取环境变量获取gcware的安装路径。gcserver.py重新安装被替换的gcware节点,拷贝gcware数据,完成gcware节点的替换操作。
如果是gcware、gcluster和gnode部署在同一个服务器上,替换时建议先替换gcware节点,再替换gcluster节点,最后替换gnode节点。
2.3 备份恢复
- 单机多实例备份恢复rcman增加参数-s,通过-s参数指定备份实例的IP,不指定该参数,备份失败。
- 当前版本备份恢复支持非gbase的数据库用户备份恢复,gcrcman.py和rcman增加参数-U来指定备份恢复的数据库用户名,该用户需要有访问集群所有库表的权限,如果指定用户权限不足则报错退出程序。如不指定默认为gbase用户。
- 当前版本支持gcware独立部署版本的备份恢复。
2.4 本地加载多实例的影响和解决方法
多实例部署方式会对本地文件加载功能造成影响,与非多实例版本相比存在兼容性问题。多实例下本地加载路径语法格式全部采用如下语法格式:
file://host + abs_path
注:如果集群部署为多实例,原有的本地加载路径如果存在语法file://+abs_path,需要进行改写,使用指定host的语法格式。