实时主备,读写分离集群,MPP主备,DMDSC主备的区别

实时主备,读写分离集群,MPP主备,DMDSC主备的区别

1、实时主备

实时主备系统由主库、实时备库、守护进程和监视器组成。通过部署实时主备系统,可 以及时检测并处理各种硬件故障、数据库实例异常,确保持续提供数据库服务。

1.1主要功能

实时主备系统主要功能包括:

1. 实时数据同步

主备库通过实时归档完成数据同步,实时归档要求主库将 RLOG_PKG 发送到备库后,再将 RLOG_PKG 写入本地联机 Redo 日志文件。但要注意的是,备库确认收到主库发送的Redo 日志,并不保证备库已经完成重演这些 Redo 日志,因此主备库之间的数据同步存在一定的时间差。

image-20220609142407305

​ 实时归档流程图

主库生成联机 Redo 日志,当触发日志写文件操作后,日志线程先将 RLOG_PKG 发送到备库,备库接收后进行合法性校验(包括日志是否连续、备库状态是否 Open 等),不合法则返回错误信息,合法则作为 KEEP_PKG 保留在内存中,原有 KEEP_PKG 的 Redo 日志加入 Apply 任务队列进行 Redo 日志重演,并响应主库日志接收成功。

2. 主备库切换

主备库正常运行过程中,可以通过监视器的 Switchover 命令,一键完成主备库角色转换。主备库切换功能可以确保在软、硬件升级,或系统维护时,提供不间断的数据库服务。

3. 自动故障处理

备库故障,不影响主库正常提供数据库服务,守护进程自动通知主库修改实时归档为Invalid 状态,将实时备库失效。

4. 自动数据同步

备库故障恢复后,守护进程自动通知主库发送归档 Redo 日志,重新进行主备库数据同步。并在历史数据同步后,修改主库的实时归档状态为 Valid,恢复实时备库功能。备库接管后,原主库故障恢复,守护进程自动修改原主库的模式为 Standby,并重新作为备库加入主备系统。

5. 备库接管

主库发生故障后,可以通过监视器的 Takeover 命令,将备库切换为主库,继续对外提供服务。如果配置为自动切换模式,确认监视器可以自动检测主库故障,并通知备库接管,这个过程不需要人工干预。

6. 备库强制接管

如果执行 Takeover 命令不成功,但主库可能由于硬件损坏等原因无法马上恢复,为了及时恢复数据库服务,DM 提供了 Takeover Force 命令,强制将备库切换为主库。但需要由用户确认主库故障前,主库与接管备库的数据是一致的(主库到备库的归档是 Valid状态),避免引发守护进程组分裂。

7. 读写分离访问

在备库查询的实时性要求不高的条件下,实时主备也可以配置接口的读写分离属性访问,实现读写分离功能特性。

2、读写分离集群

读写分离集群是基于即时归档或实时归档实现的高性能数据库集群,不但提供数据保护、容灾等数据守护基本功能,还具有读写操作自动分离、负载均衡等特性。读写分离集群最多可以配置 8 个即时备库或 8 个实时备库,提供数据同步、备库故障自动处理、故障恢复自动数据同步等功能,也支持自动故障切换和手动故障切换两种守护模式。

2.1归档

读写分离集群可以配置为即时归档,也可以配置为实时归档,这两种配置方式仅仅是归档流程上有差别,读写分离集群的特性仍然是一致的。即时归档流程与实时归档流程存在一定差异:

1.主库先将日志写入本地联机 Redo 日志文件中,再发送 RLOG_PKG 到备库。

2.备库日志重演时机有两种选择:

 事务一致模式 要求备库在重演 Redo 日志完成后再响应主库。

 高性能模式 与实时归档一样,收到 Redo 日志后,马上响应主库。

3.即时归档的同步机制可以保证备库的 Redo 日志不会比主库的 Redo 日志多,因此即时备库不需要 KEEP_PKG,收到 RLOG_PKG 直接加入到 Apply 任务系统,启动 Redo 日志重演。

4.备库故障或主备库之间网络故障,导致发送 RLOG_PKG 失败后,主库马上修改即时归档为 Invalid 状态,并切换数据库为 Suspend 状态。

5.即时归档修改为 Invalid 状态后,会强制断开对应此备库上存在影子会话的用户会话,避免只读操作继续分发到该备库,导致查询数据不一致。

image-20220609150316697

​ 即时归档流程

2.2读写分离流程

一般情况下,应用系统中查询等只读操作的比例远大于 Insert/Delete/Update 等DML 操作,修改对象定义等 DDL 操作的比例则更低。但是,这些操作往往混杂在一起,在高并发、高压力情况下,会导致数据库性能下降,响应时间变长。借助读写分离集群,将只读操作自动分发到备库执行,可以充分利用备库的硬件资源,降低主库的并发访问压力,进而提升数据库的吞吐量。

读写分离集群不依赖额外的中间件,而是通过数据库接口与数据库之间的密切配合,实现读、写操作自动分离特性。DM 的 JDBC、DPI、DCI、ODBC、Provider 等接口都可以用来部署读写分离集群。

实现读写分离集群的基本思路是:利用备库提供只读服务、无法修改数据的特性,优先将所有操作发送到备库执行,一旦备库执行报错,则发送到主库重新执行。通过备库“试错”这么一个步骤,自然地将只读操作分流到备库执行。并且,备库“试错”由接口层自动完成,对应用透明。

读写分离集群数据库连接创建流程:

1.用户发起数据库连接请求。

2.接口(JDBC、DPI 等)根据服务名配置(在 dm_svc.conf 中进行配置)登录主库。

3.主库挑选一个有效即时备库的 IP/Port 返回给接口。

4.接口根据返回的备库 IP 和 Port 信息,向备库发起一个连接请求。

5.备库返回连接成功信息。

6.接口响应用户数据库连接创建成功。

接口在备库上创建的连接是读写分离集群自动创建的;对用户而言,就是在主库上创建了一个数据库连接

image-20220609143836095

​ 读写分离连接创建

读写分离集群语句分发流程:

1.接口收到用户的请求。

2.接口优先将 SQL 发送到备库执行。

3.备库执行并返回执行结果。如果接口收到的是备库执行成功消息,则转到第 6 步,如果接口收到的是备库执行失败消息,则转到第 4 步。

4.重新将执行失败的 SQL 发送到主库执行。只要第 3 步中的 SQL 在备库执行失败,则同一个事务后续的所有操作(包括只读操作)都会直接发送到主库执行。

5.主库执行并返回执行结果给接口。一旦主库上执行的写事务提交,则下次继续从第1 步开始执行。

6.接口响应用户并将执行结果返回给用户。

image-20220609144228109

​ 读写分离集群语句分发流程

3、MPP主备

3.1、什么是MPP

DMMPP:达梦大规模并行处理 DM Massively Parallel Processing

​ 基于达梦数据库管理系统研发的完全对等无共享式集群组件,支持将多个 DM 数据库实例

组织为一个并行计算网络,对外提供统一的数据库服务

​ DM MPP 采用完全对等无共享架构,对整个系统来说,每个 EP 作用都是一样的,用户

可以连接到其中的任何一个进行操作。而对每个用户会话来说,EP 具有主从之分。用户会

话实际连接的那个 EP 对该用户会话来说称为主 EP,其余的 EP 都称为从 EP。

image-20220609132907885

​ DM MPP系统架构

DM MPP 中的每一个 DM 数据库服务器实例作为一个执行节点,简称 EP。客户端可连接任意一个 EP 节点进行操作,所有 EP 对客户来说都是对等的。DM MPP 系统内每个 EP 只负责自身部分数据的读写,执行计划在所有 EP 并行执行,能充分利用各 EP 的计算能力及发挥各 EP 独立存储的优势。数据只在必要时通过 DM 的高速邮件 MAL 系统在 EP 间传递。当通信代价占整体执行代价的比例较小时,更能体现大规模并行处理的优势,随着系统规模的扩大,并行支路越多,优势越明显。

在 DM MPP 中,数据根据用户指定的分布规则分布在不同的 EP 上。MPP 的核心在于对用户请求的并行执行,其执行流程可简单描述如下:

1.用户选择一个 EP 登录,此时该 EP 就是此用户的主 EP,集群中的其余 EP 都是此用户的从EP;

2.主 EP 接受用户的 SQL 请求,并生成并行执行计划;

3.主 EP 将计划打包后分发给其他从 EP;

4.各 EP 并行执行;

5.主 EP 收集各 EP(包括自己)的执行结果;

6.主 EP 将执行结果汇总后返回给用户。

image-20220609133413231

​ DM MPP执行流程图

3.2MPP主备

MPP 主备就是在 MPP 集群的基础上,为每一个 MPP 节点配置一套实时主备系统,这些实时主备系统一起构成了 MPP 主备系统。MPP 主备系统包含多个守护进程组,每个守护进程组都是一个相对独立的实时主备系统,具备实时主备的基本功能,可以进行主备切换、备库接管等操作。

MPP 主备的主要目的是为 DM MPP 集群提供数据可靠性保障,备库只做数据容灾、备份,MPP 备库并不是 MPP 集群的一部分,只是某个 MPP 节点(主库)的镜像。MPP 备库不参与 MPP 操作,与其他 MPP 备库之间也没有任何关系,MPP 备库只能以单节点方式提供只读服务,但不提供全局的 MPP 只读服务。

MPP 主备系统中,一个守护进程 dmwatcher 可以监控、管理多个守护进程组的数据库实例。一般来说,一台物理机器上,可以部署 1 个 MPP 节点的主库和多个其他 MPP 节点的备库,充分利用硬件资源,节省投资。

Global 守护类型的 MPP 主备库需要在 dm.ini 中配置 MPP_INI 为 1,并且 MPP 主备库的本地数据文件目录下都需要有 dmmpp.ctl 文件,如果 Global 守护类型的备库没有上述配置,守护进程和监视器无法正常使用,守护进程会切换到 Shutdown 状态,监视器上无法正常执行命令,会打印配置不一致的提示信息。

image-20220609134314530

​ DM MPP主备系统结构图

4、DMDSC主备

4.1什么是DMDSC

DM 共享存储数据库集群的英文全称 DM Data Shared Cluster,简称 DMDSC。

DM 共享存储数据库集群,允许多个数据库实例同时访问、操作同一数据库,具有高可用、高性能、负载均衡等特性。DMDSC 支持故障自动切换和故障自动重加入,某一个数据库实例故障后,不会导致数据库服务无法提供。

DMDSC 集群是一个多实例、单数据库的系统。多个数据库实例可以同时访问、修改一个数据库的数据。用户可以登录集群中的任意一个数据库实例,获得完整的数据库服务。数据文件、控制文件在集群系统中只有一份,不论有几个节点,这些节点都平等地使用这些文件,这些文件保存在共享存储上。每个节点有自己独立的联机日志和归档日志,其中联机日志保存在共享存储上,归档日志可以保存在本地存储上也可以保存在共享存储上。DMDSC 集群主要由数据库和数据库实例、共享存储、本地存储、通信网络、以及集群控制软件 DMCSS 组成。

image-20220609135843550

​ DMDSC系统结构图

4.2DMDSC集群

DMDSC 集群数据守护功能与单节点数据守护保持一致,支持故障自动切换,支持实时归档与读写分离集群。支持 DMDSC 集群的守护,DMDSC(主)和单节点(备)、单节点(主)和 DMDSC(备)相互之间都可以作为主备库的数据守护。一般建议将 DMDSC 部署为主库,将单节点部署为备库。

image-20220609141817814

​ DMDSC 和单节点互为主备的守护系统结构简图

1.DMDSC 集群各个节点分别部署守护进程(dmwatcher)。

2.DMDSC 集群数据库控制节点的守护进程,称为控制守护进程,普通节点的守护进程称为普通守护进程,如果控制节点发生变化,则控制守护进程也相应变化。

3.守护进程会连接 DMDSC 集群所有实例,但只有控制守护进程会发起 OPEN、故障处理、故障恢复等各种命令。普通守护进程不处理用户命令,但接收其他库的控制守护进程消息。

4.主备实时同步数据时,DMDSC 集群主库各个节点将各自产生的联机日志发送到备库进行重演。

控制节点的守护进程,称为控制守护进程,普通节点的守护进程称为普通守护进程,如果控制节点发生变化,则控制守护进程也相应变化。

3.守护进程会连接 DMDSC 集群所有实例,但只有控制守护进程会发起 OPEN、故障处理、故障恢复等各种命令。普通守护进程不处理用户命令,但接收其他库的控制守护进程消息。

4.主备实时同步数据时,DMDSC 集群主库各个节点将各自产生的联机日志发送到备库进行重演。

如果还有任何问题,欢迎到达梦在线服务平台提问哦!
社区 | 达梦在线服务平台https://eco.dameng.com

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值