7.数据守护集群原理解析

前言

本篇博客主要内容是关于达梦数据库的数据守护集群,DM 数据守护(Data Watch)是一种集成化的高可用、高性能数据库解决方案,数据守护可以配置成实时主备、MPP主备、DMDSC主备或读写分离集群等,只需数秒时间就可以将备库切换为主库对外提供数据库服务,这边主要学习相应的主备同步内容。

一、数据守护原理

1 基本概念

DM 数据守护(Data Watch)的实现 :将主库产生的 Redo日志传输到备库,备库接收并重新应用 Redo 日志,从而实现备库与主库的数据同步。

2 成员介绍

DM 数据守护系统主要由主库、备库、Redo-log、Redo 日志传输、Redo 日志重演、守护进程(dmwatcher)、监视器(dmmonitor)组成。

  • 主库 :Primary 模式,提供完整数据库服务的实例;
  • 备库 :Standby 模式,提供只读数据库服务的实例。备库除了用于容灾,还可以提供备份、查询等只读功能,备库还支持临时表的 Insert/Delete/Update 操作,因为临时表数据的修改不会产生 Redo 日志,主库对临时表的修改无法同步到备库
  • Redo 日志 :通过记录物理数据页内容变动情况(例如 DML\DDL 操作均表现为对数据页的修改)实现主备同步功能,备库会重做 redo 日志;
  • Redo 日志传输 : 主备库之间的 Redo 日志传输,以日志包 RLOG_PKG 为单位,主库通过 MAL 系统发送 Redo 日志到备库。各种不同数据守护类型的区别,就在于主库日志包 RLOG_PKG 的发送时机,以及备库收到 Redo 日志后的处理策略
  • Redo 日志重演 : 备库收到主库发送的 Redo 日志后,在物理数据页上,重新修改数据的过程,重演过程中备库会生成自身的 Redo 日志写入联机日志文件。
  • 守护进程 :守护进程(dmwatcher)是数据守护系统的核心工具,监控数据库实例的运行状态和主备库数据同步情况,在出现故障时启动各种处理预案。守护进程必须和被守护的数据库实例部署在同一台机器上
  • 监视器 : 监视器(dmmonitor)用来监控守护系统内守护进程、数据库实例信息,执行用户输入命令、监控实例故障、实现自动切换等。

3.归档类型

DM 数据守护集群的模式主要是根据归档类型去分类的,主要有三种归档模式。

注 : dmarch.ini 中的 ARCH_WAIT_APPLY = 1 时,为事务一致模式,等于 0 为 高性能模式。

4. KEEP_PKG 机制

主库的 RLOG_PKG 日志通过实时归档机制发送到备库后,备库将最新收到的 RLOG_PKG 保存在内存中,不马上启动重演,避免数据比主库的新,这个 RLOG_PKG 我们称之为 KEEP_PKG,而即时归档不存在这种机制。 备库 KEEP_PKG 日志重演的时机包括 :

  • 新旧替换 :备库收到新的 RLOG_PKG,这个时候会将当前保存的 KEEP_PKG 进行重演,并将新的 RLOG_PKG 放进 KEEP_PKG;
  • 收到主库重演命令 ;主库已经将 KEEP_PKG 对应的 Redo 日志写入redo log文件中,此时备库会启动 KEEP_PKG 的日志重演;
  • 备库切换为新主库 : 在监视器执行 SWITCHOVER 或 TAKEOVER 命令,或者确认监视器通知备库自动接管时,备库会在切换为 PRIMARY 模式之前,启动 KEEP_PKG 的日志重演。(无论此时主库是否正常)

  • 实时归档 : 主库生成联机 Redo 日志,当触发日志写文件操作后,日志线程先将 RLOG_PKG 发送到备库,备库接收后进行合法性校验(包括日志是否连续、备库状态是否 Open 等),不合法则返回错误信息,合法则作为 KEEP_PKG 保留在内存中,原有 KEEP_PKG 的 Redo 日志加入 Apply 任务队列进行 Redo日志重演,并响应主库日志接收成功;当有多个备库时,主库需要收到所有备库的响应消息才继续后续操作。
  • 即时归档
    • 即时归档的同步机制可以保证备库的 Redo 日志不会比主库的 Redo 日志多,因此即时备库不需要 KEEP_RLOG_PKG,收到 RLOG_PKG 直接加入到 Apply 任务系统,启动Redo 日志重演;
    • 备库故障或主备库之间网络故障,导致发送 RLOG_PKG 失败后,主库马上修改即时归档为 Invalid 状态,并切换数据库为 Suspend 状态;

5. 归档类型对比

REALTIME(实时归档) TIMELTY(即时归档)
归档配置REALTIME(高性能)REATIME(事务一致)TIMELY(事务一致)
主机日志发送时机写入联机日志前,发送到备库
修改备机归档状态主机dmwatcher通知主机,dmserver调整备机归档INVALID主机dmsever调整备机归档INVALID
备机响应时机加入重演线程队列后生成联机日志后
重演方式主机日志发送到KEEP_BUFFER主机日志直接发给重演线程
推动重演线程主机定时 5s发送通知消息;
备机接收到新的重演日志推动。
收到重演日志包推动(最大64M);
事务结束后强制推动

6. 参数调优


数据守护集群目前基本都是 4.0,基于此版本 RLOG 与 DATA 可并行处理的特性,需要对 REDOS_PARALLEL_NUM 涉及参数做出一定调整:

参数名称调整值默认值类型说明
REDOS_PARALLEL_NUM321静态并行日志重演的线程数,有效值范围(1~64)。1表示不进行并行日志重演
REDOS_PRE_LOAD10动态,系统级重演REDO日志时是否开启RLOG_PKG预加载功能。0:不开启;1:开启
TRX_VIEW_MODE10静态控制MVCC事务可见性判断的方式。0:事务启动前收集当前时刻的活动事务ID构造可见性视图,以确定某一特定事务是否对当前事务可见;1:系统维护事务提交历史,以此判断事务可见性

注 : TRX_VIEW_MODE=1 针对数据库数据库连接特别多,活动会话少空闲会话特别多的场景下性能提升比较大。该参数由202012月份引入

高性能 事务一致
归档配置REALTIME(高性能) REALTIME, ARCH_WAIT_APPLY=1
补充参数REDOS_PARALLEL_NUM=7
REDOS_PRE_LOAD=1
TRX_VIEW_MODE=1
手动切换数据守护:DW_MODE = AUTO
监视:MON_DW_CONFIRM = 0
自动切换数据守护:DW_MODE = AUTO
监视:MON_DW_CONFIRM = 1
多实例可以配置多个确认监视器,监视器个数一定是单数,具备少数服从多数原则
备注 TIMELY模式不建议部署, 网络不稳当情况下容易出现split

参考内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值