共计 1822 个字符,预计需要花费 5 分钟才能阅读完成。
摘要: 本文通过介绍双集群的架构、log 构造、剖析步骤来介绍双集群容灾的问题分析方法。
本文分享自华为云社区《从原理到实际,手把手带你轻松 get 数仓双集群容灾》,原文作者:Puyol。
双集群原理
GaussDB(DWS) 的容灾计划是一个双集群同步的架构,即两套独立集群定期同步数据以达到容这的目标。目前数据同步的形式是通过 roach(GaussDB(DWS) 备份、复原工具 ) 定期做增量备份和复原同步。双集群框架是一个简单的分布式系统,在呈现问题时,如何疾速精确的定位问题及复原服务是一个十分紧迫的问题,这个问题在云上会更突出。本文通过介绍双集群的架构、log 构造、剖析步骤来介绍双集群容灾的问题分析方法。
首先介绍一下双集群的部署计划原理,从部署架构和重要参数两个方面先介绍一下背景常识,便于更好了解问题剖析的办法。
架构简介
1. 逻辑架构示例
下图是一个同构的双集群部署示意图,主备集群都是 3c3d, 主集群的主结点部署双集群框架脚本,定期进行备份操作,备集群的主结点定期复原备份集。根底数据须要进行一全量备份,之后增量备份。
2. 部署架构
下图是接上图的部署架构,波及双集群同步脚本 (SyncDataToStby.py), 备份程序(GaussRoach.py, gs_roach)三个二进制文件
备份侧调用关系:SyncDataToStby.py -> GaussRoach.py -> gs_roach
复原侧调用关系:SyncDataToStby.py -> GaussRoach.py -> gs_roach
理解调用关系和咱们剖析问题有间接的关系。
SyncDataToStby.py 是整个双集群的调用起始,管制着双集群的失常运行,失常状况下是长驻内存的过程,如果异样退出后,后盾会有 crontab 的来从新拉起双集群脚本: crontab -> SyncDataToStby.py -> GaussRoach.py -> gs_roach
主要参数简介
问题定位
家喻户晓,零碎的各种 log 是咱们理解运行机制,理解问题现场的无力工具,同样双集群的问题剖析也依赖于 log 的剖析,首先认识一下双集群对应的日志:
log 目录构造
由上节的逻辑图及部署图,每个二进制对应的 log 文件如下图所示,对应二进制的信息查找对应的 log。
如上图,双集群的日志也是寄存到 $GAUSSLOG 这个目录,并且有本人独立的目录 roach, 由这个目录同样是备份 / 复原的对应的 log 门路。咱们按调用关系从上到下的角度来介绍
- frame 目录
寄存 SyncDataToStby.py 生成的 log,波及到双集群调度,备份集清理,状态显示,配置文件及命令行参数解析的性能。
- controller 目录
寄存 GaussRoach.py 生成的 log,波及到备份、复原筹备工作一些操作,备份、复原参数解析,备份集群的解决,错误处理等
- agent 目录
寄存 gs_roach 工具 生成的 log,波及到 gs_roach 连贯 gaussdb/gtm/cm 发动备份 / 复原,生成备份集 / 复原备份集等操作。
gs_roach 工具性能:在备份侧实现将 cn/dn/gtm/cm 的数据文件按程序打包成备份文件的性能,并生成备份集元信息文件; 复原侧依据元信息文件将备份集文件解压到对应 cn/dn/gtm/cm 的数据目录中。
定位步骤
- 确定问题在备份侧还是复原侧,查找双集群主结点上 Sync 日志,确定出错的模块
- 确定出错的档次,因为双集群执行过程是一个上上层调用及时序关系的形式,具体程序参考:
crontab -> SyncDataToStby.py -> GaussRoach.py -> gs_roach
- 在各个模块都有较具体的日志形容过程,具体问题具体分析,大体有如下几个方面
1)配置出错,用户、环境变量文件
2)备份集群门路权限问题
3)因为集群状态非 Normal 导致备份失败
4)结点故障及备份集损坏导致复原失败
- 后续文章会按模块及谬误类型来详细描述问题定位步骤
小结
GaussDB(DWS) 的双集群容灾性能是一个独立的简单的分布式系统,波及到三层工具的应用,因而在问题定位时会造成一些困惑。定位的办法须要先去了解架构,运行机制,而后依据时序关系去对应结点剖析日志。后续会从各个模块的角度介绍一些典型的问题及修复办法。
想理解 GuassDB(DWS) 更多信息,欢送微信搜寻“GaussDB DWS”关注微信公众号,和您分享最新最全的 PB 级数仓黑科技,后盾还可获取泛滥学习材料哦~
点击关注,第一工夫理解华为云陈腐技术~