解密数仓高可用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日志与数据页文件同步至从备。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
日下载量超 88 TB,Flathub 公布 2023 规划
Endless OS 基金会的 CEO 和 GNOME 董事会主席 Robert McQueen 日前发布了一篇博客文章,分享了 Flathub 的发展状况,以及在 2023 年的一些规划,让我们可以提前预览到 Flatpak 在 Linux 桌面上的变化。 根据介绍,Flathub 目前提供了超过 2000 个 Flatpak 格式的应用程序,共有超过 1500 个合作对象,每天大约有 70 万个应用程序通过 Flathub 被用户下载,CDN 每天处理的 HTTP 请求达到 8.98 亿次,总计 88.3 TB,如今这一数字还在持续增长。 看看这些数字,Flathub 如今已经不再仅仅是一个专门下载 Flatpak 应用程序的商店了,可以说 Flathub 都要成为 Linux 事实上的应用商店了。 Robert McQueen 表示: 在我看来,Flatpak 解决了过去 25 年来阻碍 Linux 在桌面(或其他个人计算设备)上发展和提升接受程度的最大技术问题:即应用程序开发者难以用一种让人们很容易发现、下载(或侧载)、安装和使用的方式来发布他们开发的作品。 正如《GNOME ...
- 下一篇
bucket表:数仓存算分离中CU与DN解绑的关键
摘要:Bucket存储是数据共享中重要的一环,当前阶段,bucket存储可以将列存中的CU数据和DN节点解绑。 本文分享自华为云社区《存算分离之bucket表——【玩转PB级数仓GaussDB(DWS)】》,作者:yd_278301229 。 在云原生环境,用户可以自由配置cup型号、内存、磁盘、带宽等资源,需要在计算和IO之间做平衡;如果计算和存储耦合,扩缩容时数据要在节点之间移动,同时还要对外提供计算,性能会大受影响。如果存算分离,计算出和存储层可以独立增加节点互不干扰,这其中一个关键点是做到数据共享。Bucket存储是数据共享中重要的一环,当前阶段,bucket存储可以将列存中的CU数据和DN节点解绑。 一、bucket表在存算分离中的作用 通过存算分离,把DWS完全的shared nothing架构改造成计算层shared nothing + 存储层shared storage。使用OBS替换EVS,OBS对append only存储友好,与列存CU存储天然适配;由于存算分离数据共享,对写的并发性能不高,在OLAP场景下读多写少更有优势,这一点也是和列存相匹配的,目前主要实现的...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Mario游戏-低调大师作品
- CentOS7安装Docker,走上虚拟化容器引擎之路