GBASE南大通用-GBase 8a集群节点替换
1简介
当集群规模不断扩大时,集群的节点损坏会成为一个比较常见的现象,同
时随着数据量的增大,单个节点的计算能力和存储能力也会成为瓶颈。这两种
情况下都需要对集群节点进行替换升级,使集群能够正常工作。
2功能概述
GBASE南大通用-GBase8a数据库节点替换针对节点机器彻底损坏的情况,通过节点替换流程来恢复数据,
最终达到替换损坏节点的目的。新旧机器使用相同的 IP。
节点替换过程中,集群状态必须是非 LOCK 状态。
在节点替换过程中,替换节点的状态会发生变化。
节点故障状态变更顺序为:
OFFLINE -> UNAVAILABLE -> REPLACE -> ONLINE
升级时状态变化过程如下:
ONLINE -> UNAVAILABLE -> REPLACE -> ONLINE
替换开始前:节点损坏,节点的状态为 OFFLINE,用户必须设置节点
状态为 UNAVAILABLE;
替换开始后:节点状态转换为 REPLACE
替换成功后:节点状态转换为 ONLINE
替换执行失败:节点状态回滚为 UNAVAILABLE
在节点替换过程中,集群模式会发生变化,模式变更顺序为:
NORMAL -> READONLY -> NORMALGBase 8a MPP Cluster 管理员手册
同步表结构前:集群模式为 NORMAL,集群可以正常操作
同步表结构期间:集群模式为 READONLY,只允许进行查询操作,不允
许任何 dml、ddl 以及加载操作,此时进行数据表结构的同步操作,
对用户数据表设置全同步标志。
同步完成后:集群模式为 NORMAL,集群可以正常操作
替换完成后,集群可以正常进行操作。
3注意事项
节点替换过程需要注意以下问题:
节点状态转换为 UNAVAILABLE 后,只有在节点替换成功的时候,节点
状态才能转换为 ONLINE。用户不能对 corosync 中的节点状态持久化
文件进行手工操作,如果手工修改持久化文件中的节点状态
(UNAVAILABLE -> ONLINE),会导致数据丢失。
设置节点为 UNAVAILABLE 时,若集群中有大量 ddl event,dml event
或 dmlstorage event 时,程序需要检查所有的 event,判断被设置状
态的节点的备份节点是否正常,有大量 event 时,该过程可能需要较
长时间。
开始节点替换时,若被替换节点有大量 ddl event,dml event 或
dmlstorage event 时,节点替换程序要将被替换节点的所有 event 删
除,该过程可能会需要较长时间。
损坏的节点上有 nocopy 表,数据无法恢复,必须用户手工进行恢
复。
损坏的节点上存在不通过集群命令创建的数据,这些数据无法恢复,
必须用户手工进行恢复。
在节点替换过程中,如果出现 replace.py 命令被强杀或者执行
replace.py 命令的机器掉电等现象,可能会导致集群状态处于GBase 8a MPP Cluster 数据抽取及加载工具参考手册
READONLY状态无法自行恢复正常。此时可以使用gcadmin switchmode
normal 恢复集群状态然后继续使用集群。或者再一次执行
replace.py 命令替换节点,节点替换成功后集群状态就恢复正常。
节点替换时,需保证 gbase 用户拥有 GCWare 配置文件
(/etc/corosync/corosync.conf)的访问权限,即该文件的权限属性
应为 644。
用户在执行节点替换前,必须保证执行替换的用户拥有安装程序目录
的读写权限,即可以在该目录下创建文件和子目录。
执行节点替换时,若出现宕机或掉电等情况,将导致替换失败,替换
节点和源节点上可能会有残留数据。此时需要再次执行节点替换,进
行残留数据清理,完成清理后方可重新进行节点替换操作。
4节点替换的步骤
4.1步骤一:检查网络
在进行节点替换操作前,首先要保证集群内的网络通畅。如果遇到网络异
常的情况,可以请网络管理员协助排查异常情况,恢复网络通畅。
4.2步骤二:gcadmin 设置要替换节点的状态
我们在操作系统的 gbase 用户(demo.options 文件中 dbauser 参数指定的
用户)下运行 gcadmin setnodestate 命令设置要替换的节点状态为
UNAVAILABLE。
注:gcadmin 设置要替换节点的状态,现在只支持单个节点设置。
4.3步骤三:准备用于节点替换的新机器 GBase 8a MPP Cluster 管理员手册
新机器安装和原节点机器相同的操作系统,使用相同的 ip,并符合集群
安装的要求:关闭防火墙、关闭 selinux。
4.4步骤四:gcadmin 查看集群各项状态
选择集群中一个 coordinator 节点,切换到 gbase 用户(demo.options 文
件中 dbauser 参数指定的用户),使用 gcadmin 命令来查看集群的各项状态。
集群的状态为如下时,表示正常:
CLUSTER STATE: ACTIVED
CLUSTER MODE: NORMAL
===============================================================
| GBASE COORDINATOR CLUSTER INFORMATION |
===============================================================
| NodeName | IpAddress |gcware |gcluster |DataState |
---------------------------------------------------------------
| coordinator1 | 192.168.153.126 | UNAVAILABLE | | |
===========================================================
| GBASE DATA CLUSTER INFORMATION |
===========================================================
|NodeName | IpAddress |gnode |syncserver |DataState |
-----------------------------------------------------------
| node1 | 192.168.153.126 | UNAVAILABLE | | |
如果 CLUSTER STATE: LOCKED:节点替换的后续步骤不能进行,必须解决
问题使集群的状态变为 ACTIVED,才可以继续。
4.5步骤五:replace.py 对节点进行替换安装
选择集群中一个 coordinator 节点,切换到 gbase 用户(demo.options 文
件中 dbauser 参数指定的用户),使用 replace.py 命令对要替换的节点进行替
换安装。GBase 8a MPP Cluster 数据抽取及加载工具参考手册
命令格式:
replace.py [options]
参数说明:
--host 指定将要替换的节点 ip 列表,用逗号分隔
--rootPwd root 用户的密码, 要求所有节点 root 密码一致。
--root_pwd_file 该参数支持 root 用户在多节点不同密码方式,与参数
rootPwd 不能同时使用,否则报错。
--dbaRootPwd 要替换节点的数据库 root 用户密码如果不为空,需要传入
该数据库 root 用户密码。目前密码中不支持单引号,其它特殊符号用单引号
包围。
--overwrite 强制覆盖安装,这个参数可选。
--sync_coordi_metadata_timeout 设置 coordinator 节点替换的超时时
间。默认值为 15,最小值为 1。
--parallel_pack coordinator节点替换并行打包开关。默认值为 0,最小
值为 1。
--retry_times节点替换时同步系统表retry次数。默认值为 3,最小值为
1,最大值为 2147483647。
--license_file 针对带有 License 认证的集群,在执行节点替换的时候,
需要提前生成 license文件,通过--license_file 参数将文件传入,在集群安
装成功后,集群可正常使用。
--passwordInputMode,可选,用于指定密码获取的方式,通过不同的参数
实现不同的获取方式。若指定该参数,则 demo.options 中的密码不必再修改。
默认值: file
取值范围:[file,pwdsame,pwddiff]GBase 8a MPP Cluster 管理员手册
1) file : 表示从文件获取,和原有的方式一致,该方式下,文件中的密
码是明文的;
2) pwdsame:表示从终端由用户输入密码,并且所有节点的密码一致情况
下使用该参数,对于不同用户密码只输入一次,适用于所有节点都用
这个密码;
3) pwddiff: 表示从终端由用户输入密码,并且节点间的密码不一致情
况下使用该参数,对于不同用户密码每个节点分别输入一次,适用于
不同节点使用不同的密码;
运行前提:
替换节点使用原有节点的 IP。
当用户没有使用强制安装选项,替换节点上不能存在集群软件。删除集群
软件时必须先停止相应节点的集群服务。集群服务包括:
1. coordinator 节点:corosync、gclusterd、gcrecover、gcmonit、
gcmmonit;
2. dataserver 节点:gbased、gc_sync_server;
用户使用强制安装选项时,用户必须保证替换节点上的有用的信息已经妥
善备份,否则可能导致数据无法恢复。
在已有的 coordinator 节点上使用 dba 用户执行。
如果替换 coordinator 集群节点,要求总数不可以超过 coordinator 集群
总数的一半,也就是保证集群不能是 LOCK 状态。
如果是 data 集群,不可以同时替换主备分片的节点,保证分片必须有可
用的备份源数据。