专栏/培训园地/ 文章详情 /

达梦主备守护集群组件概述

海贼王BL 2024/10/30 384 0 0
摘要

image.png

达梦主备守护集群组件概述

1、达梦监视器monitor
①监控数据守护进程发送的消息(主、备数据库状态变化、故障切换过程中数据库模式、状态变化的完整过程);
②用户可以在监视器上输入命令,启动、停止守护进程的监控功能,执行主备库切换、备库故障接管等操作;
③发起故障自动接管命令,主库发生故障时,挑选符合接管条件的备库,并通知备库执行接管操作。

2、守护进程dmwatcher
守护进程负责监控数据库运行状态,必要时重启数据库服务。守护进程和实例链路建立成功后,数据库实例定时发送信息到守护进程,发送到守护进程的内容包括:实例进程ID、实例名、数据库模式、数据库状态、FILE_SEQ、FILE_LSN、CUR_SEQ、CUR_LSN、MAL链路状态、归档状态、公钥、MPP控制文件等信息。
守护进程更新本地记录的实例信息后,同时记录该时间戳。当检测到实例进程ID已经不存在或者超过一段时间没有收到实例消息(INST_ERROR_TIME),则会认定实例故障。如果配置了自动重启,则会将实例重新拉起。

3、主备数据同步
达梦主备数据同步原理图:
image.png

主备集群同步机制归档流程:
image.png

3.1、实时主备同步流程:
1> DDL和DML提交事务操作使主库产生Redo 信息,Redo 信息会存放在RLOG_PKG(Redo 日志包)中,在此过程中RLOG_PKG存放在内存当中,暂时不会写入联机日志中;

2> 实时同步:MAL通讯系统将主库的RLOG_PKG包通过实时归档机制发送到备库B中,备库将最新收到的RLOG_PKG保存在内存中,然后进行校验是否合法,合法后标记为 KEEP_PKG,不会马上启动重演,但会将之前的KEEP_PKG通过APPLY线程队列加入日志重演任务系统,并马上响应主库,不需要等待之前的Redo日志重演结束后再响应主库;

3> 为了防止备库上重演日志堆积太多、占用大量内存、备库重演无响应导致主库挂住不能提供服务等情况的发生 ,可通过适当调整 BUFFER 、REDOS_PRE_LOAD 、REDOS_BUF_SIZE、REDOS_BUF_NUM、REDOS_MAX_DELAY 这几个参数达到加快备库重演速度、达到设置的堆积上限后延迟响应主机 、 备库自动宕机等目的 。 其中REDOS_BUF_SIZE,REDOS_BUF_NUM 同时起作用,只要达到一个条件即延迟响应。
image.png
(注意:备库确认收到主库发送的Redo 日志,并不保证备库已经完成重演这些 Redo 日志,因此主备库之间的数据同步存在一定的时间差。一般情况下延迟时间非常短暂,用户几乎感觉不到,不能严格保证事务一致性。)

1.备库收到新的 RLOG_PKG
备库收到新的 RLOG_PKG 时,会将当前保存的 KEEP_PKG 日志重演,并将新收到的RLOG_PKG 再次放入KEEP_PKG 中。
2. 收到主库的重演命令
主库会定时将 FILE_LSN 等信息发送到备库,当主库 FILE_LSN 等于备库 SLSN 时,表明主库已经将KEEP_PKG 对应的 Redo 日志写入联机日志文件中,此时备库会启动KEEP_PKG 的日志重演。
3. 备库切换为新主库
在监视器执行 SWITCHOVER 或 TAKEOVER 命令,或者确认监视器通知备库自动接管时,备库会在切换为PRIMARY 模式之前,启动 KEEP_PKG 的日志重演。

复制

4> 主库收到备库的响应消息,确认备库已经收到 Redo 日志后,主库再将 Redo 日志写入联机日志文件中。

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

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

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

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

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

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

2、监视器模式分类和区别
达梦监视器分2种类型:确认监视器和普通监视器。两者区别在于:确认监视器除了具备监控模式监视器所有功能外,还具有状态确认和自动接管两个功能。

监控模式(dmmonitor.ini: MON_DW_CONFIRM=0)
确认模式(dmmonitor.ini: MON_DW_CONFIRM=1)
两种监视器的配置如下:

1、确认监视器的配置文件 dmmonitor.ini

MON_LOG_PATH = /home/dmdba/dmdbms/data/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453332 #组 GRP1 的唯一 OGUID 值
#以下配置为监视器到组 GRP1 的守护进程的连接信息,以IP:PORT的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 172.16.1.141:52141
MON_DW_IP = 172.16.1.142:52142

复制

2、普通监视器的配置文件 dmmonitor1.ini

MON_LOG_PATH = /home/dmdba/dmdbms/data/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453332 #组 GRP1 的唯一 OGUID 值
MON_DW_IP = 172.16.1.141:52141
MON_DW_IP = 172.16.1.142:52142

复制

3、操作命令:

list列出所有守护进程配置信息。
show显示全局信息。
login登录监视器。
logout登出监视器
更多命令使用方法可以输入help查找。

复制

3、数据同步方式
达梦的主备数据同步方式分为实时和即时主备两种,类似oracle dg的数据保护模式:最大保护、最大可用、最大性能,而达梦主备同步模式分为:事务一致模式(实时)和高性能模式(即时)。由dmarch.ini配置文件中的ARCH_WAIT_APPLY 配置项决定:

为0表示高性能模式
为1表示事务一致模式

1、实时主备(实时主备默认是高性能模式模式)

2.备库收到 Redo 日志(RLOG_PKG)后标记为 KEEP_PKG,
3.将原 KEEP_PKG加入日志重演任务系统,并马上响应主库。
4.不需要等待 Redo 日志重演结束后再响应主库。
5.主库收到备库的响应消息,确认备库已经收到 Redo 日志后,再将 Redo 日志写入联机日志文件中。
6.ARCH_WAIT_APPLY 配置项默认值为 0,即采用高性能模式

复制

2、即时主备(即时主备默认是事务一致模式)

2 通过 MAL 系统将 Redo日志发送到备库。
3 即时归档,ARCH_WAIT_APPLY 默认是1,重演完后响应主库。
4 即时归档的同步机制可以保证备库的 Redo 日志不会比主库的 Redo 日志多。
5 备库故障或主备库之间网络故障,导致发送 RLOG_PKG 失败后,主库马上修改即时归档为 Invalid 状态,并切换数据库为 Suspend 状态。

复制

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服