云数据库 GaussDB 故障案例库-3(2)
接前半篇内容:云数据库 GaussDB 故障案例库-3(1)
11、DN故障-启动失败
- 故障现象
启动集群时或者单独启动DN时,DN组件启动失败。
- 故障原因
可能原因有以下:
l 连接认证配置错误。
l DN目录权限错误或者磁盘故障。
l DN组件参数配置错误。
- 处理方法
步骤 1 登录启动失败的DN节点,执行以下命令,查询集群状态。
cm_ctl query -Cvd

如上图,DN组件启动失败,查询状态为Down。
步骤 2 查看故障DN节点的cm_agent日志,打开对应时间点的cm_agent-***.log日志。
如对应时间点的日志已被压缩,则查看对应的cm_agent-****.log.gz日志,搜索关键词StartAndStop。
cd $GAUSSLOG/cm/cm_agent
vim cm_agent-*.log

如上图,磁盘故障,无法向DN目录写数据。
l 若报错处有g_dnDiskDamage=1,表明磁盘故障,DN无法启动,可排查DN数据目录磁盘是否正常,目录是否存在等,是否的正常读写等。
l 若以上都不涉及,则继续步骤3。
说明:
1.4(V005R001C20)版本及以前版本,搜索dn_disk_damage=1关键词,1.4(V005R001C20)以后版本搜索g_dnDiskDamage=1关键词。
步骤 3 查看当前目录下的system_call-current.log日志,搜索FATAL关键词。
l 如报错详细信息为:Permissions should be u=rwx(0700),表明数据目录权限错误,可进入DN数据目录,修改权限为700。
l 若以上都不涉及,则继续步骤4。

如上图,是由于dn_6008的目录权限错误,导致启动失败。
修改权限命令为:chmod -R 700 /opt/gaussdb/engine/data/dn_6008
/opt/gaussdb/engine/data/dn_6008为启动失败DN的数据目录。
须知:修改数据目录权限为高危操作,执行前需联系华为技术支持确认。
步骤 4 继续查看当前目录下的system_call-current.log日志,搜索FATAL关键词。
l 如报错详细信息为:outside the valid range for parameter,则表明配置文件中的参数设置错误,可根据报错的参数,修改为正确的取值范围。
l 若以上都不涉及,则继续步骤5。

如上图,是由于dn_6008的recovery_time_target参数配置错误,导致启动失败。
gs_guc reload -Z datanode -N all -I all -c "recovery_time_target=60"
须知:
l recovery_time_target参数为示例,实际需根据报错信息中的参数修改。
l 修改参数为高危操作,执行前需联系华为技术支持确认。
l HCS场景,执行gs_guc命令需要进入沙箱。
步骤 5 继续查看cm_agent-***.log以及system_call-current.log日志,获取错误信息,联系华为技术支持。
----结束
12、DN故障-多数派故障
- 故障现象
分片内,正常状态DN数量占分片内DN总数的一半以下。
- 故障原因
可能原因有以下:
DN故障。
- 处理方法
步骤 1 登录故障DN节点,切换Ruby用户,查询集群状态。
l 查询集群状态,分片内无主,不满足多数派。
l 查询集群状态,分片有主,分片内主DN不满足至少一主一备,不满足多数派。
su - Ruby
cm_ctl query -Cvd
如上图,dn_6001和dn_6003故障,DN分片内不满足多数派。
步骤 2 当分片内无主,需联系华为技术排查无主原因,若分片内有主,跳过此步骤。
步骤 3 分片内有主DN,需连接主DN节点,同时gsql连接主DN,确认是否自动降副本。
1. 查看集群信息。
su - Ruby
cm_ctl query -Cvdp

如上图,dn_6002为主DN,端口号为40000。
2. gsql连接dn_6002。
gsql -d postgres -p 40000 -U user -W password -r
3. 查看参数。
show synchronous_standby_names;

如上图,synchronous_standby_names参数值为ANY 1(dn_6001,dn_6003)。
步骤 4 根据以下场景,确认是否执行降副本。
1. DN分片一主三备,分片内synchronous_standby_names的值在DN正常状态应为ANY 2(dn_instanceId1, dn_instanceId2, dn_instanceId3)或者ANY 2(AZ1, AZ2),降副本后值为ANY 1(dn_instanceId1, dn_instanceId2)或者ANY 1(AZ1)或者ANY 1(AZ2)。
2. 如步骤3中的值不满足以上,则说明集群未执行自动降副本,需要手动执行降副本,命令如下:
gs_guc reload -Z datanode -D datapath -c "= 'synchronous_standby_names = ANY 1(AZ_Name)'"
说明:
l HCS场景,执行gs_guc命令需要进入沙箱。
l datapath为当前DN分片的数据目录,可通过cm_ctl query -Cvd查询获取。
l 当前命令需要在分片内的主DN执行。
须知:
降副本为高危操作,执行前需联系华为技术支持确认。分片内DN总数非一主三备,不可执行此操作。
步骤 5 DN故障原因,参考7 DN故障-状态Down或者8 DN故障-状态Unknown或者10 DN故障-状态Need repair排查。
步骤 6 当分片DN恢复正常状态以后,需要执行升副本。
gs_guc reload -Z datanode -D datapath -c "= 'synchronous_standby_names = 'ANY 2(AZ_Name, AZ_Name)'"
说明:
l HCS场景,执行gs_guc命令需要进入沙箱。
l datapath为当前DN分片的数据目录,可通过cm_ctl query -Cvd查询获取。
l 当前命令需要在分片内的主DN执行。
须知:
升副本为高危操作,执行前需联系华为技术支持确认。分片内DN总数非一主三备,不可执行此操作。
步骤 7 若以上不涉及,联系华为技术支持。
----结束
13、容灾搭建流程异常
- 故障现象
执行容灾搭建流程出现异常,如:
l 容灾搭建流程返回失败。
l 容灾搭建流程超时。
l 容灾搭建流程超出预期时间仍未结束。
- 故障原因
可能原因有以下:
l 主备集群间网络异常,容灾使用的IP或PORT未开放。
l 跨集群获取全量数据时因容灾用户信息异常,导致不断尝试连接无法完成容灾搭建。
l 在主集群数据量较大,或者异地网络带宽较小时,搭建流程设置超时时间不合理,可能会出现灾备集群未完成数据拷贝,主集群就已经超时退出容灾搭建流程的情况。
- 处理方法
步骤 1 查看OM日志。
登录到容灾搭建相关命令在灾备集群执行节点,执行如下命令进入OM日志目录:
cd $GAUSSLOG/om/
选择相关时间段gs_streaming_disaster_recovery-*.log日志,查看日志中对应时间点关键词:[prepare_disaster_info][streaming_disaster_recovery_start]。
容灾搭建所处流程判断:
1. prepare_disaster_info流程。
2. streaming_disaster_recovery_start流程。
步骤 2 不同流程中常见异常。
l prepare_disaster_info流程中常见异常:
gs_ctl build -D xxx -M standby -b copy_secure_files
执行上述命令上报无法连接。
面对这类异常,请针对报错信息中显示的对端IP、PORT信息使用ping命令检测IP,curl命令检查PORT是否能正常访问。如果无法正常访问,需要先处理网络异常。
l streaming_disaster_recovery_start流程中常见异常:
gs_ctl build -D xxx -M hadr_main_standby -r 7200 -q -Q force_copy_from_local -U <容灾用户名>
执行上述命令上报容灾用户信息非法,无法接入主集群。
面对这类异常,有以下处理方法:
− 请登录主集群数据库,使用select * from pg_user或者\du命令查询当前数据库用户信息,观察是否有容灾用户存在。
− 请登录主集群数据库,使用show default_transaction_read_only检查主集群是否处于只读状态,导致容灾用户未能创建。
步骤 3 容灾搭建出现主集群上报超时打印:
Result exception error : Failed to do check main standby connection. Because Waiting timeout: XXs
面对这类异常:
l 若灾备集群处于搭建过程中或者搭建已完成,可直接重入主集群容灾搭建流程,主集群会重新进入等待灾备连接状态。若能重新设置超时参数,可根据主集群数据量大小与异地网络带宽,重新估算超时时间后再执行重入。
l 若灾备集群搭建过程也失败了,需要先针对灾备集群进行故障处理,再重入集群容灾搭建流程。
----结束
14、灾备升主failover流程异常
- 故障现象
灾备集群有故障节点未参与灾备集群升主。
- 故障原因
因服务器宕机,网络中断等原因导致节点脱离灾备集群,没有参与灾备集群升主。
- 处理方法
步骤 1 故障节点经过硬件维修、上电等操作,重新加入集群。
注意:该节点加入集群后,集群状态有可能显示为Normal,该节点上实例状态也有可能显示Normal,但该节点上实例的部分配置参数不正确,仍需要完成如下修复流程。
步骤 2 接入任意节点,修改cm_server和cm_agent中关于集群灾备模式的参数,切回主集群配置(如果是沙箱模式,需要/usr/sbin/chroot /var/chroot进入沙箱,然后加载环境变量)。
gs_guc set -Z cmserver -N all -I all -c "backup_open = 0"
gs_guc set -Z cmagent -N all -I all -c "agent_backup_open=0"
gs_guc set -Z cmagent -N all -I all -c "disaster_recovery_type= 0"
步骤 3 接入故障节点,查询cm_server和cm_agent的进程ID,使用kill -9命令结束进程,进程会被om_monitor重启,完成cm_server和cm_agent参数修改的生效。
ps -ef | grep cm_agent ; ps -ef | grep cm_server
步骤 4 使用cm_ctl query -Cvd获取故障节点的nodeId和对应未参与升主的实例(coordinator和datanode)路径。
步骤 5 使用cm_ctl stop -n NODEID -D DATADIR停掉该节点上未参与升主的实例。
步骤 6 通过om_agent的https REST API来操控集群实现节点修复。修复步骤详见《工具参考》中“服务端工具 > gs_replace”章节。
----结束
15、计划内倒换switchover流程异常
- 故障现象
l 计划内switchover中主集群执行命令返回如下错误,提示主集群产生一致性点失败。
Result exception error : Failed to generate switchover barrier before switchover
l 计划内switchover中主集群执行命令返回如下错误,提示主集群业务截断出现失败。
Result exception error : Failed to truncate service before switchover
l 计划内switchover中灾备集群执行命令返回如下错误,提示灾备集群核查数据一致性点出现超时。
Result exception error : Failed to do check switchover_barrier on all main standby dn and cn. Because check timeout: XXs
- 故障原因
可能原因有以下:
l 在主集群接收到计划内switchover命令,主集群降为灾备集群前会产生一致性点switchover barrier。这是执行switchover的前提,用于保证主备集群所有CN节点和所有DN分片的日志停止在一致性点。由于主集群内网络抖动等原因导致主集群内产生switchover barrier失败将放弃本次计划内switchover。
l 在主集群接收到计划内switchover命令,主集群降为灾备集群前会产生一致性点switchover barrier,并进行业务截断终止日志写入操作。这是执行switchover的前提,用于保证主备集群所有CN节点和所有DN分片的日志停止在一致性点。由于主集群内CN/DN实例异常,异地网络异常,灾备集群不回响应等原因导致主集群业务截断失败将放弃本次计划内switchover。
l 在灾备集群接收到计划内switchover命令,灾备集群升为主集群前会在所有CN和首备DN上查询是否收到一致性点switchover barrier。这是执行swichover的前提,用于保证主备集群所有CN节点和所有DN分片的日志停止在一致性点。由于异地网络异常等原因,灾备集群在超时时间内无法获得switchover barrier将放弃执行本次计划内switchover。
- 处理方法
步骤 1 主集群执行switchover主降备命令,灾备集群执行switchover灾备升主命令超时或者失败会回滚为倒换前状态,计划内倒换switchover可在主集群和灾备集群重新执行。
步骤 2 若多次执行switchover均出现失败,需进一步分析流式容灾相关日志文件。
----结束
16、容灾性能指标异常
- 故障现象
通过《管理员指南》中“两地三中心跨Region容灾 > 基于流式复制的异地容灾解决方案 > 基本操作 > 查询主备集群容灾状态”章节的操作描述,可以获得集群级RPO数值,在业务低谷期该数值持续增长,说明容灾出现了异常。
l 灾备集群CN显示Need repair(Disconnected)。
l 灾备集群节点CM_AGENT故障。该节点上CN实例状态显示为Deleted;DN、GTM实例状态显示为Unknown;部分首备显示Main Standby Need repair(Connecting)。
- 故障原因
灾备集群CN显示Need repair现象原因可能有以下:
l 灾备集群CN对应的主集群所有具有容灾关系的CN状态异常。
l 灾备集群CN与对应主集群所有具有容灾关系的CN之间网络异常。
灾备集群节点CM_AGENT故障原因可能有以下:
l 节点CM_AGENT发生故障。
l 该节点上CN、DN、GTM状态无法上报cm_server,CN实例发生剔除,DN、GTM实例显示为Unknown。
l 若该节点上存在首备实例(Main Standby),则会触发首备切换。由于原首备实例并无异常,并与主集群该分片主DN存在正常流复制关系,而主集群该分片主DN只允许一个首备的连接,导致新首备无法连接到主集群分片主DN,实例状态显示为Main Standby Need repair(Connecting)。
- 处理方法
灾备集群CN显示Need repair现象处理:
步骤 1 观察流式容灾CN断连告警“ALM_AI_StreamingDisasterRecoveryCnDisconnected”(告警描述参见《告警参考》)的details信息,可了解灾备集群CN对应的主集群所有具有容灾关系的CN信息。核查主集群对应CN是否存在故障,灾备集群CN对应的主集群所有具有容灾关系的CN之间网络是否存在异常并进行排除。
步骤 2 修复主集群所有具有容灾关系的CN,灾备集群CN会自行重连。故障排除后RPO可恢复。
步骤 3 灾备集群CN对应的主集群所有具有容灾关系的CN都无法及时修复,可主动调用
步骤 4 cm_ctl stop -n NODEID -D DATADIR命令停掉灾备集群的相关CN实例,RPO可恢复。等主集群具有容灾关系的CN被修复后,可使用cm_ctl start -n NODEID -D DATADIR重启灾备集群的CN。
说明:
为避免网络闪断导致灾备集群CN对应的主集群CN频繁发生切换(切换会导致数据的重新拷贝),容灾CN优先尝试连接上一次成功连接的主集群CN 3000次,在这之后会在主集群所有具有容灾关系的CN之间进行轮询。在尝试连接的这个阶段可能会出现短暂的RPO增长,为正常现象。
----结束
灾备集群节点CM_AGENT故障处理:
步骤 1 观察灾备集群的cm_agent告警信息“ALM_AI_AbnormalCMSProcess”,并尝试修复发生故障的cm_agent(告警描述和修复方法参见《告警参考》)。故障排除后RPO可恢复。
步骤 2 如果故障的cm_agent短时间内无法修复,执行gs_ctl stop -D DATADIR命令或者kill命令手动停止该节点上的DN进程,RPO可恢复。
----结束
17、容灾期间,节点替换后刷新集群信息
- 目标
容灾期间,节点替换后刷新集群信息。
- 解决方案
步骤 1 使用浏览器,登录节点替换实例所在Region的ManageOne运维面。
l 登录地址:https://ManageOne运维面主页的访问地址:31943。例如,https://oc.type.com:31943。
l 默认帐号:admin,默认密码可在《华为云Stack 帐户一览表》中“A类Portal”页签,产品名称为“ManageOne”,帐户登录界面名称为“ManageOne运维面”获取。
为了您的帐户安全,请定期修改密码。
步骤 2 在页面的“常用链接”导航栏中,单击“Service OM”,选择区域后进入Service OM界面;
步骤 3 单击节点替换后的实例,进入实例详情页面,单击上方的“导出容灾配置”,会下载一个csv文件。
须知:
l 确保节点替换结束,实例状态正常
l 下载后的csv文件,要另存为xlsx文件,并确保文件名中没有特殊符号。

步骤 4 打开csv文件,选择另存为xlsx文件,并确保文件名中没有空格及特殊符号(除了下划线)。
步骤 5 登录对端Region的ManageOne运维面,并进入Service OM界面。
步骤 6 点击对应有容灾关系的实例,进入实例详情页面,单击上方的“导入容灾配置”,选择步骤4中另存的文件。

步骤 7 单击“确认”,开始导入。

----结束
18、容灾期间,进行限制操作
- 目标
搭建容灾关系后,主实例无法进行节点扩容、AZ强启加回、就地升级和升级自动提交等操作,需要断开容灾关系后,再对主实例进行相关操作。
- 解决方案
步骤 1 登录主实例的管理控制台。
步骤 2 单击左侧导航栏的“容灾管理”,在容灾任务的“操作”列单击“结束”。
步骤 3 在弹出的确认框中勾选“确认结束任务”,单击“是”,结束灾备任务。
如图所示,容灾关系已经结束。

步骤 4 容灾关系结束后,对主备实例进行相关操作。
节点扩容:需要分别对主备实例进行扩容,且扩容后,主备实例分片数需要相同。
AZ强启与加回:无需对备实例进行操作。
就地升级和升级自动提交:主备实例升级后的大版本需要保持一致。
步骤 5 操作完成后,重建容灾关系。
1. 登录主Region所在的Console。
2. 单击左侧导航栏的“容灾管理”,在页面右上方单击“创建容灾任务”。
3. 填写表18-1中的参数,勾选确认信息。
|
参数 |
说明 |
|
灾备类型 |
灾备的方式。 该版本仅支持流式容灾,即“stream”。 |
|
主实例 |
需要容灾的实例,即容灾主实例。 须知 仅支持选择版本为2.0及以上,状态正常,且副本数大于2的实例。 |
|
灾备区域 |
灾备实例所在的区域。 |
|
灾备实例 |
作为灾备的实例。作为灾备的实例中所有数据库都会被清理后根据容灾实例重新建立,请确认无误后再选择。 须知 选灾备实例需与主实例具有相同的大版本、一致性类型、拓扑结构,且实例状态正常,无正在进行中的操作。目前不限制实例的存储空间,但如果选择的实例小于主实例存储空间,可能会导致灾备任务失败。 |
须知:
仔细阅读并勾选“我已确认创建灾备任务后,所选择的灾备实例上所有数据库都会被清理,再基于主实例重新建立。”
4. 单击“是”开始创建容灾任务,可在“容灾管理”页面查看任务状态。
----结束
19、主CN剔除, 备无法连接,RPO增高处理
- 故障现象
搭建容灾关系后,灾备集群对应CN无法连接,RPO持续增长。
- 故障原因
可能原因有以下:
l 主集群具有容灾关系的CN状态异常。
l 网络异常。
- 处理方法
步骤 1 登录主实例节点。
步骤 2 执行如下命令,导入环境变量
source /home/Ruby/gauss_env_file
步骤 3 执行如下指令,检查主集群状态。
cm_ctl query -Cvid

步骤 4 登录灾备集群节点。
步骤 5 执行如下命令,导入环境变量
source /home/Ruby/gauss_env_file
步骤 6 执行如下指令,检查灾备集群状态。
cm_ctl query -Cvid

如图所示,CN状态为“disconnected”的即为需要停止的CN节点。
步骤 7 执行如下命令,停止灾备实例相关CN节点。
cm_ctl stop -n NODEID -D DATADIR
NODEID需要替换为状态为“disconnected”的CN ID,DATADIR需要替换为CN节点的目录。
停止灾备实例CN后RPO可恢复。
步骤 8 等主实例具有容灾关系的CN修复后,可执行如下命令重启灾备实例对应的CN。
cm_ctl start -n NODEID -D DATADIR
NODEID需要替换为已经停止的CN ID,DATADIR需要替换为CN节点的目录。
----结束
20、创建容灾、主从切换大数据场景等待超时
- 故障现象
创建容灾、主从切换大数据场景等待超时。
- 故障原因
可能原因有以下:
异常场景或者大数据量场景导致容灾等待时间超时,操作失败。
- 操作步骤
步骤 1 使用浏览器,登录工作流失败的实例所在Region的ManageOne运维面。
l 登录地址:https://ManageOne运维面主页的访问地址:31943。例如,https://oc.type.com:31943。
l 默认帐号:admin默认密码可在《华为云Stack 帐户一览表》中“A类Portal”页签,产品名称为“ManageOne”,帐户登录界面名称为“ManageOne运维面”获取。
为了您的帐户安全,请定期修改密码。
步骤 2 在页面的“常用链接”导航栏中,单击“Service OM”,选择区域后进入Service OM界面;
步骤 3 选择服务列表-> 数据库->DBS运维管理平台 -> 实例运维 -> 配置管理 -> 系统参数管理。
1.如果是搭建容灾时超时失败,搜索“stream_disaster_waiting_timeout”参数,加大参数值。

2.如果是主从切换超时失败,搜索“stream_switchover_waiting_timeout”参数,加大参数值

步骤 4 修改系统参数后,在任务流失败的上一步进行重试。等待任务进行成功。
1.搭建容灾

2.主从切换

----结束
21、容灾期间,校验备份任务超时处理
- 故障现象
已经下发了容灾搭建或主从切换,工作流因备份任务一直进行中,校验任务等待超时失败。
- 故障原因
可能原因有以下:
搭建容灾和主从切换操作过程中,因实例存在自动触发备份的任务,影响了搭建容灾和主从切换任务的执行,所以加了校验备份的任务,备份任务一直未结束。
- 处理方法
步骤 1 使用浏览器,登录工作流失败的实例所在Region的ManageOne运维面。
l 登录地址:https://ManageOne运维面主页的访问地址:31943。例如,https://oc.type.com:31943。
l 默认帐号:admin。默认密码可在《华为云Stack 帐户一览表》中“A类Portal”页签,产品名称为“ManageOne”,帐户登录界面名称为“ManageOne运维面”获取。
为了您的帐户安全,请定期修改密码。
步骤 2 在页面的“常用链接”导航栏中,单击“Service OM”,选择区域后进入Service OM界面;
步骤 3 选择服务列表-> 数据库->DBS运维管理平台 -> 实例运维 -> 任务管理。
步骤 4 等待备份任务结束后,在任务流失败的校验任务“CheckActionsDisasterTask”重试。
1.搭建容灾

2.主从切换

----结束
22、容灾状态下升级
- 目标
在容灾状态下进行升级操作。
- 解决方案
大版本升级:
步骤 1 主集群先升级,不提交升级。
步骤 2 灾备集群升级。
步骤 3 灾备集群升级完成后,灾备集群先提交升级,主集群后提交升级。
----结束
小版本升级:
步骤 1 主备集群可以同时执行升级命令。
步骤 2 升级完成后,灾备集群先提交升级,主集群再提交。
----结束
须知:l 备集群提交升级前,主集群需要升级完成。
l 备集群先提交,主集群后提交。
l 备集群已提交情况下,主集群不可回滚。
l 主备集群升级过程中,不可发生主备集群的切换。
l 为防止出现脏数据,升级过程中灾备会停止同步主集群数据,会出现容灾状态异常,RPO增长。主备集群完成升级提交后恢复推进,RPO即可恢复。
- 点赞
- 收藏
- 关注作者
评论(0)