1

从原理到实践,手把手带你轻松get数仓双集群容灾

 3 years ago
source link: https://my.oschina.net/u/4526289/blog/5071272
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

摘要:本文通过介绍双集群的架构、log结构、分析步骤来介绍双集群容灾的问题分析方法。

本文分享自华为云社区《从原理到实践,手把手带你轻松get数仓双集群容灾》,原文作者:Puyol 。

双集群原理

GaussDB(DWS) 的容灾方案是一个双集群同步的架构,即两套独立集群定期同步数据以达到容这的目的。目前数据同步的方式是通过roach(GaussDB(DWS)备份、恢复工具)定期做增量备份和恢复同步。双集群框架是一个复杂的分布式系统,在出现问题时,如何快速准确的定位问题及恢复服务是一个非常紧迫的问题,这个问题在云上会更突出。本文通过介绍双集群的架构、log结构、分析步骤来介绍双集群容灾的问题分析方法。

首先介绍一下双集群的部署方案原理,从部署架构和重要参数两个方面先介绍一下背景知识,便于更好理解问题分析的方法。

架构简介

1. 逻辑架构示例

下图是一个同构的双集群部署示意图,主备集群都是3c3d, 主集群的主结点部署双集群框架脚本,定期进行备份操作,备集群的主结点定期恢复备份集。基础数据需要进行一全量备份,之后增量备份。

https://bbs-img.huaweicloud.com/blogs/img/1619950368443072223.png

2. 部署架构

下图是接上图的部署架构,涉及双集群同步脚本(SyncDataToStby.py), 备份程序(GaussRoach.py, gs_roach)三个二进制文件

https://bbs-img.huaweicloud.com/blogs/img/1621995012445058890.png

备份侧调用关系:SyncDataToStby.py -> GaussRoach.py -> gs_roach

恢复侧调用关系:SyncDataToStby.py -> GaussRoach.py -> gs_roach

了解调用关系和咱们分析问题有直接的关系。

SyncDataToStby.py 是整个双集群的调用起始,控制着双集群的正常运行,正常情况下是长驻内存的进程,如果异常退出后,后台会有crontab的来重新拉起双集群脚本: crontab -> SyncDataToStby.py -> GaussRoach.py -> gs_roach

主要参数简介

up-301947bbb4f5d1cb3fd50681cd74e8d63a8.png

问题定位

众所周知,系统的各种log是我们了解运行机制,了解问题现场的有力工具,同样双集群的问题分析也依赖于log的分析,首先认识一下双集群对应的日志:

log 目录结构

由上节的逻辑图及部署图,每个二进制对应的log文件如下图所示,对应二进制的信息查找对应的log。

https://bbs-img.huaweicloud.com/blogs/img/1621994756422058370.png

如上图,双集群的日志也是存放到$GAUSSLOG这个目录,并且有自己独立的目录 roach, 由这个目录同样是备份/恢复的对应的log路径。我们按调用关系从上到下的角度来介绍

1. frame目录

存放 SyncDataToStby.py 生成的log,涉及到双集群调度,备份集清理,状态显示,配置文件及命令行参数解析的功能。

2. controller目录

存放 GaussRoach.py 生成的log,涉及到备份、恢复准备工作一些操作,备份、恢复参数解析,备份集群的处理,错误处理等

3. agent目录

存放 gs_roach工具 生成的log,涉及到gs_roach 连接gaussdb/gtm/cm发起备份/恢复,生成备份集/恢复备份集等操作。

gs_roach工具功能:在备份侧完成将cn/dn/gtm/cm的数据文件按顺序打包成备份文件的功能,并生成备份集元信息文件; 恢复侧根据元信息文件将备份集文件解压到对应cn/dn/gtm/cm的数据目录中。

定位步骤

1. 确定问题在备份侧还是恢复侧,查找双集群主结点上Sync日志,确定出错的模块

2. 确定出错的层次,由于双集群执行过程是一个上下层调用及时序关系的方式,具体顺序参考:

crontab -> SyncDataToStby.py -> GaussRoach.py -> gs_roach

3. 在各个模块都有较详细的日志描述过程,具体问题具体分析,大体有如下几个方面

1)配置出错,用户、环境变量文件

2)备份集群路径权限问题

3)由于集群状态非Normal导致备份失败

4)结点故障及备份集损坏导致恢复失败

4. 后续文章会按模块及错误类型来详细描述问题定位步骤

小结

GaussDB(DWS)的双集群容灾功能是一个独立的复杂的分布式系统,涉及到三层工具的使用,因此在问题定位时会造成一些困惑。定位的方法需要先去理解架构,运行机制,然后根据时序关系去对应结点分析日志。后续会从各个模块的角度介绍一些典型的问题及修复方法。

 想了解GuassDB(DWS)更多信息,欢迎微信搜索“GaussDB DWS”关注微信公众号,和您分享最新最全的PB级数仓黑科技,后台还可获取众多学习资料哦~

点击关注,第一时间了解华为云新鲜技术~


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK