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

举报
Puyol 发表于 2021/05/02 18:49:24 2021/05/02
【摘要】 GaussDB(DWS) 的容灾方案是一个双集群同步的架构,即两套独立集群定期同步数据以达到容灾的目的。目前数据同步的方式是通过roach(GaussDB(DWS)备份、恢复工具)定期做增量备份和恢复同步。本文通过介绍双集群的架构、log结构、典型问题分析来介绍双集群容灾的问题分析方法。

双集群原理

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

主要参数简介

参数名 作用 备注
username 执行双集群脚本的OS用户,设置成GaussDB(DWS)集群相同的OS用户
primary-env 主集群的环境变量文件
standby-env 备集群的环境变量文件
full-backup-exec-time-interval 全量备份的间隔时间,当前默认N/A,只进行一次全量备份,分钟为单位。
backup-exec-time-interval 备份间隔时间,增量备份的间隔时间,分钟为单位。
primary-host-ip 主集群主结点的ip
compression-level=1
compression-type=2
压缩算法
primary-media-destination
primary-metadata-destination
主集群的备份目录
restore-interval 恢复的时间间隔,分钟为单位
restore-host-ip 备集群的主结点ip
restore-media-destination
restore-metadata-destination
备集群备份目录

问题定位

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

log 目录结构

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

如上图,双集群的日志也是存放到$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级数仓黑科技,后台还可获取众多学习资料哦~

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。