From e16f00ec1484f15cc070d53bcc7cd501c9d69029 Mon Sep 17 00:00:00 2001 From: dongning12 Date: Tue, 19 Sep 2023 17:15:01 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E8=B5=84=E6=BA=90=E6=B1=A0=E5=8C=96?= =?UTF-8?q?=E3=80=91reform=E7=9B=B8=E5=85=B3=E4=BB=8B=E7=BB=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DMS\344\273\213\347\273\215.md" | 127 ++++++++++++++++++ ...S\347\212\266\346\200\201\346\234\272.png" | Bin 0 -> 14102 bytes ...220\216\351\246\226\350\275\256reform.png" | Bin 0 -> 27133 bytes ...217\230\345\214\226\344\270\216reform.png" | Bin 0 -> 41613 bytes ...04\346\272\220\346\261\240\345\214\226.md" | 58 +------- ...40\345\214\226\344\273\213\347\273\215.md" | 59 ++++++++ content/zh/menu/index.md | 4 +- ...1\346\200\247\346\217\217\350\277\260.rst" | 3 +- ...4\346\272\220\346\261\240\345\214\226.rst" | 7 + 9 files changed, 200 insertions(+), 58 deletions(-) create mode 100644 "content/zh/docs/AboutopenGauss/DMS\344\273\213\347\273\215.md" create mode 100644 "content/zh/docs/AboutopenGauss/figures/\350\265\204\346\272\220\346\261\240\345\214\226/DMS\347\212\266\346\200\201\346\234\272.png" create mode 100644 "content/zh/docs/AboutopenGauss/figures/\350\265\204\346\272\220\346\261\240\345\214\226/\345\273\272\345\272\223\345\220\216\351\246\226\350\275\256reform.png" create mode 100644 "content/zh/docs/AboutopenGauss/figures/\350\265\204\346\272\220\346\261\240\345\214\226/\351\233\206\347\276\244\345\217\230\345\214\226\344\270\216reform.png" create mode 100644 "content/zh/docs/AboutopenGauss/\350\265\204\346\272\220\346\261\240\345\214\226\344\273\213\347\273\215.md" create mode 100644 "sphinx/source/AboutopenGauss/\350\265\204\346\272\220\346\261\240\345\214\226.rst" diff --git "a/content/zh/docs/AboutopenGauss/DMS\344\273\213\347\273\215.md" "b/content/zh/docs/AboutopenGauss/DMS\344\273\213\347\273\215.md" new file mode 100644 index 000000000..2915c7254 --- /dev/null +++ "b/content/zh/docs/AboutopenGauss/DMS\344\273\213\347\273\215.md" @@ -0,0 +1,127 @@ +# DMS +DMS, Distributed Memory Service,分布式内存服务 +DMS是动态库,集成在数据库内部,通过TCP/RDMA网络传输PAGE内容,将主备内存融合,提供内存池化能力,以此实现备机实时一致性读功能 + +## Reform +在共享存储架构下,当一个稳定集群出现异常,例如有节点重启,有节点被踢出集群,有节点加入等,DBMS需要处理这一情况,进行一系列的动作,将集群从一个不稳定状态转变成一个稳定状态。这个过程,在共享存储架构下称之为**reform**。 + +一轮reform由集群中的一个节点进行组织,该节点为reformer,其余节点配合reformer,进行对应流程,这些节点为partner。同时在一主多备的架构下,reformer节点和写节点进行身份绑定,reform完成后,reformer对应的节点提供写能力,成为主节点。 + +**DMS状态** + +为了识别节点的变化,我们给节点定义DMS 的状态。 + +- OUT:不在集群状态 +- JOIN:节点想要加入集群 +- REFORM:正在参与reform +- IN:完成一轮reform,已加入集群。后续再参与reform,还是IN状态 + + +!["DMS状态机"](figures/资源池化/DMS状态机.png ) + + +在一个3节点的稳定集群为例(其中节点0主),节点1重启,节点1刚开始是OUT,dms初始化完成,状态变成JOIN,当reformer节点(也就是节点0)通知其参与reform时,在start流程中状态改成REFORM,reform完成状态改成IN。**需要注意的是参与本轮reform的是整个集群中的所有的在线节点**,包括节点0、节点1、节点2。在reform过程中,集群内所有节点无法对外正常服务,只有reform成功完成后,集群内所有节点才能对外提供服务。 + +如果有新节点加入集群,发现集群正在reform,新节点会停在JOIN状态,等待reformer节点组织一轮reform,让新节点加入。 + +在一轮reform完成时,将参与本轮的节点列表记录到磁盘上,也称之为**稳定节点列表**。这样当集群出现变化,我们从磁盘上读取稳点节点列表,当在线节点在稳定节点列表打上**old标签**,不在稳定节点列表则打上**new标签**,当一个节点启动要加入集群时,我们可以根据其是 old join还是new join,从而区分出是节点重启,还是节点加入。 + +节点启动时,参与的reform,称之为首轮reform,如果首轮reform失败,该节点会退出。 + +节点首轮reform成功后成为稳定节点,后续集群再发生变化,参与reform,其状态还是IN,reform失败也不会重启。(当然有一些特别的场景会出现稳定节点重启) + +### openGauss对于reform的适配 +首先明确一下集群中会遇到的场景。 + +**单一情况场景** + +启动场景:多节点一起启动;单节点启动加入集群 + +非启动场景:主机故障重启;备机故障重启;备机被集群踢出;主机被踢出集群(failover),主备切换switchover + +**复杂情况场景** + +主机故障重启叠加单节点启动加入集群; + +主机故障重启叠加备机故障重启; + +新节点加入失败,又被CM踢出 + +等等,这里不在一一列举。 + +在介绍是如何处理这些场景之前,我们需要介绍一下reformer锁。 + +CM提供reformer锁,集群内的在线节点会抢这把锁,哪个节点抢到reformer锁哪个节点成为reformer,在成为reformer后。即使reformer节点出现重启,CM不会释放这把锁,原先的reformer重启后还是reformer节点。只有CM将reformer节点踢出集群,才会将reformer锁释放。还有就是在switchover过程中,reformer锁由原主转给新主。**需要注意的是**当cm停了全部集群,reformer锁对应的节点信息没有擦除,当集群再次启动时,原先的reformer节点还是reformer。 + +基于这一点,我们不难判断出,在多节点启动场景下,抢到锁的节点会成为reformer。**但是**对于openGauss来说,因为建库阶段有一个节点会创建公共目录,其xlog的LSN大于节点的LSN。当该节点没有成为主,会出现一些额外的问题。对此,我们进行了特殊处理 + +![ "建库后首轮reform"](figures/资源池化/建库后首轮reform.png) + + + +对于建库后的首轮启动场景,我们让一个节点(建库阶段指定)单独完成一轮reform,再这之后,再将组织一轮reform,将其他节点加入集群。这里分成两个场景: **新节点(主机)加入**和**新节点(备机)加入**。后续整个集群重启,在原主存在的情况下,因为reformer锁信息没有改动,可以认为是主机重启加备机重启等。 + +由此对于openGauss共享存储架构来说,集群变换分成一下几种: + +1.新节点(主机)加入集群:只在建库后的首轮出现 + +2.新节点(备机)加入集群 + +3.主机故障重启 + +4.备机故障重启 + +5.备节点被踢出集群 + +6.failover(主节点被踢出集群) + +7.switchover。 + +8.新节点加入失败。 + +对应的我们有如下 reform类型: + +normal reform:对应着reformer锁没有出现有一个节点变成另一个节点,包含着场景1、2、3、4、5 + +failover reform:对应着reform锁出现一个节点变成另一个节点,包含场景6 + +switchover reform:对应着场景7 + +full clean reform:对应着场景8 + +当出现复杂场景,例如主节点被踢出集群+新节点加入,根据reformer锁信息出现了节点间的变化,由failover reform处理。备机故障重启+(另一个备机)被踢出,reformer信息没有出现变化,属于normal reform。 + +对于swithover reform是由一个稳定集群下进行,在叠加故障下,不会进行switchover。对于full clean reform,如果出现叠加故障,根据锁信息的是否变更,failover reform或者normal reform进行处理。 + +![reform的种类](figures/资源池化/集群变化与reform.png) + +### failover reform + +共享存储Failover与传统主备Failover稍有区别,在共享存储下的Failover不是通过Failover命令主动触发,而是当主机被踢出集群时,集群中会有一个节点升主成为主机,而这一过程叫做Failover。这个升主节点不是由CM指定的,而是由DMS REFORM抢锁机制决定。抢到锁的节点会成为主。Failover分为在线Failover和重启Failover。当主机被踢出集群后,升主的备机会组织一轮Failover Reform。如果在这过程中,自身出现重启,则称之为重启Failover,没有重启则称之为在线Failover。 + +主机被踢出集群的原因:主机出现问题启动失败,在规定时间内启动失败次数达到阈值(当前默认值1分钟5次);出现网络隔离,经过CM(集群管理软件)仲裁后主节点被CM踢出。 + +当集群只剩下一个节点的时候,对于最后一个节点CM不会踢出。 + + + +#### failover限制原主参加 + +1)目前共享存储架构下,限制原主参加。 + +举个例子: + +三节点集群,节点0(主),节点1(备),节点2(备)。集群出现网络隔离,节点0与另外两个节点不连通,CM将节点0踢出集群。 + +DMS的reform机制选出节点1作为reformer(准备成为新主),此时节点0网络好了,节点0(原主)想要加入集群。本轮reform由节点1组织,参与的节点不包含节点0(原主)。 + +2)当switchover发生时,当reformer锁发生转移,如果新主升主失败后重启,对应的原主需要重启 + +从DMS的角度看,因为reformer锁转移,按照failover场景进行处理,可是原主节点没有被踢出集群,原主节点还是作为集群中的稳定节点。因为本次我们限制了原主参与failover。第一轮failover reform 没有带原主节点参与。第二轮查看集群节点状态,发现原主节点状态IN,不满足我们的状态机设定,无法触发reform。 + +为此我们在switchover失败情况下,将原主节点重启。从而将该场景转变成常规的failover场景。 + + + + + diff --git "a/content/zh/docs/AboutopenGauss/figures/\350\265\204\346\272\220\346\261\240\345\214\226/DMS\347\212\266\346\200\201\346\234\272.png" "b/content/zh/docs/AboutopenGauss/figures/\350\265\204\346\272\220\346\261\240\345\214\226/DMS\347\212\266\346\200\201\346\234\272.png" new file mode 100644 index 0000000000000000000000000000000000000000..e2d5777c0a6cd05e194f715579f3e41bdb562a3f GIT binary patch literal 14102 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 literal 0 HcmV?d00001 diff --git "a/content/zh/docs/AboutopenGauss/\350\265\204\346\272\220\346\261\240\345\214\226.md" "b/content/zh/docs/AboutopenGauss/\350\265\204\346\272\220\346\261\240\345\214\226.md" index 81e8bca4b..178b4cebc 100644 --- "a/content/zh/docs/AboutopenGauss/\350\265\204\346\272\220\346\261\240\345\214\226.md" +++ "b/content/zh/docs/AboutopenGauss/\350\265\204\346\272\220\346\261\240\345\214\226.md" @@ -1,59 +1,5 @@ # 资源池化 -## 可获得性 - -本特性自openGauss 3.1.1 版本开始引入。 - -## 特性简介 - -本特性提供主备机共享一份存储的能力,实现基于磁阵设备的资源池化HA部署形态,解决传统HA部署下存储容量较单机翻倍的问题,同时备机支持实时一致性读。资源池化架构图如下图所示。 - -**图 1** 资源池化架构图 -![](figures/Resource-pooling-architecture-diagram.jpg "资源池化架构图") - -## 客户价值 - -解决传统HA部署下存储容量较单机部署翻倍的问题,减少了存储容量。备机支持实时一致性读,充分发挥主备多节点算力。 - -## 特性描述 - -- 资源池化依赖两个自研的公共组件实现主备共享一份存储的能力: - - 分布式存储服务DSS(Distributed Storage Service) - - DSS分为DSSAPI和DSSSERVER。DSSSERVER是独立进程,直接管理磁阵裸设备,并对外提供类似分布式文件系统的能力;DSSAPI是动态库,集成在数据库内部。DSS组件通过共享内存和客户端API动态库,为数据库提供创建文件、删除文件、扩展和收缩文件、读写文件的能力。 - - - 分布式内存服务DMS(Distributed Memory Service) - - DMS是动态库,集成在数据库内部,通过TCP/RDMA网络传输PAGE内容,将主备内存融合,提供内存池化能力,以此实现备机实时一致性读功能。 - - -- 存储池化通过分布式存储服务DSS组件实现主备共享一份存储。与传统建库相比,资源池化基于磁阵建库将目录分为三种类型,每实例独占且不共享、每实例独占且共享、所有实例共享。其中需要共享的目录均需存放到磁阵设备上,而不共享的目录存放在本地盘上。另外备机建库只需要建隶属于自己的目录,不需要再次创建所有实例共享的目录结构。资源池化新增了相关GUC参数,以及将系统表存储方式从页式切换到段页式。 -- 内存池化通过分布式内存服务DMS组件实现主备页面实时交换,提供备机实时一致性能力。即主机事务提交后,在备机立即能够读到,不存在延迟读现象(事务隔离级别为Read-Committed)。 -- 内存池化可选通过OCK RDMA降低DMS主备页面交换时延。TCP下的备机一致性读进行时延对比,开启OCK RDMA,备机一致性读时延至少要降低20%。 - -## 特性增强 - -5.0.0版本对该特性做了以下增强。 - -- 资源池化支持升级。支持从5.0.0版本资源池化部署下,升级到后续版本。 - -5.0.1版本对该特性做了一下增强。 -- 资源池化支持同城双中心容灾部署,不支持资源池化旧版本单集群升级到双集群。 - -## 特性约束 - -- 资源池化方案依赖于磁阵设备,磁阵的LUN需要支持SCSI3的PR协议(包括PR OUT(“PERSISTENT RESERVE OUT”)PR IN(“PERSISTENT RESERVE IN”)和INQUIRY), 用于实现集群IO FENCE。除此之外, 还需要支持SCSI3的CAW协议(COMPARE AND WRITE),用于实现共享磁盘锁。如Dorado 5000 V3磁阵设备。 -- 资源池化实现的HA部署形态支持最高1主7备场景。 -- 资源池化由于依赖类似分布式文件系统的功能来实现备机实时一致性读能力,因此要求文件元数据变更越少越好。基于性能考虑,只支持段页式表。 -- 只支持主备部署在同一磁阵设备上,不支持容灾部署,也不支持主备混合部署(如主和备部署在不同的磁阵设备上)。 -- 主备页面交换通过RDMA加速,依赖CX5网卡,并且依赖OCK RDMA动态库。 -- 暂不支持备机重建及节点替换、节点修复等能力。 -- 资源池化模式数据库和传统模式数据库不支持相互升级。 -- 资源池化模式下gs\_xlogdump\_xid,gs\_xlogdump\_lsn,gs\_xlogdump\_tablepath,gs\_xlogdump\_parsepage\_tablepath、pg\_create\_logical\_replication\_slot、gs\_verify\_and\_tryrepair\_page、gs\_repair\_page、gs\_repair\_file函数功能不支持使用。 -- 资源池化模式下T\_CreatePublicationStmt、T\_AlterPublicationStmt、T\_CreateSubscriptionStmt、T\_AlterSubscriptionStmt、T\_DropSubscriptionStmt订阅功能不支持使用。 -- 资源池化模式下不支持全局临时表。 - -## 依赖关系 - -无。 +- **[资源池化介绍](资源池化介绍.md)** +- **[DMS介绍](DMS介绍.md)** \ No newline at end of file diff --git "a/content/zh/docs/AboutopenGauss/\350\265\204\346\272\220\346\261\240\345\214\226\344\273\213\347\273\215.md" "b/content/zh/docs/AboutopenGauss/\350\265\204\346\272\220\346\261\240\345\214\226\344\273\213\347\273\215.md" new file mode 100644 index 000000000..81e8bca4b --- /dev/null +++ "b/content/zh/docs/AboutopenGauss/\350\265\204\346\272\220\346\261\240\345\214\226\344\273\213\347\273\215.md" @@ -0,0 +1,59 @@ +# 资源池化 + +## 可获得性 + +本特性自openGauss 3.1.1 版本开始引入。 + +## 特性简介 + +本特性提供主备机共享一份存储的能力,实现基于磁阵设备的资源池化HA部署形态,解决传统HA部署下存储容量较单机翻倍的问题,同时备机支持实时一致性读。资源池化架构图如下图所示。 + +**图 1** 资源池化架构图 +![](figures/Resource-pooling-architecture-diagram.jpg "资源池化架构图") + +## 客户价值 + +解决传统HA部署下存储容量较单机部署翻倍的问题,减少了存储容量。备机支持实时一致性读,充分发挥主备多节点算力。 + +## 特性描述 + +- 资源池化依赖两个自研的公共组件实现主备共享一份存储的能力: + - 分布式存储服务DSS(Distributed Storage Service) + + DSS分为DSSAPI和DSSSERVER。DSSSERVER是独立进程,直接管理磁阵裸设备,并对外提供类似分布式文件系统的能力;DSSAPI是动态库,集成在数据库内部。DSS组件通过共享内存和客户端API动态库,为数据库提供创建文件、删除文件、扩展和收缩文件、读写文件的能力。 + + - 分布式内存服务DMS(Distributed Memory Service) + + DMS是动态库,集成在数据库内部,通过TCP/RDMA网络传输PAGE内容,将主备内存融合,提供内存池化能力,以此实现备机实时一致性读功能。 + + +- 存储池化通过分布式存储服务DSS组件实现主备共享一份存储。与传统建库相比,资源池化基于磁阵建库将目录分为三种类型,每实例独占且不共享、每实例独占且共享、所有实例共享。其中需要共享的目录均需存放到磁阵设备上,而不共享的目录存放在本地盘上。另外备机建库只需要建隶属于自己的目录,不需要再次创建所有实例共享的目录结构。资源池化新增了相关GUC参数,以及将系统表存储方式从页式切换到段页式。 +- 内存池化通过分布式内存服务DMS组件实现主备页面实时交换,提供备机实时一致性能力。即主机事务提交后,在备机立即能够读到,不存在延迟读现象(事务隔离级别为Read-Committed)。 +- 内存池化可选通过OCK RDMA降低DMS主备页面交换时延。TCP下的备机一致性读进行时延对比,开启OCK RDMA,备机一致性读时延至少要降低20%。 + +## 特性增强 + +5.0.0版本对该特性做了以下增强。 + +- 资源池化支持升级。支持从5.0.0版本资源池化部署下,升级到后续版本。 + +5.0.1版本对该特性做了一下增强。 +- 资源池化支持同城双中心容灾部署,不支持资源池化旧版本单集群升级到双集群。 + +## 特性约束 + +- 资源池化方案依赖于磁阵设备,磁阵的LUN需要支持SCSI3的PR协议(包括PR OUT(“PERSISTENT RESERVE OUT”)PR IN(“PERSISTENT RESERVE IN”)和INQUIRY), 用于实现集群IO FENCE。除此之外, 还需要支持SCSI3的CAW协议(COMPARE AND WRITE),用于实现共享磁盘锁。如Dorado 5000 V3磁阵设备。 +- 资源池化实现的HA部署形态支持最高1主7备场景。 +- 资源池化由于依赖类似分布式文件系统的功能来实现备机实时一致性读能力,因此要求文件元数据变更越少越好。基于性能考虑,只支持段页式表。 +- 只支持主备部署在同一磁阵设备上,不支持容灾部署,也不支持主备混合部署(如主和备部署在不同的磁阵设备上)。 +- 主备页面交换通过RDMA加速,依赖CX5网卡,并且依赖OCK RDMA动态库。 +- 暂不支持备机重建及节点替换、节点修复等能力。 +- 资源池化模式数据库和传统模式数据库不支持相互升级。 +- 资源池化模式下gs\_xlogdump\_xid,gs\_xlogdump\_lsn,gs\_xlogdump\_tablepath,gs\_xlogdump\_parsepage\_tablepath、pg\_create\_logical\_replication\_slot、gs\_verify\_and\_tryrepair\_page、gs\_repair\_page、gs\_repair\_file函数功能不支持使用。 +- 资源池化模式下T\_CreatePublicationStmt、T\_AlterPublicationStmt、T\_CreateSubscriptionStmt、T\_AlterSubscriptionStmt、T\_DropSubscriptionStmt订阅功能不支持使用。 +- 资源池化模式下不支持全局临时表。 + +## 依赖关系 + +无。 + diff --git a/content/zh/menu/index.md b/content/zh/menu/index.md index a83df56fc..43311d96e 100644 --- a/content/zh/menu/index.md +++ b/content/zh/menu/index.md @@ -107,7 +107,6 @@ headless: true - [外键锁增强]({{< relref "./docs/AboutopenGauss/外键锁增强.md" >}}) - [支持OLTP场景数据压缩]({{< relref "./docs/AboutopenGauss/支持OLTP场景数据压缩.md" >}}) - [事件触发器]({{< relref "./docs/AboutopenGauss/事件触发器.md" >}}) - - [资源池化]({{< relref "./docs/AboutopenGauss/资源池化.md" >}}) - [应用开发接口]({{< relref "./docs/AboutopenGauss/应用开发接口.md" >}}) - [支持标准SQL]({{< relref "./docs/AboutopenGauss/支持标准SQL.md" >}}) - [支持标准开发接口]({{< relref "./docs/AboutopenGauss/支持标准开发接口.md" >}}) @@ -139,6 +138,9 @@ headless: true - [分布式分析能力]({{< relref "./docs/AboutopenGauss/分布式分析能力.md" >}}) - [负载管理]({{< relref "./docs/AboutopenGauss/负载管理.md" >}}) - [支持I层高时延逃生能力]({{< relref "./docs/AboutopenGauss/支持I层高时延逃生能力.md" >}}) + - [资源池化]({{< relref "./docs/AboutopenGauss/资源池化.md" >}}) + - [资源池化介绍]({{< relref "./docs/AboutopenGauss/资源池化介绍.md" >}}) + - [DMS介绍]({{< relref "./docs/AboutopenGauss/DMS介绍.md" >}}) - [快速入门]({{< relref "./docs/GettingStarted/GettingStarted.md" >}}) - [了解openGauss]({{< relref "./docs/GettingStarted/了解openGauss.md" >}}) - [安装openGauss]({{< relref "./docs/GettingStarted/安装openGauss.md" >}}) diff --git "a/sphinx/source/AboutopenGauss/\347\211\271\346\200\247\346\217\217\350\277\260.rst" "b/sphinx/source/AboutopenGauss/\347\211\271\346\200\247\346\217\217\350\277\260.rst" index daea29eba..b09d9bf67 100644 --- "a/sphinx/source/AboutopenGauss/\347\211\271\346\200\247\346\217\217\350\277\260.rst" +++ "b/sphinx/source/AboutopenGauss/\347\211\271\346\200\247\346\217\217\350\277\260.rst" @@ -12,4 +12,5 @@ AI能力 工具链 中间件 - 负载管理 \ No newline at end of file + 负载管理 + 资源池化 \ No newline at end of file diff --git "a/sphinx/source/AboutopenGauss/\350\265\204\346\272\220\346\261\240\345\214\226.rst" "b/sphinx/source/AboutopenGauss/\350\265\204\346\272\220\346\261\240\345\214\226.rst" new file mode 100644 index 000000000..512a85864 --- /dev/null +++ "b/sphinx/source/AboutopenGauss/\350\265\204\346\272\220\346\261\240\345\214\226.rst" @@ -0,0 +1,7 @@ +资源池化 +====== + +.. toctree:: + + ../content/zh/docs/AboutopenGauss/资源池化介绍 + ../content/zh/docs/AboutopenGauss/DMS介绍 \ No newline at end of file -- Gitee