一、节点替换的理论
1.节点故障
2.集群硬件升级
替换的节点类型:
1.coordinator节点
原理:替换安装程序会修改corosync的配置文件,使得新节点能够在集群内代替旧节点
清除ddl恢复日志
2.data节点
原理:替换安装程序会创建用户数据库,设置所有的用户数据全同步标志;
清除ddl恢复日志,dml恢复日志和dml全同步日志(以前节点的同步信息没作用)
3.复合节点(coordinator+data)
注:节点替换会执行清除同步日志信息,同步元数据信息等操作,随后数据同步由自动恢复服务完成
准备替换节点设备硬件-->重新安装集群软件-->进行数据同步操作
注:节点替换的过程中,集群不支持写操作,只能执行select等读操作
节点替换,可以使用freenode节点替换,或者使用new节点替换,freenode只能替换data node,new节点可以替换coordinator和data node。
节点替换过程中集群模式的变化:
NORMAL -> READONLY -> NORMAL
同步元数据前:集群模式为 NORMAL,集群可以正常操作
同步元数据期间:集群模式为 READONLY,只允许进行查询操作,不允许任何 dml、 ddl 以及加载操作,此时进行数据表结构的同步操作,对用户数据表设置全同步标志
同步完成后:集群模式为 NORMAL,集群可以正常操作
替换完成后,集群可以正常进行操作。
注:参考集群配置文件gbase_8a_gcluster.conf中的gcluster_mode_wait参数:0:表示节点替换过程中出现写操作报错退出,1:(默认)表示节点的替换过程中,让用户的写操作无限等待,直到节点替换完成,再继续执行
节点替换过程中节点的变化:
OFFLINE/close/open-> UNAVAILABLE(无效) -> REPLACE -> ONLINE
替换开始前:节点损坏,节点的状态为 OFFLINE,用户必须设置节点状态为 UNAVAILABLE;
替换开始后:节点状态转换为 REPLACE
替换成功后:节点状态转换为 ONLINE
替换执行失败:节点状态回滚为 UNAVAILABLE
注:数据不会丢失
纯数据节点进行节点替换时,可直接使用集群中的 freenode,如果没有 freenode,也可使用一台集群外的新机器进行节点替换。
86版本节点替换
v95版本替换:
二、节点替换的步骤
1.检查网络状态
保证集群内网络畅通,带宽充裕
2.设置要替换的节点的状态为unavailable;
在操作系统的gbase用户下(demo.options文件中dbauser参数指定的用户)下运行 gcadmin setnodestate 命令设置要替换的节点状态为unavailable(改成unavailable之后,只能做替换操作,不能改成其他模式)
如:gcadmin setnodestate 192.168.18.11 unavailable
3.准备用于节点替换的机器
1).新机器安装和原节点机器的操作系统相同,ip地址设置相同
将原节点关闭,然后将替换节点的ip地址改为被替换节点ip,删除原ssh信任关系
2).符合集群的安装要求,如:关闭防火墙,关闭selinux等
4.查看集群各项状态
CLUSTER STATE: ACTIVE
VIRTUAL CLUSTER MODE: NORMAL
节点状态为unavailable
5.删除event
6.replace.py对节点进行替换安装
[gbase@gbaseman gcinstall]$ python replace.py --help
Usage: replace.py [options]
Options:
-h, --help show this help message and exit
-a do not prompt the user for confirmation
--host=HOSTLIST replaced nodes' ip splitting by comma 指定要替换的节点ip,用','隔离
--rootPwd root 用户的密码, 要求所有节点 root 密码一致。
--root_pwd_file 该参数支持 root 用户在多节点不同密码方式, 与参数rootPwd 不能同时使用, 否则报错。
--type=NODETYPE replaced nodes' type,value:coor,data 替换节点的类型
--freenode=FREENODE cluster freenodes' ip splitting by comma
--dbaUser=DBAUSER dba user
--dbaUserPwd=DBAPWD dba user password
--generalDBUser=GENDBUSER
cluster database user
--generalDBPwd=GENDBPWD
cluster database user password
--overwrite new and complete overwrite 强制覆盖,参数可选,不使用此参数需要提前停掉集群服务
--sync_coordi_metadata_timeout=SYNC_COORDI_METADATA_TIMEOUT 设置coor节点替换的超时时间,默认为15
sync coordinators' metadata timeout,default 15mins
--parallel_pack=PARALLEL_PACK 节点替换并行打包开关