热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

摘要:本文通过介绍双集群的架构、log结构、分析步骤来介绍双集群容灾的问题分析方法。本文分享自华为云社区《从原理到实践,手把手带你轻松get数仓双集群容灾》,原文作者:Puyol 

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


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


双集群原理

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

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


架构简介


1. 逻辑架构示例

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

https://img2.php1.cn/3cdc5/3798/61b/c6dc594a02c8555d.png


2. 部署架构

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


https://img2.php1.cn/3cdc5/3798/61b/e3c488a53afccb9e.png

备份侧调用关系: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。


https://img2.php1.cn/3cdc5/3798/61b/069f3ddd011bb574.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级数仓黑科技,后台还可获取众多学习资料哦~

 关键词:站长资讯中心,站长资讯,站长新闻



推荐阅读
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Elasticsearch1Elasticsearch入门1.1Elasticsearch术语1.1.16.0以前的Elasticsearch术语1.1.26.0以后的Elasti ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • 本文介绍了MVP架构模式及其在国庆技术博客中的应用。MVP架构模式是一种演变自MVC架构的新模式,其中View和Model之间的通信通过Presenter进行。相比MVC架构,MVP架构将交互逻辑放在Presenter内部,而View直接从Model中读取数据而不是通过Controller。本文还探讨了MVP架构在国庆技术博客中的具体应用。 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 本文讨论了在使用Git进行版本控制时,如何提供类似CVS中自动增加版本号的功能。作者介绍了Git中的其他版本表示方式,如git describe命令,并提供了使用这些表示方式来确定文件更新情况的示例。此外,文章还介绍了启用$Id:$功能的方法,并讨论了一些开发者在使用Git时的需求和使用场景。 ... [详细]
  • 精讲代理设计模式
    代理设计模式为其他对象提供一种代理以控制对这个对象的访问。代理模式实现原理代理模式主要包含三个角色,即抽象主题角色(Subject)、委托类角色(被代理角色ÿ ... [详细]
  • 初识java关于JDK、JRE、JVM 了解一下 ... [详细]
  • 【技术分享】一个 ELF 蠕虫分析
    【技术分享】一个 ELF 蠕虫分析 ... [详细]
  • pc电脑如何投屏到电视?DLNA主要步骤通过DLNA连接,使用WindowsMediaPlayer的流媒体播放举例:电脑和电视机都是连接的 ... [详细]
  • charles3.11.1抓https包
    结论先行:用的是安卓测试机,没加固之前的生产环境的安装包,可以抓到https请求加固之后的包【也就是要上应用市场的包】,抓不到https请求电脑上的操作:1.安装证书【电脑上安装了 ... [详细]
author-avatar
lyglpp
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有