【与达梦同行】带DATA WATCH的三节点DSC集群故障案例分析

达梦DSC集群作为一种共享存储集群,具备高可用、高性能、负载均衡等企业级特性,而DM 数据守护(Data Watch)作为一种数据库级的热备方案,也是数据库异地容灾的首选解决方案。本文主要记录了在DATA WATCH 的三节点DSC集群运维过程中遇到的两个问题的处理过程。

环境说明

环境说明

CPU架构:X86_64

操作系统:银河麒麟v10

数据库版本:DM8

集群环境:带一个实时备库的三节点DSC集群

二、故障一:备库分离后无法恢复主备关系

1、故障描述

在压测过程中,DSC主库到备库的实时归档状态变为了INVALID,DSC主库可继续提供服务,但备库已被分离,不再应用日志,且无法通过attach的方式重新加入主备集群。

2、同步原理

正常的压测过程中,备库会被自动分离?在弄清楚这个问题之前,我们需要对数据守护的实现原理和机制进行深入研究。

达梦数据守护环境主要用到两种归档类型:实时归档和即时归档。当前测试环境的归档类型为实时归档+高性能模式。

2.1实时归档(REALTIME)

主备环境中,主库在Redo日志写入联机日志文件之前,先通过MAL系统把自己的Redo日志发送给备库,等待备库响应后,再写入自己的联机日志文件。

2.2即时归档(TIMELY)

主备环境中,主库在Redo日志写入联机日志文件之后,再通过MAL系统把自己的Redo日志发送给备库。

2.3各归档类型差异

2.3.1发送时机

主库发送Redo日志的时机,分别为写入联机日志文件之前和之后。

2.3.2备库重演和响应主库的时机

高性能和事务一致性,在配置dmarch.ini时配置参数ARCH_WAIT_APPLY控制,0表示高性能,即备库收到主库Redo日志后马上响应主库;1表示事务一致性,即备库收到主库Redo日志后马上进行重演,待重演完毕后再响应主库。即时归档该参数默认值为1,实时归档该参数默认为0。

2.3.3KEEP_PKG

实时归档运行中,备库中设置了KEEP_PKG,用于存放备库收到的主库通过MAL系统发送的Redo日志包,并不马上进行重演;而即时归档则不存在这种机制。

如此设置的原因在于:实时归档是在收到主库Redo日志后马上响应主库,而主库在收到备库响应后再将Redo日志写入自己的联机日志文件,如果没有KEEP_PKG,备库收到后马上进行了重演,而主库在准备写入联机日志文件前故障,则会导致备库的数据比主库的还要多,造成数据不一致;即时归档中则由于主库在发给备库之前已经将Redo日志写入了联机日志文件中,所以不存在这种造成数据不一致的隐患。

       实时归档进行重演的时机主要有:

1)备库收到新的 RLOG_PKG,会将当前保存的 KEEP_PKG 日志重演,并将新收到的RLOG_PKG 再次放入 KEEP_PKG 中。

2)主库会定时将 FILE_LSN (已写入联机日志文件的日志包的最大LSN)等信息发送到备库,当主库 FILE_LSN 等于备库 SLSN(备库明确可重演的最大 LSN 值) 时,表明主库已经将 KEEP_PKG 对应的 Redo 日志写入联机日志文件中,此时备库会启动KEEP_PKG 的日志重演。

3)备库切换为新主库,在监视器执行 SWITCHOVER 或 TAKEOVER 命令,或者确认监视器通知备库自动接管时,备库会在切换为 PRIMARY 模式之前,启动 KEEP_PKG 的日志重演。

下面通过一张图对上述原理和实际应用场景进行了一个总结

在发生故障的环境中,使用的是实时归档+高性能模式的组合,在该配置下,主库的Redo日志将在写入联机日志之前就发送给了备库,备库收到后即刻相应主库,并不马上进行重演。

3、问题分析

压测完毕后,监视器发现备库的RSTAT

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值