解密数仓高可用failover流程

解密,可用,failover,流程 · 浏览次数 : 267

小编点评

## GaussDB HA架构中主备从架构的详细流程解析 **概述:** GaussDB采用主备从架构实现数据可靠性,当主DN发生故障时,备DN接手进行数据复制,保证集群不因单DN故障而中断业务。 **架构图:** ```mermaid graph LR A[主DN] --> B[备DN] B --> C[从备DN] A --> D[失败恢复] ``` **流程解析:** 1. **正常状态:** * 主DN与备DN、从备DN建立流复制通道,实现数据同步和数据页同步。 * WAL 与数据页同步两个通道用于数据传输。 2. **故障场景:** * 主DN故障并退出。 * CM向备DN发送failover升主的信号。 * 备DN从备DN上同步xlog与数据页信息。 * 备DN升主,建立新的流复制通道。 * 备DN与从备DN之间建立新的数据同步通道。 3. **失败恢复:** * 备DN接收来自主DN的failover命令。 * Startup线程与walreceiver线程创建新walreceiver和datareceiver线程,连接备DN的wal和数据页。 * walreceiver和datareceiver线程进行数据同步。 * 备DN从备DN获取数据并进行redo处理。 *redo完成后,备DN创建新的wal和data receiver,并与从备DN的wal和data receiver建立连接。 * 备DN升主成功。 4. **成功流程图:** ```mermaid graph LR A --> B[备DN] B --> C[从备DN] A --> D[失败恢复] B --> E[新主] E --> F[从备DN] ``` **总结:** GaussDB主备从架构是一种可靠的数据复制方案,能够即使主DN发生故障并退出,依然能够正常提供服务。

正文

摘要: 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日志与数据页文件同步至从备。

 

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

与解密数仓高可用failover流程相似的内容:

解密数仓高可用failover流程

摘要: Gaussdb的HA采用主备从的架构实现数据可靠性。当主DN发生故障时,备DN走failover流程,升级成为新主DN,保证集群不因单DN故障而中断业务。 本文分享自华为云社区《【玩转PB级数仓GaussDB(DWS)】dws高可用之failover流程大解密》,作者:fxy0224。 众所

云享·案例丨打造数智物流底座,华为云DTSE助力物联云仓解锁物流新“速度”

摘要:华为云凭借领先的技术和快速响应的开发者支持服务,助力物联亿达实现云上资源高可用、提升系统安全性与稳定性,为物联亿达提供了扎实的数字化基础。 本文分享自华为云社区《云享·案例丨打造数智物流底座,华为云DTSE助力物联云仓解锁物流新“速度”》,作者:华为云社区精选 。 数字化转型浪潮席卷全球,企业

5个高并发导致数仓资源类报错分析

摘要:集群运行过程中,有时候会执行并发量比较高的业务场景,一些数据库没有为这种高并发作业配置合适的参数,会导致作业大量报错,这篇文章让你玩转并发作业。 本文分享自华为云社区《【玩转PB级数仓GaussDB(DWS)】在线运维 - 高并发导致资源类报错分析解决》,作者:323老四。 集群运行过程中,有

解读数仓常用模糊查询的优化方法

摘要:本文讲解了GaussDB(DWS)上模糊查询常用的性能优化方法,通过创建索引,能够提升多种场景下模糊查询语句的执行速度。 本文分享自华为云社区《GaussDB(DWS) 模糊查询性能优化》,作者: 黎明的风 。 在使用GaussDB(DWS)时,通过like进行模糊查询,有时会遇到查询性能慢的

解读数仓中的数据对象及相关关系

摘要:为实现不同的功能,GaussDB(DWS)提供了不同的数据对象类型,包括索引、行存表、列存表及其辅助表等。这些数据对象在特定的条件下实现不同的功能,为数据库的快速高效提供了保证,本文对部分数据对象进行介绍。 本文分享自华为云社区《GaussDB(DWS)之数据对象及相互关系总结》,作者:我的橘

bucket表:数仓存算分离中CU与DN解绑的关键

摘要:Bucket存储是数据共享中重要的一环,当前阶段,bucket存储可以将列存中的CU数据和DN节点解绑。 本文分享自华为云社区《存算分离之bucket表——【玩转PB级数仓GaussDB(DWS)】》,作者:yd_278301229 。 在云原生环境,用户可以自由配置cup型号、内存、磁盘、带

GaussDB(DWS)云原生数仓技术解析

摘要:本文主要介绍GaussDB(DWS)云原生数仓架构、产品能力,帮助开发者快速了解GaussDB(DWS)云原生数仓相关信息与能力。 本文分享自华为云社区《直播回顾 | GaussDB(DWS)云原生数仓技术解析》,作者:胡辣汤。 在本期《GaussDB(DWS)云原生数仓技术解析》的主题直播中

【数仓运维实践】关于GaussDB(DWS)单SQL磁盘空间管控

摘要:本文主要讲解数仓运维中遇到单SQL磁盘空间管控问题的解析和方案。 本文分享自华为云社区《GaussDB(DWS)运维 -- 单SQL磁盘空间管控》,作者: 譡里个檔。 【问题描述】 执行部分SQL语句时出现如下报错信息(具体数值可能因为配置有差异),本文针对根因和场景触发场景,确定触发此类问题

2022年了你还不了解加解密吗

前言 加密解密是前后端开发经常需要使用到的技术,应用场景包括不限于用户鉴权、数据传输等,不同的应用场景也会需要使用到不同的签名加密算法,或者需要搭配不一样的签名加密算法来达到业务目标。所以了解加解密,以及常用的加解密函数库,可以根据不同的业务场景,选择适合当下业务场景的加解密函数库。 安全性威胁 这

解码方法数问题

解码方法数问题 作者:Grey 原文地址: 博客园:解码方法数问题 CSDN:解码方法数问题 题目描述 一条包含字母 A-Z 的消息通过以下映射进行了 编码 : 'A' -> 1 'B' -> 2 ... 'Z' -> 26 要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可