解密数仓高可用failover流程

摘要:  Gaussdb的HA采用主备从的架构实现数据可靠性。当主DN发生故障时,备DN走failover流程,升级成为新主DN,保证集群不因单DN故障而中断业务。

本文分享自华为云社区《【玩转PB级数仓GaussDB(DWS)】dws高可用之failover流程大解密》,作者:fxy0224。

众所周知,PostgreSQL通过WAL预写xlog日志的机制解决了在单机环境上因进程故障退出导致数据丢失的问题。但在磁盘损坏等情况下,存储在持久性介质的数据就会丢失无法恢复,因此通常采用多副本的方式来保证数据可恢复。在Gaussdb中采用了主备从架构保证数据可靠性。

在Gaussdb主备从架构下,主DN分别与备​DN、从备DN建连。正常情况下,主DN与备DN、从备DN均建立流复制通道,分wal同步和数据页同步两个通道。wal同步是将存储在磁盘中的wal文件读出,然后通过walsender线程发送到备DN;数据页同步是在列存或者批量导入行存数据的场景下使用,通过datasender线程将数据发送到备DN。备DN上通过walreceiver、datareceiver线程接收从主DN同步过来的数据。备DN对同步来的xlog做redo的方式实现与主DN的数据一致性。

failover的场景大致如下:当发生主DN故障且退出后,CM会向备DN通知failover升主的信号。备DN会率先主动连从备DN,将从备DN上的xlog与数据页同步至备DN。然后备DN升主,备DN和从备DN之间建立新的流复制通道。这样当主DN故障时,依靠备DN与从备DN,Gaussdb仍可对外提供服务。

failover时主备DN的状态变化过程如下:

DN状态切换过程示意图

(由于wal机制,因此主备DN在启动时均先执行redo,redo完成后DN状态才从starting——>Normal)

当主DN因故障退出时,其状态显示为down。此时备DN处于断连状态,状态由standby Normal变为needrepair(disconnected),当备DN收到failover信号时,状态变为promoting,表示备DN正处于升主过程中。备DN状态变为primary Normal后,表示备DN升主成功。

failover时备DN的流程示意图如下:

failover流程示意图

Gaussdb内部通过gs_ctl的方式发送给备DN的failover命令:

gs_ctl failover [-w] [-t SECS] [-D DATADIR] [-U USERNAME] [-P PASSWORD],具体流程如下:

  • 备DN上Postmaster线程将failover信号通知到Startup线程, startup线程收到failover信号后,将与主DN不断建连的datareceiver和walreceiver线程shutdown;
  • startup线程获取连接从备的建连信息(从备DN的ip+port),然后通知Postmaster线程创建新的walreceiver和datareceiver线程。
  • 备DN的walreceiver和datareceiver线程与从备DN的walsender和datasender建连。从备DN发送xlog日志与数据页信息到备DN
  • 备DN将从备DN上的数据同步结束后,其walreceiver线程和datareceiver线程均退出。备DN由startup线程进行redo。redo完成后,备DN将创建walsender和datasender线程,并与从备DN的walreceiver和datareceiver线程分别建连,备DN升主成功。备DN升主后,新主将与CN连接,并将xlog日志与数据页文件同步至从备。

 

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

优秀的个人博客,低调大师

微信关注我们

原文链接:https://my.oschina.net/u/4526289/blog/8511293

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。