DW集群自动切换

本文详细介绍了DM集群在主库数据库异常宕机、主库数据库与守护进程同时异常及主机网络异常情况下的自动切换过程,包括配置修改、服务启动和故障模拟。通过监控器日志展示了切换过程中守护进程和实例的状态变化,确保了集群的高可用性。

DM集群系列—DW集群自动切换

请参考上一篇手动切换步骤完成前面配置

二、主备自动切换

2.1、参考1.3配置,主要修改的地方如下

1、修改dmwatcher.ini中的DW_MODE模式
[dmdba@dmp DAMENG]$ vi dmwatcher.ini
 [GDW1]
  DW_TYPE                  = GLOBAL  #全局守护类型
  DW_MODE                  = AUTO  #故障手动切换模式(AUTO自动)
  DW_ERROR_TIME            = 20  #远程守护进程故障认定时间
  INST_ERROR_TIME          = 20  #本地实例故障认定时间
  INST_RECOVER_TIME        = 60  #主库守护进程启动恢复的间隔时间
  INST_OGUID               = 45331  #守护系统唯一OGUID值
  INST_INI                 = /dm8/data/DAMENG/dm.ini  #dm.ini文件路径       
  INST_AUTO_RESTART        = 1  #打开实例的自动启动功能
  INST_STARTUP_CMD         = /dm8/bin/dmserver  #命令行方式启动       
  RLOG_SEND_THRESHOLD      = 0  #指定主库发送日志到备库的时间阈值,默认关闭
  RLOG_APPLY_THRESHOLD     = 0  #指定备库重演日志的时间阈值,默认关闭6

2、创建dmmonitor_auto.ini
[dmdba@~]# vi /dm8/bin/dmmonitor_manual.ini
MON_DW_CONFIRM             = 1  #0为非确认,1为确认
MON_LOG_PATH               = ../log  #监视器日志文件存放路径
MON_LOG_INTERVAL           = 60  #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE          = 512  #单个日志大小,单位MB
MON_LOG_SPACE_LIMIT        = 2048  #日志上限,单位MB

[GDW1]
  MON_INST_OGUID           = 45331  #组GDW1的唯一OGUID 值
  MON_DW_IP                = 192.168.10.100:5436  #IP对应MAL_HOST,PORT对应MAL_DW_PORT
  MON_DW_IP                = 192.168.10.101:5436

2.2、启动服务

按照5.3.4.3集群的停止和启动顺序进行服务的重启

2.3、模拟故障进行自动切换

2.3.1、主库数据库异常宕机,守护进程正常

--登录数据库进行shutdown abort关库
[dmdba@dmp DAMENG]$ disql SYSDBA/SYSDB
[-2501]:用户名或密码错误.
disql V8
用户名:SYSDBA
密码:

服务器[LOCALHOST:5236]:处于主库打开状态
登录使用时间 : 3.611(ms)
SQL> shutdown abort;
操作已执行
已用时间: 0.569(毫秒). 执行号:0.
SQL> exit

--查看监视器
[monitor]         2022-05-26 14:15:52: 实例DW1_01[PRIMARY, OPEN, ISTAT_SAME:TRUE]故障
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-05-26 14:15:52  STARTUP        ERROR     DW1_01           OPEN        PRIMARY   VALID    7        54012           54013           

[monitor]         2022-05-26 14:15:52: 守护进程(DW1_01)状态切换 [OPEN-->STARTUP]
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-05-26 14:15:52  STARTUP        ERROR     DW1_01           OPEN        PRIMARY   VALID    7        54012           54013           

[monitor]         2022-05-26 14:15:52: 检测到PRIMARY实例故障,开始对组(GDW1)执行自动接管

[monitor]         2022-05-26 14:15:52: 通知组(GDW1)当前活动的守护进程设置MID
[monitor]         2022-05-26 14:15:52: 通知组(GDW1)当前活动的守护进程设置MID成功
[monitor]         2022-05-26 14:15:52: 开始使用实例DW1_02接管
[monitor]         2022-05-26 14:15:52: 通知守护进程DW1_02切换TAKEOVER状态
[monitor]         2022-05-26 14:15:52: 守护进程(DW1_02)状态切换 [OPEN-->TAKEOVER]
[monitor]         2022-05-26 14:15:53: 切换守护进程DW1_02为TAKEOVER状态成功
[monitor]         2022-05-26 14:15:53: 实例DW1_02开始执行SP_SET_GLOBAL_DW_STATUS(0, 7)语句
[monitor]         2022-05-26 14:15:53: 实例DW1_02执行SP_SET_GLOBAL_DW_STATUS(0, 7)语句成功
[monitor]         2022-05-26 14:15:53: 实例DW1_02开始执行SP_APPLY_KEEP_PKG()语句
[monitor]         2022-05-26 14:15:54: 实例DW1_02执行SP_APPLY_KEEP_PKG()语句成功
[monitor]         2022-05-26 14:15:54: 实例DW1_02开始执行ALTER DATABASE MOUNT语句
[monitor]         2022-05-26 14:15:54: 实例DW1_02执行ALTER DATABASE MOUNT语句成功
[monitor]         2022-05-26 14:15:54: 实例DW1_02开始执行ALTER DATABASE PRIMARY语句
[monitor]         2022-05-26 14:15:54: 实例DW1_02执行ALTER DATABASE PRIMARY语句成功
[monitor]         2022-05-26 14:15:54: 通知实例DW1_02修改所有归档状态无效
[monitor]         2022-05-26 14:15:54: 修改所有实例归档为无效状态成功
[monitor]         2022-05-26 14:15:54: 实例DW1_02开始执行ALTER DATABASE OPEN FORCE语句
[monitor]         2022-05-26 14:15:54: 实例DW1_02执行ALTER DATABASE OPEN FORCE语句成功
[monitor]         2022-05-26 14:15:54: 实例DW1_02开始执行SP_SET_GLOBAL_DW_STATUS(7, 0)语句
[monitor]         2022-05-26 14:15:54: 实例DW1_02执行SP_SET_GLOBAL_DW_STATUS(7, 0)语句成功
[monitor]         2022-05-26 14:15:54: 通知守护进程DW1_02切换OPEN状态
[monitor]         2022-05-26 14:15:54: 守护进程(DW1_02)状态切换 [TAKEOVER-->OPEN]
[monitor]         2022-05-26 14:15:55: 切换守护进程DW1_02为OPEN状态成功
[monitor]         2022-05-26 14:15:55: 通知组(GDW1)的守护进程执行清理操作
[monitor]         2022-05-26 14:15:55: 清理守护进程(DW1_01)请求成功
[monitor]         2022-05-26 14:15:55: 清理守护进程(DW1_02)请求成功
[monitor]         2022-05-26 14:15:55: 使用实例DW1_02接管成功

[monitor]         2022-05-26 14:15:55: 组(GDW1)使用实例DW1_02自动接管成功

show[monitor]         2022-05-26 14:16:13: 实例DW1_01[STANDBY, MOUNT, ISTAT_SAME:TRUE]恢复正常
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-05-26 14:16:13  UNIFY EP       OK        DW1_01           MOUNT       STANDBY   INVALID  7        54012           54012           

[monitor]         2022-05-26 14:16:13: 守护进程(DW1_01)状态切换 [STARTUP-->UNIFY EP]
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-05-26 14:16:13  UNIFY EP       OK        DW1_01           MOUNT       STANDBY   INVALID  7        54012           54012           

[monitor]         2022-05-26 14:16:13: 守护进程(DW1_01)状态切换 [UNIFY EP-->STARTUP]
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-05-26 14:16:13  STARTUP        OK        DW1_01           OPEN        STANDBY   INVALID  7        54012           54012           

 p[monitor]         2022-05-26 14:16:13: 守护进程(DW1_01)状态切换 [STARTUP-->OPEN]
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-05-26 14:16:13  OPEN           OK        DW1_01           OPEN        STANDBY   INVALID  7        54012           54012           

[monitor]         2022-05-26 14:16:14: 守护进程(DW1_02)状态切换 [OPEN-->RECOVERY]
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-05-26 14:16:14  RECOVERY       OK        DW1_02           OPEN        PRIMARY   VALID    8        56464           56464           

[monitor]         2022-05-26 14:16:16: 守护进程(DW1_02)状态切换 [RECOVERY-->OPEN]
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-05-26 14:16:16  OPEN           OK        DW1_02           OPEN        PRIMARY   VALID    8        56465           56465           

show global info
2022-05-26 14:17:12 
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG  
GDW1             45331       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.168.10.101      5436         2022-05-26 14:17:12  GLOBAL    VALID     OPEN           DW1_02           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.168.10.100      5436         2022-05-26 14:17:12  GLOBAL    VALID     OPEN           DW1_01           OK        1     1     OPEN        STANDBY   DSC_OPEN       REALTIME  VALID    

#=============================================================================#

2.3.2、主库数据库、守护进程同时异常

--同时停止守护进程和数据库服务进程
[dmdba@dms1 ~]$ DmWatcherServiceWatcher stop && DmServiceDW1_02 stop
Stopping DmWatcherServiceWatcher: [ OK ]
Stopping DmServiceDW1_02: [ OK ]
[dmdba@dms1 ~]$ 

--查看监视器
[monitor]         2022-05-26 14:19:06: 接收守护进程(DW1_02)消息超时
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-05-26 14:18:45  ERROR          OK        DW1_02           OPEN        PRIMARY   VALID    8        56517           56518           

[monitor]         2022-05-26 14:19:06: 检测到PRIMARY实例故障,开始对组(GDW1)执行自动接管

[monitor]         2022-05-26 14:19:06: 通知组(GDW1)当前活动的守护进程设置MID
[monitor]         2022-05-26 14:19:06: 通知组(GDW1)当前活动的守护进程设置MID成功
[monitor]         2022-05-26 14:19:06: 开始使用实例DW1_01接管
[monitor]         2022-05-26 14:19:06: 通知守护进程DW1_01切换TAKEOVER状态
[monitor]         2022-05-26 14:19:06: 守护进程(DW1_01)状态切换 [OPEN-->TAKEOVER]
[monitor]         2022-05-26 14:19:07: 切换守护进程DW1_01为TAKEOVER状态成功
[monitor]         2022-05-26 14:19:07: 实例DW1_01开始执行SP_SET_GLOBAL_DW_STATUS(0, 7)语句
[monitor]         2022-05-26 14:19:07: 实例DW1_01执行SP_SET_GLOBAL_DW_STATUS(0, 7)语句成功
[monitor]         2022-05-26 14:19:07: 实例DW1_01开始执行SP_APPLY_KEEP_PKG()语句
[monitor]         2022-05-26 14:19:07: 实例DW1_01执行SP_APPLY_KEEP_PKG()语句成功
[monitor]         2022-05-26 14:19:07: 实例DW1_01开始执行ALTER DATABASE MOUNT语句
[monitor]         2022-05-26 14:19:07: 实例DW1_01执行ALTER DATABASE MOUNT语句成功
[monitor]         2022-05-26 14:19:07: 实例DW1_01开始执行ALTER DATABASE PRIMARY语句
[monitor]         2022-05-26 14:19:07: 实例DW1_01执行ALTER DATABASE PRIMARY语句成功
[monitor]         2022-05-26 14:19:07: 通知实例DW1_01修改所有归档状态无效
[monitor]         2022-05-26 14:19:07: 修改所有实例归档为无效状态成功
[monitor]         2022-05-26 14:19:07: 实例DW1_01开始执行ALTER DATABASE OPEN FORCE语句
[monitor]         2022-05-26 14:19:07: 实例DW1_01执行ALTER DATABASE OPEN FORCE语句成功
[monitor]         2022-05-26 14:19:07: 实例DW1_01开始执行SP_SET_GLOBAL_DW_STATUS(7, 0)语句
[monitor]         2022-05-26 14:19:08: 实例DW1_01执行SP_SET_GLOBAL_DW_STATUS(7, 0)语句成功
[monitor]         2022-05-26 14:19:08: 通知守护进程DW1_01切换OPEN状态
[monitor]         2022-05-26 14:19:09: 守护进程(DW1_01)状态切换 [TAKEOVER-->OPEN]
[monitor]         2022-05-26 14:19:09: 切换守护进程DW1_01为OPEN状态成功
[monitor]         2022-05-26 14:19:09: 通知组(GDW1)的守护进程执行清理操作
[monitor]         2022-05-26 14:19:09: 清理守护进程(DW1_01)请求成功
[monitor]         2022-05-26 14:19:09: 使用实例DW1_01接管成功

[monitor]         2022-05-26 14:19:09: 组(GDW1)使用实例DW1_01自动接管成功

show global info
2022-05-26 14:19:54 
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG  
GDW1             45331       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.168.10.100      5436         2022-05-26 14:19:53  GLOBAL    VALID     OPEN           DW1_01           OK        1     1     OPEN        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.168.10.101      5436         2022-05-26 14:18:45  GLOBAL    VALID     ERROR          DW1_02           OK        1     1     OPEN        PRIMARY   DSC_OPEN       REALTIME  VALID    

--启动守护进程和数据库服务
[dmdba@dms1 ~]$ DmServiceDW1_02 start && DmWatcherServiceWatcher start
Starting DmServiceDW1_02: [ OK ]
Starting DmWatcherServiceWatcher: [ OK ]

#================================================================================#

[monitor]         2022-05-26 14:21:27: 守护进程(DW1_02)状态切换 [NONE-->STARTUP]
[monitor]         2022-05-26 14:21:27: 守护进程(DW1_02)状态切换 [STARTUP-->UNIFY EP]
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-05-26 14:21:27  UNIFY EP       OK        DW1_02           MOUNT       STANDBY   INVALID  8        56751           56751           

[monitor]         2022-05-26 14:21:28: 守护进程(DW1_02)状态切换 [UNIFY EP-->OPEN]
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-05-26 14:21:27  OPEN           OK        DW1_02           OPEN        STANDBY   INVALID  8        56751           56751           

[monitor]         2022-05-26 14:21:28: 守护进程(DW1_01)状态切换 [OPEN-->RECOVERY]
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-05-26 14:21:28  RECOVERY       OK        DW1_01           OPEN        PRIMARY   VALID    9        59141           59142           

[monitor]         2022-05-26 14:21:30: 守护进程(DW1_01)状态切换 [RECOVERY-->OPEN]
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-05-26 14:21:30  OPEN           OK        DW1_01           OPEN        PRIMARY   VALID    9        59142           59142           

show global info
2022-05-26 14:21:51 
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG  
GDW1             45331       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.168.10.100      5436         2022-05-26 14:21:51  GLOBAL    VALID     OPEN           DW1_01           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.168.10.101      5436         2022-05-26 14:21:51  GLOBAL    VALID     OPEN           DW1_02           OK        1     1     OPEN        STANDBY   DSC_OPEN       REALTIME  VALID  

2.3.3、主机网络异常,主备库之间、主库与监视器之间连接异常

--停止虚拟机网卡连接
[root@dmp ~]# service network stop
Stopping network (via systemctl): 【确定】

--查看监视器
[monitor]         2022-05-26 14:24:45: 接收守护进程(DW1_01)消息超时
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-05-26 14:24:24  ERROR          OK        DW1_01           OPEN        PRIMARY   VALID    9        59200           59200           

[monitor]         2022-05-26 14:24:45: 检测到PRIMARY实例故障,开始对组(GDW1)执行自动接管

[monitor]         2022-05-26 14:24:45: 通知组(GDW1)当前活动的守护进程设置MID
[monitor]         2022-05-26 14:24:45: 通知组(GDW1)当前活动的守护进程设置MID成功
[monitor]         2022-05-26 14:24:45: 开始使用实例DW1_02接管
[monitor]         2022-05-26 14:24:45: 通知守护进程DW1_02切换TAKEOVER状态
[monitor]         2022-05-26 14:24:46: 守护进程(DW1_02)状态切换 [OPEN-->TAKEOVER]
[monitor]         2022-05-26 14:24:46: 切换守护进程DW1_02为TAKEOVER状态成功
[monitor]         2022-05-26 14:24:46: 实例DW1_02开始执行SP_SET_GLOBAL_DW_STATUS(0, 7)语句
[monitor]         2022-05-26 14:24:46: 实例DW1_02执行SP_SET_GLOBAL_DW_STATUS(0, 7)语句成功
[monitor]         2022-05-26 14:24:46: 实例DW1_02开始执行SP_APPLY_KEEP_PKG()语句
[monitor]         2022-05-26 14:24:46: 实例DW1_02执行SP_APPLY_KEEP_PKG()语句成功
[monitor]         2022-05-26 14:24:46: 实例DW1_02开始执行ALTER DATABASE MOUNT语句
[monitor]         2022-05-26 14:24:46: 实例DW1_02执行ALTER DATABASE MOUNT语句成功
[monitor]         2022-05-26 14:24:46: 实例DW1_02开始执行ALTER DATABASE PRIMARY语句
[monitor]         2022-05-26 14:24:47: 实例DW1_02执行ALTER DATABASE PRIMARY语句成功
[monitor]         2022-05-26 14:24:47: 通知实例DW1_02修改所有归档状态无效
[monitor]         2022-05-26 14:24:47: 修改所有实例归档为无效状态成功
[monitor]         2022-05-26 14:24:47: 实例DW1_02开始执行ALTER DATABASE OPEN FORCE语句
[monitor]         2022-05-26 14:24:47: 实例DW1_02执行ALTER DATABASE OPEN FORCE语句成功
[monitor]         2022-05-26 14:24:47: 实例DW1_02开始执行SP_SET_GLOBAL_DW_STATUS(7, 0)语句
[monitor]         2022-05-26 14:24:47: 实例DW1_02执行SP_SET_GLOBAL_DW_STATUS(7, 0)语句成功
[monitor]         2022-05-26 14:24:47: 通知守护进程DW1_02切换OPEN状态
[monitor]         2022-05-26 14:24:47: 守护进程(DW1_02)状态切换 [TAKEOVER-->OPEN]
[monitor]         2022-05-26 14:24:48: 切换守护进程DW1_02为OPEN状态成功
[monitor]         2022-05-26 14:24:48: 通知组(GDW1)的守护进程执行清理操作
[monitor]         2022-05-26 14:24:48: 清理守护进程(DW1_02)请求成功
[monitor]         2022-05-26 14:24:48: 使用实例DW1_02接管成功

[monitor]         2022-05-26 14:24:48: 组(GDW1)使用实例DW1_02自动接管成功

--恢复网卡连接
[root@dmp ~]# service network start
Stopping network (via systemctl): 【确定】

--查看监视器
[monitor]         2022-05-26 14:25:09: 守护进程(DW1_01)状态切换 [NONE-->STARTUP]
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-05-26 14:25:09  STARTUP        OK        DW1_01           SUSPEND     PRIMARY   VALID    9        59200           59206           

[monitor]         2022-05-26 14:25:13: 实例DW1_01[PRIMARY, SUSPEND, ISTAT_SAME:TRUE]故障
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-05-26 14:25:13  STARTUP        ERROR     DW1_01           SUSPEND     PRIMARY   VALID    9        59200           59206           

[monitor]         2022-05-26 14:25:34: 实例DW1_01[STANDBY, MOUNT, ISTAT_SAME:TRUE]恢复正常
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-05-26 14:25:34  STARTUP        OK        DW1_01           MOUNT       STANDBY   INVALID  9        59200           59200           

[monitor]         2022-05-26 14:25:34: 守护进程(DW1_01)状态切换 [STARTUP-->UNIFY EP]
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-05-26 14:25:34  UNIFY EP       OK        DW1_01           MOUNT       STANDBY   INVALID  9        59200           59200           

[monitor]         2022-05-26 14:25:34: 守护进程(DW1_01)状态切换 [UNIFY EP-->STARTUP]
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-05-26 14:25:34  STARTUP        OK        DW1_01           OPEN        STANDBY   INVALID  9        59200           59200           

[monitor]         2022-05-26 14:25:34: 守护进程(DW1_01)状态切换 [STARTUP-->OPEN]
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-05-26 14:25:34  OPEN           OK        DW1_01           OPEN        STANDBY   INVALID  9        59200           59200           

[monitor]         2022-05-26 14:25:34: 守护进程(DW1_02)状态切换 [OPEN-->RECOVERY]
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-05-26 14:25:34  RECOVERY       OK        DW1_02           OPEN        PRIMARY   VALID    10       61661           61662           

[monitor]         2022-05-26 14:25:37: 守护进程(DW1_02)状态切换 [RECOVERY-->OPEN]
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-05-26 14:25:37  OPEN           OK        DW1_02           OPEN        PRIMARY   VALID    10       61662           61663           


输入命令非法,请输入help命令查看帮助信息!

tip
[monitor]         2022-05-26 14:25:53: 实例DW1_02[PRIMARY, OPEN, ISTAT_SAME:TRUE]不可加入其他实例,守护进程状态:OPEN,Open记录状态:VALID
[monitor]         2022-05-26 14:25:53: 实例DW1_02[PRIMARY, OPEN, ISTAT_SAME:TRUE]当前没有命令正在执行
[monitor]         2022-05-26 14:25:53: 实例DW1_02[PRIMARY, OPEN, ISTAT_SAME:TRUE]运行正常, 守护进程是OPEN状态,守护类型是GLOBAL

[monitor]         2022-05-26 14:25:53: 实例DW1_01[STANDBY, OPEN, ISTAT_SAME:TRUE]可加入实例DW1_02[PRIMARY, OPEN, ISTAT_SAME:TRUE]
[monitor]         2022-05-26 14:25:53: 实例DW1_01[STANDBY, OPEN, ISTAT_SAME:TRUE]当前没有命令正在执行
[monitor]         2022-05-26 14:25:53: 实例DW1_01[STANDBY, OPEN, ISTAT_SAME:TRUE]运行正常, 守护进程是OPEN状态,守护类型是GLOBAL

[monitor]         2022-05-26 14:25:53: 组(GDW1)当前活动实例运行正常

[monitor]         2022-05-26 14:25:53: 所有组中的活动实例运行正常!


输入命令非法,请输入help命令查看帮助信息!

show global info
2022-05-26 14:26:00 
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG  
GDW1             45331       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.168.10.101      5436         2022-05-26 14:25:59  GLOBAL    VALID     OPEN           DW1_02           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.168.10.100      5436         2022-05-26 14:25:59  GLOBAL    VALID     OPEN           DW1_01           OK        1     1     OPEN        STANDBY   DSC_OPEN       REALTIME  VALID    

社区地址:https://eco.dameng.com

<think> 我们正在讨论达梦数据库(DM)集群中的实时归档失败问题。根据提供的引用片段,特别是引用[2]中提到的归档状态从VALID变为INVALID,以及引用[4]中提到的守护进程处理流程,我们可以分析可能的原因和解决方案。 可能的原因: 1. 网络问题:主备库之间的网络连接中断或不稳定,导致实时归档传输失败。 2. 磁盘空间不足:归档目录或备份目录的磁盘空间不足,导致无法写入归档日志。 3. 配置错误:归档路径配置不正确,或者主备库的归档配置不一致。 4. 进程异常:数据库实例进程(dmserver)或守护进程(dmwatcher)异常终止。 5. 日志损坏:归档日志文件损坏,导致备库无法应用。 6. 主备库数据不一致:由于某些操作导致主备库数据不一致,触发守护进程将归档设置为无效。 解决方案: 1. 检查网络:确保主备库之间的网络连通性,特别是内部通信IP的连通性(如ping和端口连通性测试)。 2. 检查磁盘空间:查看归档目录(如/home/dm/dmdbms/data/DAMENG/arch)的磁盘使用情况,清理空间或扩展磁盘。 3. 检查归档配置:确保主库和备库的dm.ini配置文件中关于归档的配置一致,特别是归档路径和归档类型(实时归档)。 - 主库和备库的归档目标(ARCH_DEST)应正确指向对方的归档目录(注意:在守护集群中,通常配置为本地目录,然后通过守护进程和重做日志同步,但具体配置需参考达梦官方文档)。 4. 检查进程状态:使用`dmservice`命令或`ps`命令检查数据库实例和守护进程是否正常运行。 5. 查看日志:详细分析数据库日志(dmserver.log)和守护进程日志(dmwatcher.log),定位错误信息。引用[2]就是一个来自dmwatcher的日志,表明归档状态变为无效。 6. 重启守护进程:有时重启守护进程可以恢复正常状态(注意顺序:先备库后主库,或按照达梦官方推荐顺序)。 7. 使用dmrman工具修复:如引用[3]所示,使用dmrman工具进行恢复。如果归档日志损坏,可能需要从备份中恢复并重新同步。 8. 重新同步备库:如果备库数据不一致,可能需要重新初始化备库(从主库备份恢复)并重新加入集群。 根据引用[4]的描述,当主库故障重启后,守护进程会重新设置备库的归档状态(将数据一致的备库设为有效,其他设为无效),并重新Open主库。然后,守护进程会尝试恢复归档状态无效的备库。因此,如果备库归档失败,可以等待守护进程自动恢复,或者手动介入修复。 操作建议: 步骤1:检查守护进程日志(dmwatcher.log)和数据库日志(dmserver.log),找到导致归档状态变为INVALID的具体原因。 步骤2:根据日志中的错误信息采取相应措施(如修复网络、清理磁盘等)。 步骤3:如果自动恢复不成功,考虑手动重启守护进程或数据库实例。 步骤4:如果问题依旧,可能需要使用备份恢复备库。 注意:操作前请确保有完整的备份,并在测试环境验证。 由于我们无法直接查看环境,以上分析和建议基于一般性故障处理流程。具体操作请参考达梦数据库官方文档。 生成相关问题: 1. 如何检查达梦数据库守护进程的状态? 2. 达梦数据库实时归档的配置步骤是什么? 3. 如何通过日志分析达梦数据库集群的故障? </think> ### DW集群实时归档失败的原因及解决方案 根据引用内容分析,实时归档失败通常由以下原因引起: #### 主要原因: 1. **主库故障导致状态异常**(引用[4]) 主库宕机后重启时,守护进程进入`Startup`状态,会将**数据不一致的备库归档标记为无效**(VALID → INVALID),导致实时归档中断。 2. **备库数据不一致**(引用[4]) 当备库与主库数据差异过大或日志损坏时,守护进程自动将其归档状态设为`INVALID`(引用[2]),触发归档失败告警。 3. **网络/进程异常** - 主备节点间网络中断(内部通信IP不通或端口阻塞) - 守护进程(dmwatcher)异常退出或僵死 - 归档路径权限错误或磁盘空间不足(引用[1]归档目录规划) 4. **备份文件损坏**(引用[3]) 若备份集(`BACKUP_FILE_xxx`)损坏,通过`dmrman`恢复时可能引发后续归档异常。 --- #### 解决方案: 1. **检查归档状态** ```bash # 登录备库查询归档状态 SQL> SELECT ARCH_STATUS FROM V$ARCH_STATUS; ``` 若返回`INVALID`(引用[2]),需进入下一步修复。 2. **主库重启后恢复流程**(引用[4]) - 主库故障重启后,等待守护进程自动执行: ``` 1. 筛选数据一致的备库 → 设置ARCH_VALID=VALID 2. 数据不一致备库 → 设置ARCH_VALID=INVALID 3. 重新OPEN主库 ``` - 观察守护进程日志,确认是否触发Recovery同步: ```bash tail -f dmwatcher.log # 检查Recovery流程启动日志 ``` 3. **手动修复无效备库** **场景1:数据轻微不一致** ```bash # 在备库执行强制恢复 ./dmrman CTLSTMT="RECOVER DATABASE '/data/DAMENG/dm.ini' WITH ARCHIVEDIR '/home/dm/dmdbms/data/DAMENG/arch'" ``` **场景2:数据严重损坏**(引用[3]) ```bash # 从主库获取新备份集,在备库还原 ./dmrman CTLSTMT="RESTORE DATABASE '/data/DAMENG/dm.ini' FROM BACKUPSET '/new_backup/BACKUP_20241001'" ``` 4. **检查基础设施** - 验证网络连通性: ```bash ping 192.168.100.6 # 主库内部IP(引用[1]) telnet 192.168.100.6 5236 # 端口检测 ``` - 检查归档目录: ```bash df -h /home/dm/dmdbms/data/DAMENG/arch # 磁盘空间 ls -ld /home/dm/dmdbms/data/DAMENG/arch # 目录权限(需dmdba用户可写) ``` 5. **重启守护进程** ```bash # 主备库同步停止/启动 ./DmWatcherService stop ./DmWatcherService start ``` > **关键预防措施**: > - 配置归档目录磁盘空间监控(建议≥20%冗余) > - 启用守护进程自愈策略:在`dmwatcher.ini`中设置`AUTO_RESTART = 1` > - 定期验证备份集完整性(引用[3]) --- ### 相关问题 1. 如何监控达梦集群的归档延迟? 2. 主备切换时如何避免归档中断? 3. DW集群中守护进程(dmwatcher)的详细工作机制是什么? 4. 达梦数据库归档日志损坏后的修复流程有哪些? [^1]: 目录及实例规划 [^2]: 归档状态变更告警 [^3]: 备份集恢复命令 [^4]: 主库故障处理机制
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值