【达梦数据库】体系结构学习-数据守护集群篇

目录

守护集群的系统结构

守护集群的分类

 实时主备

 读写分离

 DMDSC(数据共享集群)


守护集群的系统结构

      数据守护系统的结构图如下所示,主要由主库、备库、Redo 日志、Redo 日志传输、Redo 日志重演、守护进程(dmwatcher)、监视器(dmmonitor)组成。工作原理是主库产生的Redo日志通过实时/即时归档机制,使用MAL系统发送到备库节点,备库接收并重演Redo日志,从而实现备库与主库的数据同步。

      在主库和备份节点都会配置有守护进程,其主要作用为监控数据库的实例状态和主备的同步情况。

      监视器负责监控守护进程和确认数据库的状态,它有普通监视器和确认监视器两种类型。普通监视器可以接收守护进程消息,获取守护系统状态,也可以执行各种监控命令,而确认监视器除了具备普通监视器所有功能之外,还具有状态确认和自动接管两个功能。

      状态确认指的是在配置了故障自动切换的守护集群中,确认监视器会作为一个判定主库或者备库状态是否正常的“中立”角色。比如主库的守护进程检测到备库发生了故障,主库的守护进程会切换到confirm状态向确认监视器求证,当确认备库是真的故障了的时候,主库的守护进程会切换到failover 状态,启动故障处理流程,主库将发送归档失败的备库归档状态置为无效,之后主库和守护进程依次open。

      自动接管是在故障自动切换的模式下,当确认监视器检测到主库故障时,根据收到的主备库 LSN、归档状态、MAL 链路状态等信息,确定一个接管备库,并将其切换为主库。

守护集群的分类

      DM 数据守护提供多种解决方案,可以配置成实时主备、DMDSC 主备或读写分离集群,满足用户关于系统可用性、数据安全性、性能等方面的综合需求。

 实时主备

       实时主备系统由主库、实时备库、守护进程和监视器组成,顾名思义,它的特点就在于主备库之间是通过实时归档来完成数据同步的,其他功能与数据守护并无二致。下面具体描述下在实时主备下,实时归档是怎么工作的。

      主库生成redo日志,在触发日志写文件操作时,日志线程先将 RLOG_PKG (redo日志的日志包)发送到备库,备库接收后进行合法性校验(包括日志是否连续、备库状态是否 Open 等),如果校验通过则作为 KEEP_RLOG_PKG 保留在内存中,不合法则返回错误信息。

      主库在收到错误信息后,会尝试切换到suspend状态,防止后续redo日志写入联机 redo 日志文件中。因为一旦写入,主备切换时有可能备库没有收到最后那次的 RLOG_PKG,导致主库上多一段日志,很容易造成主备数据不一致。

      KEEP_RLOG_PKG日志会在备库收到新的RLOG_PKG、收到主库的重演命令或者备库要切换成主库时加入 apply 任务队列进行 redo 日志重演,并响应主库日志接收成功。

      主库接收到了备库的响应通知才会将联机日志进行刷盘,之后再将归档日志进行刷盘处理。

 读写分离

      读写分离集群是基于即时归档或实时归档实现的高性能数据库集群,不但提供数据保护、容灾等数据守护基本功能,还具有读写操作自动分离、负载均衡等特性,这也是它与实时主备的最大区别。读写分离的功能通过dm_svc.conf文件的配置来实现,由参数RW_SEPARATE控制是否启用读写分离。

      适用的场景在类似查询这样的只读操作的比例远大于 insert/delete/update 等 DML 操作的应用系统中。

      实现原理是当客户端发起了数据库的连接请求时,主库挑选一个有效即时备库或实时备库的 IP/Port 返回给接口,应用根据返回的备库 IP 和 Port 信息,向备库发起一个连接请求,当备库返回连接成功信息时,客户端与数据库便算是成功建立连接了。

      之所以说读写分离能实现负载均衡,也是跟它的实现机制有关,应用优先连到了备库,对备库进行读的操作,当执行报错(比如应用要进行insert/delete/update 等 DML操作)时,会自动的发给主库来执行,很大程度上减轻了主库的压力,而且这对于用户来说是无感知的。

      上一小节实时归档的原理,这里便不在赘述,重点讲一下读写分离环境中,即时归档是怎么样的工作流程

      与实时归档不同的其中一点是,在即时归档的流程中,当主库的redo日志生成后触发写日志的线程时,先将联机日志写入磁盘后再通过MAL通信系统发送到备库。

      备库校验日志是否合法的环节结束后,进入了与实时归档流程有所区别的第二个点:根据是否为事务一致模式(由归档配置文件dmarch.ini的参数ARCH_WAIT_APPLY控制)来选择不同的redo日志重演时机。如果设置的是事务一致,备库会在重演 Redo 日志完成后再响应主库;如果是高性能模式,就会与实时归档一样,收到 Redo 日志后,马上响应主库。

      即使备库重演的时机不同,最后的流程都是一样的,主库收到备库的响应后,会进行归档日志的刷盘

 DMDSC(数据共享集群)

      DMDSC(数据共享集群)指的就是在DMDSC集群上,增加了数据守护的配置,提供更高效的数据库可用性和事务吞吐量。

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

      下面是一张DMDSC和单节点互为主备的守护系统结构图,

 

      集群的各节点会分别部署守护进程(dmwatcher),守护进程会连接集群内的所有实例和实例的dmcss进程、其他库的所有守护进程,但不会连接集群内部的守护进程。

      主库是 DMDSC 集群时,控制节点扫描本地归档和远程归档目录,收集所有节点的归档日志文件,并发送到备库,普通节点不发送归档日志。

      DMDSC 集群主要由数据库和数据库实例、共享存储、DMASM 或 DMASM 镜像、本地存储、通信网络、集群控制软件 DMCSS、集群监视器 DMCSSM 组成。

更多详细的内容可在达梦数据库官网中查阅

达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值