替换GaussDB节点
操作场景
数据库集群由多台主机组成,当集群中主机发生故障时,为了使数据库快速地恢复正常,可以使用该功能将发生故障的节点替换为正常节点。当前替换节点只针对故障节点开放,且替换操作与自身互斥。
约束限制
- 节点不是异常状态同时此节点的组件也不是异常状态下,无法执行节点替换。
- 单副本实例不支持节点替换。
- 1主1备形态实例数据和日志合并部署的节点不支持节点替换。
注意事项
-
替换操作需要确保集群处于启动状态,且没有加锁。
节点替换期间,会有分钟级的加锁操作,影响实例DDL操作。
-
登录状态正常。
-
执行如下命令,连接数据库。
gsql -d
postgres
-h
10.0.0.0
-U
root
-p
8000
postgres为需要连接的数据库名称,10.0.0.0分布式为CN的IP地址,集中式版为主DN的IP地址,root为登录数据库的用户名,8000为CN或主DN的端口号。
-
执行如下命令,查看集群是否加锁。
select count(1) from pg_stat_activity where instr( query, 'pgxc_lock_for_backup()') > 0 or instr( query, 'pg_advisory_lock(65535,65535)') > 0;如果值小于等于1,说明锁不存在,可直接执行节点替换。
大于1表示锁存在,需要与用户确认优先级,根据业务情况选择等待用户DDL结束还是手动解锁。
解锁用户锁的命令如下:
gsql -d
database
**-U
**
root
-p
port
-W
password
-X -f $GAUSSHOME/bin/script/gspylib/etc/sql/unlock_cluster.sql
password
需要替换为数据库密码。
-
-
节点替换操作需要确认存在一个正常主机。
-
实例磁盘满状态下不允许进行节点替换。
-
替换的主机上不能含有主DN。
-
集群内下列组件中分别至少存在一个正常运行的:CM Server、CM Agent、CN(仅分布式混合部署)。
-
正常的ETCD个数必须大于ETCD总个数的一半。
-
如果集群中部署有GTM,需保证至少存在一个正常运行的GTM实例(仅分布式集群混合部署)。
-
修复CN过程中,在CN状态未变为Normal前,不能连接该CN执行业务(仅分布式集群混合部署)。
-
节点替换完成后,需要登录告警平台查看是否有该节点的节点状态异常告警,如果有告警需要手动清除。
操作步骤
-
在“实例管理”页面,选择指定的实例,单击实例的名称,进入“基本信息”页面。
当节点列表中节点为异常状态时,可执行节点替换。
图1 节点修复
-
单击“节点修复”,选择“节点替换”。输入“YES”,单击“确定”。
图2 节点替换
-
当节点替换下发成功时,提示替换命令下发成功信息。
更多详情请参考GaussDB 文档中心:doc.hcs.huawei.com/db/zh-cn/ga…