📋本文转自征文活动《绽放吧!GaussDB(DWS)云原生数仓》投稿
✍🏻作者:@不想吃土豆
GaussDB(DWS)的快照与容灾都是从管控面下发任务到后端内核执行,大体流程如下:
DWS管控面/FI管控面
⬇️
GaussRoach.py/SyncDataToStby.py
⬇️
gs_roach内核
后端备份排查思路参考(👇🏻长按扫码查看):
有些时候问题并不是发生在roach侧,而是管控面任务调度异常,可能备份任务并未成功下发到后台,本文提供管控面快照/容灾管理的定位方法。
管控面rms数据库登录参考:👇🏻《DWS登录指南》
1.1 登录mysql数据库,查看集群id
select name,id from rds_cluster where name='集群名称';
1.2 根据集群id找到报错快照的jobid
select status,id,name,backJobId from rds_cluster_backup where clusterId='c22a5d15-1d60-4d15-a7a3-7846ea99b394' order by name;
1.3 根据jobid查看具体的快照是在哪一步骤报错
select * from taskmgr_task where job_id='2c9080298b6480a0018b6cdf8881049f' ORDER BY begin_time desc;
1.4 根据jobid找到对应的pod节点 去查看controller日志
select server_hostname,created_at,scheduled_at from taskmgr_job where job_id='2c9080298b6480a0018b6cdf8881049f' ORDER BY begin_time desc;
1.5 第四步中可查到报错pod
登录报错 pod 根据 jobid 查看ossres-dws.log
1.6 根据ossres-dws.log中报错的 instanceId
登录节点查看沙箱外日志 home/Ruby/log/cloud-dws-deploy.log
(若cloud-dws-deploy.log日志为空,考虑日志已归档,查看归档目录/home/Ruby/archivelog,解压对应时间压缩包进行查看)
2.1 登录mysql数据库,查看集群id
通过rds_disaster_recovery_cluster_info这张表,使用容灾ID查询到容灾的集群,拿到主集群的ID;
容灾管理-->点击容灾名称,进入详情后获取容灾ID
select role,clusterId,clusterName from rds_disaster_recovery_cluster_info where disasterRecoveryId='e5f580a8-fbc2-423c-871b-c96b9f962252';
2.2 根据主集群ID查询job调度情况
select job_id, job_def_name, execution_status, begin_time, server_hostname from taskmgr_job where request like '%f002086c-e653-4527-b0d5-09a184a7c5ed%' order by begin_time desc, job_id desc;
2.3 根据jobid查看具体的job执行结果
select * from taskmgr_task where job_id='2c9080028b5bea07018b5ce2c1c001f1' ORDER BY task_index;
2.4 管控面容灾日志路径
/home/Ruby/log/disaster_recovery.log
tips:管控面如何确认哪个节点为主节点
select id,name,status,privateIp,internalIp,manageIp,datastoreVersion,guestAgentVersion,instType from rds_instance where clusterId='492c94ed-60c2-487e-9ec6-69af30532ff3';
查询得到的第一个cn节点为主节点。

往期精彩回顾
戳阅读原文,直达GaussDB(DWS)开发者平台