达梦数据库踩坑系统之即时归档


外向笑小鸭子
外向笑小鸭子 2024-01-12 12:04:39 51753 赞同 0 反对 0
分类: 资源 标签: 运维
达梦数据库踩坑系统之即时归档

图片

环境说明:

  •  
  •  
版本:达梦 8.1.3.26架构:达梦守护集群

问题说明:

由于服务器资源有限,将monitor监控器部署在了备库服务器上,DM8数据守护架构归档模式支持多种类型,实时归档、即时归档等,搭建数据库时,考虑到实时归档需要单独维护KEEP_RLOG_PKG部分,猜想出问题的概率可能会更大一些,所以选择了即时归档,数据库使用一段时间,有一天突然发现主备服务器之间心跳网卡故障了,守护集群发生了组分裂(或称为脑裂):

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
show global info2023-10-12 15:22:33 #================================================================================#GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG  GRP1             123456      FALSE           AUTO            FALSE     <<DATABASE GLOBAL INFO:>>DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT    192.16.12.11        33333        2023-10-12 15:22:33  GLOBAL    VALID     OPEN           CJC01             OK        1     1     OPEN        PRIMARY   DSC_OPEN       TIMELY    VALID    ERROR DATABASE:DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT    192.16.12.12        33333        2023-10-12 15:21:30  GLOBAL    SPLIT     STARTUP        CJC02             OK        1     1    MOUNT       PRIMARY   DSC_OPEN       TIMELY    VALID    #================================================================================#

其中备库WCTLSTAT为SPLIT,WSTATUS为STARTUP,ISTATUS为MOUNT,IMODE为PRIMARY,出现了双主的情况。

影响范围:

1.主备同步中断。

测试通过dm_svc.conf服务名进行连接数据库,LOGIN_MODE=(1)只连接主库,多次测试可以连接到正常的PRIMARY,理论上对应用访问数据库没影响。

修复:

待心跳网络恢复后,备库没有自动恢复,沟通原厂技术,此类问题只能通过重建备库来解决。

问题原因:

timely即时归档模式下,数据先写到本地,再发送备库,如果在发送期间心跳网络故障,主、备库之间无法通信,由于本次案例的监控器在备库,监控器可以正常和备库通信,无法和主库通信,会判断主库故障,发生主、备切换,但由于主从数据不一致,所以备库角色虽然切换为PRIMARY,但状态只能到MOUNT,无法OPEN,从而发生了SPLIT。

解决方案:

如何避免类似问题再次发生。

  •  
  •  
1.监控器放在独立的服务器,不能主、备数据库部署在一起。2.归档模式从即时归档更改为实时归档。

实时归档说明:

与本地归档写入保存在磁盘中的日志文件不同,实时归档(Realtime)将主库产生的 Redo 日志通过 MAL 系统传递到备库,实时归档是实时主备和 MPP 主备的实现基础。实时归档只在主库生效,一个主库可以配置 1~8 个实时备库。

实时归档的执行流程是,主库在 Redo 日志(RLOG_PKG)写入联机日志文件前,将 Redo 日志发送到备库,备库收到 Redo 日志(RLOG_PKG)后标记为 KEEP_RLOG_PKG,将原 KEEP_RLOG_PKG 加入日志重演任务系统,并马上响应主库(高性能模式),不需要等待 Redo 日志重演结束后再响应主库。主库收到备库的响应消息,确认备库已经收到 Redo 日志后,再将 Redo 日志写入联机日志文件中。

图片

什么是KEEP_RLOG_PKG呢,有什么作用?

KEEP_RLOG_PKG 介绍

主库的 RLOG_PKG 日志通过实时归档机制发送到备库后,备库将最新收到的 RLOG_PKG 保存在内存中,不马上启动重演,这个 RLOG_PKG 我们称之为 KEEP_RLOG_PKG。

引入 KEEP_RLOG_PKG 的主要目的是,避免下述场景中,主库故障重启后不必要的主备切换,减少用户干预。

场景说明(实时主备或 MPP 主备):

1.用户登录主库 A 执行

  •  
  •  
  •  
CREATE TABLE TX(C1 INT);INSERT INTO TX VALUES(1);COMMIT;

其中 COMMIT 操作将触发实时归档,发送 RLOG_PKG 到备库 B。

2.备库 B 收到 RLOG_PKG,响应主库 A,并启动日志重演。

3.主库 A 在 RLOG_PKG 写入联机日志文件之前故障。

4.主库 A 重新启动后,由于 RLOG_PKG 没有写入联机日志文件,之前插入 TX 表的数据丢失;但此时备库 B 已经重演日志成功,TX 表中已经插入一行数据。

上述场景中,主备库数据不再保持一致,必须将备库 B 切换为主库,并重新从 B 同步数据到 A。

如果配置的是手动切换模式,则必须要有用户干预,进行备库接管后,才能恢复数据库服务。

引入 KEEP_RLOG_PKG 后,备库 B 收到主库 A 发送的 RLOG_PKG,并不会马上启动日志重演,主库 A 重启后,守护进程 A 检测到备库 B 存在 KEEP_RLOG_PKG,通知备库 B 丢弃 KEEP_RLOG_PKG 后,直接 Open 主库 A,就可以继续提供数据库服务。

并且,这些操作是由守护进程自动完成,不需要用户干预。

如果备库自动接管、或者用户发起备库接管命令,那么备库的 KEEP_RLOG_PKG 将会启动重演,不管主库是否已经将 KEEP_RLOG_PKG 对应的 Redo 日志写入联机日志文件中,备库接管时的 APPLY_LSN 一定是大于等于主库的 FILE_LSN。

当故障主库重启后,仍然可以作为备库,自动重新加入数据守护系统。

注意

即时归档在RLOG_PKG写入主库联机Redo日志文件后,再发送RLOG_PKG到备库,因此即时备库没有KEEP_RLOG_PKG。

归档类型

图片

测试实时归档下心跳网卡中断场景,实验如下:

归档模式更改为REALTIME

监控器在备库上

  •  
  •  
  •  
  •  
  •  
  •  
  •  
ip a3: enp0s8: <BRCJCDCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000    link/ether 08:00:27:d1:e6:01 brd ff:ff:ff:ff:ff:ff    inet 192.16.12.12/24 brd 192.16.12.255 scope global noprefixroute enp0s8
[root@cjc-db-04 root]# ifdown enp0s8Device 'enp0s8' successfully disconnected.

备库确认监控器信息

主、备库WSTATUS状态为ERROR,备库IMODE还是STANDBY,没有切换为PRIMARY,没有发生SPLIT。

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
#================================================================================#[monitor]         2023-10-12 15:19:08: Clean request of dmwatcher processer CJC02 success[monitor]         2023-10-12 15:19:08: Switchover instance CJC01 success
[monitor] 2023-10-12 15:19:09: Dmwatcher process CJC01 status switching [OPEN-->RECOVERY] WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN 2023-10-12 15:19:09 RECOVERY OK CJC01 OPEN PRIMARY VALID 11 49962 49962
[monitor] 2023-10-12 15:19:11: Dmwatcher process CJC01 status switching [RECOVERY-->OPEN] WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN 2023-10-12 15:19:11 OPEN OK CJC01 OPEN PRIMARY VALID 11 49963 49963
[monitor] 2023-10-12 15:21:52: Received message timeout from(CJC01) WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN 2023-10-12 15:21:30 ERROR OK CJC01 OPEN PRIMARY VALID 11 50009 50009
[monitor] 2023-10-12 15:21:52: Received message timeout from(CJC02) WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN 2023-10-12 15:21:30 ERROR OK CJC02 OPEN STANDBY VALID 11 50009 50009
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
show global info2023-10-12 15:24:06 #================================================================================#GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG  GRP1             123456      TRUE            AUTO            FALSE     
ERROR DATABASE:
<<DATABASE GLOBAL INFO:>>DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT 192.16.12.11 33333 2023-10-12 15:21:30 GLOBAL VALID ERROR CJC01 OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALID
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT 192.16.12.12        33333        2023-10-12 15:21:30  GLOBAL    VALID     ERROR          CJC02             OK        1     1     OPEN        STANDBY   DSC_OPEN       REALTIME  VALID    #================================================================================#

监控器信息

主库变为SUSPEND状态,因为监控器在备库服务器上。 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
[monitor]         2023-10-12 15:21:51: Dmwatcher process CJC01 status switching [OPEN-->STARTUP]                   WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN                              2023-10-12 15:21:51  STARTUP        OK        CJC01             SUSPEND     PRIMARY   VALID    11       50009           50016           

[monitor] 2023-10-12 15:21:51: Dmwatcher process CJC01 status switching [STARTUP-->MON CONFIRM] WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN 2023-10-12 15:21:51 MON CONFIRM OK CJC01 SUSPEND PRIMARY VALID 11 50009 50016

[monitor] 2023-10-12 15:21:52: [!!! Instance CJC02 dmwatcher's DW_MODE is configured as AUTO, but this dmmonitor is not in CONFIRM mode, cannot takeover instance CJC02 automatically !!!]

[monitor] 2023-10-12 15:21:52: Received message timeout from(CJC02) WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN 2023-10-12 15:21:30 ERROR OK CJC02 OPEN STANDBY VALID 11 50009 50009   
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
show global info2023-10-12 15:22:33 #================================================================================#GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG  GRP1             123456      FALSE           AUTO            FALSE     
<<DATABASE GLOBAL INFO:>>DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT 192.16.12.11 33333 2023-10-12 15:22:33 GLOBAL VALID MON CONFIRM CJC01 OK 1 1 SUSPEND PRIMARY DSC_OPEN REALTIME VALID
ERROR DATABASE:DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT 192.16.12.12 33333 2023-10-12 15:21:30 GLOBAL VALID ERROR CJC02 OK 1 1 OPEN STANDBY DSC_OPEN REALTIME VALID #================================================================================#

主库是SUSPEND 状态

  •  
  •  
  •  
  •  
  •  
  •  
SQL> select name,status$,mode$ from v$instance;LINEID     name status$ mode$  ---------- ---- ------- -------1          CJC01 SUSPEND PRIMARY
used time: 157.881(ms). Execute id is 600.

备库

  •  
  •  
  •  
  •  
  •  
  •  
  •  
[dmdba@cjc-db-04 ~]$ disql SYSDBA/***:portSQL> select name,status$,mode$ from v$instance;LINEID     name status$ mode$  ---------- ---- ------- -------1          CJC02 OPEN    STANDBY
used time: 4.023(ms). Execute id is 2000.

恢复备库心跳网卡

  •  
  •  
[root@cjc-db-04 root]# ifup enp0s8Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/11)

主、备库自动恢复,无需人为干预

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
#================================================================================#[monitor]         2023-10-12 15:26:20: Dmwatcher process CJC02 status switching [NONE-->OPEN]                   WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN                              2023-10-12 15:26:20  OPEN           OK        CJC02             OPEN        STANDBY   VALID    11       50009           50009           

[monitor] 2023-10-12 15:26:20: Dmwatcher process CJC01 status switching [NONE-->MON CONFIRM] WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN 2023-10-12 15:26:20 MON CONFIRM OK CJC01 SUSPEND PRIMARY VALID 11 50009 50018

[monitor] 2023-10-12 15:26:20: Dmwatcher process CJC01 status switching [MON CONFIRM-->FAILOVER] WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN 2023-10-12 15:26:20 FAILOVER OK CJC01 SUSPEND PRIMARY VALID 11 50009 50018

[monitor] 2023-10-12 15:26:23: Dmwatcher process CJC01 status switching [FAILOVER-->OPEN] WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN 2023-10-12 15:26:22 OPEN OK CJC01 OPEN PRIMARY VALID 11 50018 50018

[monitor] 2023-10-12 15:26:23: Dmwatcher process CJC01 status switching [OPEN-->RECOVERY] WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN 2023-10-12 15:26:22 RECOVERY OK CJC01 OPEN PRIMARY VALID 11 50018 50018

[monitor] 2023-10-12 15:26:27: Dmwatcher process CJC01 status switching [RECOVERY-->OPEN] WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN 2023-10-12 15:26:27 OPEN OK CJC01 OPEN PRIMARY VALID 11 50019 50019
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
show global info2023-10-12 15:26:38 #================================================================================#GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG  GRP1             123456      TRUE            AUTO            FALSE     
<<DATABASE GLOBAL INFO:>>DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT 192.16.12.11 33333 2023-10-12 15:26:37 GLOBAL VALID OPEN CJC01 OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALID
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT 192.16.12.12        33333        2023-10-12 15:26:37  GLOBAL    VALID     OPEN           CJC02             OK        1     1     OPEN        STANDBY   DSC_OPEN       REALTIME  VALID    #================================================================================#

参考:

  •  
  •  
https://eco.dameng.com/document/dm/zh-cn/pm/data-watch-overview.htmlhttps://eco.dameng.com/document/dm/zh-cn/pm/data-watch-overview.html

###chenjuchao 20231213###

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
外向笑小鸭子L0
粉丝 0 资源 87 + 关注 私信
最近热门资源
银河麒麟桌面操作系统备份用户数据  123
统信桌面专业版【全盘安装UOS系统】介绍  116
银河麒麟桌面操作系统安装佳能打印机驱动方法  108
银河麒麟桌面操作系统 V10-SP1用户密码修改  101
最近下载排行榜
银河麒麟桌面操作系统备份用户数据 0
统信桌面专业版【全盘安装UOS系统】介绍 0
银河麒麟桌面操作系统安装佳能打印机驱动方法 0
银河麒麟桌面操作系统 V10-SP1用户密码修改 0
作者收入月榜
1

prtyaa 收益393.62元

2

zlj141319 收益217.85元

3

1843880570 收益214.2元

4

IT-feng 收益208.98元

5

风晓 收益208.24元

6

777 收益172.71元

7

Fhawking 收益106.6元

8

信创来了 收益105.84元

9

克里斯蒂亚诺诺 收益91.08元

10

技术-小陈 收益79.5元

请使用微信扫码

加入交流群

请使用微信扫一扫!