我在看网上搭建DMDW的文章时发现很多都只是使用了一个网卡。这其实不符合DW的设计理念,所以写这个文章教大家怎么在自己的虚拟机中搭建双网卡的DW。当然如果是企业的生产环境,自然会有系统管理员或网络管理员配置双网卡,大家只需要知道怎么使用就好了。
搭建虚拟机的流程不过多赘述,网上文章有很多,这里只说一些重点:
1.我使用的是Kylin-Server-V10-SP3-2403-Release-20240426-x86_64.iso操作系统镜像,此处的版本需要选择Debain对应版本
2.创建两个网络适配器,一个NAT,用于访问华为yum源:update.cs2c.com.cn;另一个仅主机模式即可,用于Dmmal系统[1]在主备间传输Redo日志。
3.修改网卡,DNS配置
需要将两台主机的网卡都改为静态,以防止重启后IP变更,导致Dm的守护进程、监视器失效,同时也避免了实例IP变化导致的应用连接失败。
[root@localhost network-scripts]# cd ~
[root@localhost ~]# cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]# cat ifcfg-ens3
ifcfg-ens33 ifcfg-ens33.bak ifcfg-ens36 ifcfg-ens36.bak
[root@localhost network-scripts]# cat ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR="192.168.131.151" # 设置的静态IP地址
NETMASK="255.255.255.0" # 子网掩码
GATEWAY="192.168.131.2" # 网关地址
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME=ens33
UUID=084d2f74-1f37-4225-98e5-4a0cadda03bf
DEVICE=ens33
ONBOOT=yes
[root@localhost network-scripts]# cat ifcfg-ens36
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR="192.168.26.128" # 设置的静态IP地址
NETMASK="255.255.255.0" # 子网掩码
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=no
UUID=f566d616-a964-47a1-a9da-ee365e9b67c5
DEVICE=ens36
ONBOOT=yes
##修改网卡配置后重启网络服务:systemctl restart network.service
其中网关IP的选择可以查看虚拟机中的虚拟网络编辑器,选择WMnet8,点击NAT设置,查看网关IP。
这里我只写网络规划,大家在生产环境部署前需要考虑更多,如CPU,OS类型与数据库版本是否匹配,glibc等版本底层程序的版本是否匹配,磁盘IO,RAID,内存配置,数据库参数,业务数据量/并发,主备配置差异等等…总之要在实际部署前就想好,避免后续不必要的问题。
IP规划
IP 地址 | 初始状态 | 备注 |
---|---|---|
192.168.131.152 192.168.26.129 | 主库 DMPRIMARY | 192.168.131.151 外部服务 IP; 192.168.26.129 内部通信 IP |
192.168.131.153 192.168.26.130 | 备库 DMSTANDBY | 192.168.131.153 外部服务 IP; 192.168.26.130 内部通信 IP |
192.168.26.128 | 确认监视器 |
端口规划
实例名 | PORT_NUM | MAL_INST_DW_PORT | MAL_HOST | MAL_PORT | MAL_DW_PORT |
---|---|---|---|---|---|
DMPRIMARY | 5236 | 16236 | 192.168.26.129 | 6236 | 15236 |
DMSTANDBY | 5237 | 16237 | 192.168.26.130 | 6327 | 15237 |
我比较懒,只创建了一次虚拟机,另外两台都是克隆后修改的IP。
也就是说只安装了一次数据库,单机安装也不再赘述了,大家可以参考我之前写的单机安装博客。
改完三台机器的网卡配置后,我们开始修改数据库的配置。
需要修改的配置文件有:dm.ini(实例相关),dmmal.ini( MAL 系统),dmarch.ini(归档),dmwatcher.ini(守护进程)
dm.ini
##实例名,建议使用“组名_守护环境_序号”的命名方式,总长度不能超过16,我这里为了便于区分,使用PRIMARY和STANDBY
INSTANCE_NAME = PRIMARY
PORT_NUM = 5236 ##数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 ##接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 ##不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 ##不允许备库OFFLINE表空间
MAL_INI = 1 ##打开MAL系统
ARCH_INI = 1 ##打开归档配置
RLOG_SEND_APPLY_MON = 64 ##统计最近64次的日志发送信息
dmmal.ini
MAL_CHECK_INTERVAL = 5 ##MAL链路检测时间间隔 MAL_CONN_FAIL_INTERVAL = 5 ##判定MAL链路断开的时间 [MAL_INST1] MAL_INST_NAME = DMPrimary ##实例名,和dm.ini中的INSTANCE_NAME一致 MAL_HOST = 192.168.26.129 ##MAL系统监听TCP连接的IP地址 MAL_PORT = 6236 ##MAL系统监听TCP连接的端口 MAL_INST_HOST = 192.168.131.152 ##实例的对外服务IP地址 MAL_INST_PORT = 5236 ##实例的对外服务端口,和dm.ini中的PORT_NUM一致 MAL_DW_PORT = 15236 ##实例本地的守护进程监听TCP连接的端口 MAL_INST_DW_PORT = 16236 ##实例监听守护进程TCP连接的端口 [MAL_INST2] MAL_INST_NAME = DMStandby MAL_HOST = 192.168.26.130 MAL_PORT = 6237 MAL_INST_HOST = 192.168.131.153 MAL_INST_PORT = 5237 MAL_DW_PORT = 15237 MAL_INST_DW_PORT = 16237
dmarch.ini
[ARCHIVE_REALTIME] ARCH_TYPE = REALTIME ##实时归档类型 ARCH_DEST = DMSTANDBY ##实时归档目标实例名 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ##本地归档类型 ARCH_DEST = /home/dmdba/arch ##本地归档文件存放路径 ARCH_FILE_SIZE = 1024 ##单位Mb,本地单个归档文件最大值 ARCH_SPACE_LIMIT = 2048 ##单位Mb,0表示无限制,范围1024~2147483647M ARCH_FLUSH_BUF_SIZE = 16
dmwatcher.ini
[GRP1] ##group名称 DW_TYPE = GLOBAL ##全局守护类型 DW_MODE = AUTO ##自动切换模式 DW_ERROR_TIME = 10 ##远程守护进程故障认定时间 INST_RECOVER_TIME = 60 ##主库守护进程启动恢复的间隔时间 INST_ERROR_TIME = 10 ##本地实例故障认定时间 INST_OGUID = 12345 ##守护系统唯一OGUID值 INST_INI = /home/dmdba/data/DAMENG/dm.ini ##dm.ini配置文件路径 INST_AUTO_RESTART = 1 ##打开实例的自动启动功能 INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver start ##命令行方式启动 RLOG_SEND_THRESHOLD = 0 ##指定主库发送日志到备库的时间阈值,默认关闭 RLOG_APPLY_THRESHOLD = 0 ##指定备库重演日志的时间阈值,默认关闭
启动脚本,将START_MODE改为mount
##查看启动脚本所在位置
[root@localhost DAMENG]# systemctl status DmServiceDMSERVICE.service
● DmServiceDMSERVICE.service - DM Instance Service(DmServiceDMSERVICE).
Loaded: loaded (/usr/lib/systemd/system/DmServiceDMSERVICE.service; enabled; vendor preset: disabled)
##编辑启动脚本,修改启动模式为mount
[root@localhost ~]# cd /usr/lib/systemd/system/
[root@localhost system]# vim DmServiceDMSERVICE.service
ExecStart=/home/dmdba/dmdbms/bin/DmServiceDMSERVICE start mount
##启动数据库服务
或
修改DmServiceDMSERVICE.service中提到的/home/dmdba/dmdbms/bin/DmServiceDMSERVICE [dmdba@localhost ~]$ vim DmServiceDMSERVICE.service START_MODE=mount
配置dmwatcher启动服务
[root@localhost system]# cd /home/dmdba/dmdbms/script/root [root@localhost root]# ./dm_service_installer.sh -t dmwatcher -p DmWatch -watcher_ini /home/dmdba/data/DAMENG/dmwatcher.ini Created symlink /etc/systemd/system/multi-user.target.wants/DmWatcherServiceDmWatch.service → /usr/lib/systemd/system/DmWatcherServiceDmWatch.service. 创建服务(DmWatcherServiceDmWatch)完成 [root@localhost root]# systemctl list-unit-files |grep Dm DmAPService.service enabled DmServiceDMSERVICE.service enabled DmWatcherServiceDmWatch.service enabled
dm.ini
INSTANCE_NAME = DMStandby PORT_NUM = 5237 ##数据库实例监听端口 DW_INACTIVE_INTERVAL = 60 ##接收守护进程消息超时时间 ALTER_MODE_STATUS = 0 ##不允许手工方式修改实例模式/状态/OGUID ENABLE_OFFLINE_TS = 2 ##不允许备库OFFLINE表空间 MAL_INI = 1 ##打开MAL系统 ARCH_INI = 1 ##打开归档配置 RLOG_SEND_APPLY_MON = 64 ##统计最近64次的日志发送信息
dmmal.ini
MAL_CHECK_INTERVAL = 5 ##MAL链路检测时间间隔 MAL_CONN_FAIL_INTERVAL = 5 ##判定MAL链路断开的时间 [MAL_INST1] MAL_INST_NAME = DMPrimary ##实例名,和dm.ini中的INSTANCE_NAME一致 MAL_HOST = 192.168.26.129 ##MAL系统监听TCP连接的IP地址 MAL_PORT = 6236 ##MAL系统监听TCP连接的端口 MAL_INST_HOST = 192.168.131.152 ##实例的对外服务IP地址 MAL_INST_PORT = 5236 ##实例的对外服务端口,和dm.ini中的PORT_NUM一致 MAL_DW_PORT = 15236 ##实例本地的守护进程监听TCP连接的端口 MAL_INST_DW_PORT = 16236 ##实例监听守护进程TCP连接的端口 [MAL_INST2] MAL_INST_NAME = DMStandby MAL_HOST = 192.168.26.130 MAL_PORT = 6237 MAL_INST_HOST = 192.168.131.153 MAL_INST_PORT = 5237 MAL_DW_PORT = 15237 MAL_INST_DW_PORT = 16237
dmarch.ini
[ARCHIVE_REALTIME] ARCH_TYPE = REALTIME ##实时归档类型 ARCH_DEST = DMPrimary ##实时归档目标实例名 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ##本地归档类型 ARCH_DEST = /home/dmdba/arch ##本地归档文件存放路径 ARCH_FILE_SIZE = 1024 ##单位Mb,本地单个归档文件最大值 ARCH_SPACE_LIMIT = 2048 ##单位Mb,0表示无限制,范围1024~2147483647M ARCH_FLUSH_BUF_SIZE = 16
dmwatcher.ini
[GRP1] ##group名称 DW_TYPE = GLOBAL ##全局守护类型 DW_MODE = AUTO ##自动切换模式 DW_ERROR_TIME = 10 ##远程守护进程故障认定时间 INST_RECOVER_TIME = 60 ##主库守护进程启动恢复的间隔时间 INST_ERROR_TIME = 10 ##本地实例故障认定时间 INST_OGUID = 12345 ##守护系统唯一OGUID值 INST_INI = /home/dmdba/data/DAMENG/dm.ini ##dm.ini配置文件路径 INST_AUTO_RESTART = 1 ##打开实例的自动启动功能 INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver start ##命令行方式启动 RLOG_SEND_THRESHOLD = 0 ##指定主库发送日志到备库的时间阈值,默认关闭 RLOG_APPLY_THRESHOLD = 0 ##指定备库重演日志的时间阈值,默认关闭
启动脚本,将START_MODE改为mount
配置dmwatcher启动服务
[root@localhost system]# cd /home/dmdba/dmdbms/script/root [root@localhost root]# ./dm_service_installer.sh -t dmwatcher -p DmWatch -watcher_ini /home/dmdba/data/DAMENG/dmwatcher.ini Created symlink /etc/systemd/system/multi-user.target.wants/DmWatcherServiceDmWatch.service → /usr/lib/systemd/system/DmWatcherServiceDmWatch.service. 创建服务(DmWatcherServiceDmWatch)完成 [root@localhost root]# systemctl list-unit-files |grep Dm DmAPService.service enabled DmServiceDMSERVICE.service enabled DmWatcherServiceDmWatch.service enabled
在192.168.26.128服务器上启动监视器。
dmmonitor.ini配置:
MON_DW_CONFIRM = 1 ##确认监视器模式
MON_LOG_PATH = /home/dmdba/log ##监视器日志文件存放路径
MON_LOG_INTERVAL = 60 ##每隔60s定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 ##每个日志文件最大32M
MON_LOG_SPACE_LIMIT = 0 ##不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 12345 ##组GRP1的唯一OGUID值
##以下配置为监视器到组GRP1的守护进程的连接信息,以“IP:PORT”的形式配置
##IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT
MON_DW_IP = 192.168.26.129:15236
MON_DW_IP = 192.168.26.130:15237
配置dmmonitor自启动,这台机器主要是用来做GRP1主备的监视器,所以service,ap不需要自启动。
[root@localhost root]# ./dm_service_installer.sh -t dmmonitor -p 4_152_153 -monitor_ini /home/dmdba/data/DAMENG/dmmonitor.ini Created symlink /etc/systemd/system/multi-user.target.wants/DmMonitorService4_152_153.service → /usr/lib/systemd/system/DmMonitorService4_152_153.service. 创建服务(DmMonitorService4_152_153)完成 [root@localhost root]# systemctl list-unit-files |grep Dm DmAPService.service disabled DmMonitorService4_152_153.service enabled DmServiceDMSERVICE.service disabled
Tips:复制一份dmmonitor.ini,MON_DW_CONFIRM 改为0,可以再启动一个监视器查看集群转态或进行手动切换
启动命令:dmmonitor path=/home/dmdba/data/DAMENG/dmmonitor0.ini
前边提到了,我只创建一次虚拟机+数据库,另外两台都是克隆的。只修改配置是不够的,因为在主备数据库的文件中DB_MAGIC是完全一样的,在我们配置了自动管理状态的情况下,系统无法判断哪个库的状态更新,它的主备切换无法正常工作。
在这个状态时启动集群会报错:Db(DMPRIMARY)'s SYSOPENHISTORY is crossed with other db(num:1), local dmwatcher’s act_type is ACT_KEEP, need user to intervene。
这意味着我们必须更新其中一个库的DB_MAGIC。最简单的方式莫过于借助备份恢复(必须按步骤逐步操作)
backup database backupset '/home/dmdba/backup/2024';
将备份目录scp到备库
RMAN> restore database '/home/dmdba/data/DAMENG/dm.ini' from backupset '/home/dmdba/backup/2024';
RMAN> recover database '/home/dmdba/data/DAMENG/dm.ini' from backupset '/home/dmdba/backup/2024';
更新DB_MAGIC:(数据库的 ID 号)
RMAN> recover database '/home/dmdba/data/DAMENG/dm.ini' update db_magic;
将主备都启动至mount状态
--主备执行同样的操作
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(12345);
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
完成后启动主备服务器的dmwatcher,监视服务器的dmmonitor。便完成了实时主备的搭建。
dmwatcher启动后自动将主备拉起至open状态
##在disql中查看启动状态
[root@localhost system]# su - dmdba
##主库
[dmdba@localhost ~]$ disql SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于主库打开状态
登录使用时间 : 5.636(ms)
disql V8
SQL> select NAME,INSTANCE_NAME,STATUS$,MODE$,OGUID from v$instance;
行号 NAME INSTANCE_NAME STATUS$ MODE$ OGUID
---------- --------- ------------- ------- ------- -----------
1 DMPRIMARY DMPRIMARY OPEN PRIMARY 12345
已用时间: 0.861(毫秒). 执行号:601.
##备库
[dmdba@localhost ~]$ disql SYSDBA/SYSDBA:5237
服务器[LOCALHOST:5237]:处于备库打开状态
登录使用时间 : 3.519(ms)
disql V8
SQL> select NAME,INSTANCE_NAME,STATUS$,MODE$,OGUID from v$instance;
行号 NAME INSTANCE_NAME STATUS$ MODE$ OGUID
---------- --------- ------------- ------- ------- -----------
1 DMSTANDBY DMSTANDBY OPEN STANDBY 12345
已用时间: 4.365(毫秒). 执行号:0.
查询两个库的DB_MAGIC
SELECT DB_MAGIC FROM V$RLOG;
在监视服务器上再启动一个监视器进行切换,启动后使用指令show查看状态,login登录远程集群,switchover切换,help查看有哪些指令可用。
[dmdba@localhost ~]$ dmmonitor path=/home/dmdba/data/DAMENG/dmmonitor0.ini
[monitor] 2024-12-08 22:25:12: DMMONITOR[4.0] V8
[monitor] 2024-12-08 22:25:13: DMMONITOR[4.0] IS READY.
[monitor] 2024-12-08 22:25:13:
#-----------------------------------------------------------------------------------------------#
GET MONITOR CONNECT INFO FROM DMWATCHER(DMSTANDBY), THE FIRST LINE IS SELF INFO.
DW_CONN_TIME MON_CONFIRM MID MON_IP MON_VERSION
2024-12-08 22:25:14 FALSE 898051625 ::ffff:192.168.26.128 DMMONITOR[4.0] V8
2024-12-08 02:39:38 TRUE 625004084 ::ffff:192.168.26.128 DMMONITOR[4.0] V8
#-----------------------------------------------------------------------------------------------#
[monitor] 2024-12-08 22:25:13: 收到守护进程(DMSTANDBY)消息
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2024-12-08 22:25:14 OPEN OK DMSTANDBY OPEN STANDBY NULL 41 1572797 1572797
[monitor] 2024-12-08 22:25:14: 收到守护进程(DMPRIMARY)消息
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2024-12-08 22:25:14 STARTUP ERROR DMPRIMARY SHUTDOWN PRIMARY VALID 41 1572634 1572634
show
2024-12-08 22:26:56
#================================================================================#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRP1 12345 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.168.26.129 15236 2024-12-08 22:26:56 GLOBAL VALID OPEN DMPRIMARY OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALID
EP INFO:
INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
192.168.131.135 5236 OK DMPRIMARY OPEN PRIMARY 0 0 REALTIME VALID 101792 1572966 101792 1572966 NONE
<<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.26.130 15237 2024-12-08 22:26:57 GLOBAL VALID OPEN DMSTANDBY OK 1 1 OPEN STANDBY DSC_OPEN REALTIME VALID
EP INFO:
INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
192.168.131.138 5237 OK DMSTANDBY OPEN STANDBY 0 0 REALTIME VALID 101710 1572966 101710 1572966 NONE
DATABASE(DMSTANDBY) APPLY INFO FROM (DMPRIMARY), REDOS_PARALLEL_NUM (1), WAIT_APPLY[FALSE]:
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[101792, 101792, 101792], (RLSN, SLSN, KLSN)[1572966, 1572966, 1572966], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (1572966)
#================================================================================#
login ##注意这里是使用数据库账户登录
用户名:SYSDBA
密码:
[monitor] 2024-12-08 22:27:42: 登录监视器成功!
SWITCHOVER
此操作需谨慎, 将会导致主库发生切换, 是否继续使用GRP1.DMSTANDBY执行SWITCHOVER操作(YES/NO/Y/N)?
Y
[monitor] 2024-12-08 22:27:51: 开始切换实例DMSTANDBY
[monitor] 2024-12-08 22:27:51: 通知守护进程DMPRIMARY切换SWITCHOVER状态
[monitor] 2024-12-08 22:27:51: 守护进程(DMPRIMARY)状态切换 [OPEN-->SWITCHOVER]
[monitor] 2024-12-08 22:27:51: 切换守护进程DMPRIMARY为SWITCHOVER状态成功
[monitor] 2024-12-08 22:27:51: 通知守护进程DMSTANDBY切换SWITCHOVER状态
[monitor] 2024-12-08 22:27:51: 守护进程(DMSTANDBY)状态切换 [OPEN-->SWITCHOVER]
[monitor] 2024-12-08 22:27:51: 切换守护进程DMSTANDBY为SWITCHOVER状态成功
[monitor] 2024-12-08 22:27:51: 实例DMPRIMARY开始执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句
[monitor] 2024-12-08 22:27:51: 实例DMPRIMARY执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句成功
[monitor] 2024-12-08 22:27:51: 实例DMSTANDBY开始执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句
[monitor] 2024-12-08 22:27:51: 实例DMSTANDBY执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句成功
[monitor] 2024-12-08 22:27:51: 实例DMPRIMARY开始执行ALTER DATABASE MOUNT语句
[monitor] 2024-12-08 22:27:51: 实例DMPRIMARY执行ALTER DATABASE MOUNT语句成功
[monitor] 2024-12-08 22:27:51: 实例DMSTANDBY开始执行SP_APPLY_KEEP_PKG()语句
[monitor] 2024-12-08 22:27:51: 实例DMSTANDBY执行SP_APPLY_KEEP_PKG()语句成功
[monitor] 2024-12-08 22:27:51: 实例DMSTANDBY开始执行ALTER DATABASE MOUNT语句
[monitor] 2024-12-08 22:27:51: 实例DMSTANDBY执行ALTER DATABASE MOUNT语句成功
[monitor] 2024-12-08 22:27:51: 实例DMPRIMARY开始执行ALTER DATABASE STANDBY语句
[monitor] 2024-12-08 22:27:51: 实例DMPRIMARY执行ALTER DATABASE STANDBY语句成功
[monitor] 2024-12-08 22:27:51: 实例DMSTANDBY开始执行ALTER DATABASE PRIMARY语句
[monitor] 2024-12-08 22:27:51: 实例DMSTANDBY执行ALTER DATABASE PRIMARY语句成功
[monitor] 2024-12-08 22:27:51: 通知实例DMSTANDBY修改所有归档状态无效
[monitor] 2024-12-08 22:27:51: 修改所有实例归档为无效状态成功
[monitor] 2024-12-08 22:27:51: 实例DMPRIMARY开始执行ALTER DATABASE OPEN FORCE语句
[monitor] 2024-12-08 22:27:51: 实例DMPRIMARY执行ALTER DATABASE OPEN FORCE语句成功
[monitor] 2024-12-08 22:27:51: 实例DMSTANDBY开始执行ALTER DATABASE OPEN FORCE语句
[monitor] 2024-12-08 22:27:52: 实例DMSTANDBY执行ALTER DATABASE OPEN FORCE语句成功
[monitor] 2024-12-08 22:27:52: 实例DMPRIMARY开始执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句
[monitor] 2024-12-08 22:27:52: 实例DMPRIMARY执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句成功
[monitor] 2024-12-08 22:27:52: 实例DMSTANDBY开始执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句
[monitor] 2024-12-08 22:27:52: 实例DMSTANDBY执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句成功
[monitor] 2024-12-08 22:27:52: 通知守护进程DMPRIMARY切换OPEN状态
[monitor] 2024-12-08 22:27:52: 守护进程(DMPRIMARY)状态切换 [SWITCHOVER-->OPEN]
[monitor] 2024-12-08 22:27:52: 切换守护进程DMPRIMARY为OPEN状态成功
[monitor] 2024-12-08 22:27:52: 通知守护进程DMSTANDBY切换OPEN状态
[monitor] 2024-12-08 22:27:52: 守护进程(DMSTANDBY)状态切换 [SWITCHOVER-->OPEN]
[monitor] 2024-12-08 22:27:52: 切换守护进程DMSTANDBY为OPEN状态成功
[monitor] 2024-12-08 22:27:52: 通知组(GRP1)的守护进程执行清理操作
[monitor] 2024-12-08 22:27:52: 清理守护进程(DMPRIMARY)请求成功
[monitor] 2024-12-08 22:27:52: 清理守护进程(DMSTANDBY)请求成功
[monitor] 2024-12-08 22:27:52: 实例DMSTANDBY切换成功
2024-12-08 22:27:52
#================================================================================#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRP1 12345 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.168.26.130 15237 2024-12-08 22:27:53 GLOBAL VALID OPEN DMSTANDBY OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALID
EP INFO:
INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
192.168.131.138 5237 OK DMSTANDBY OPEN PRIMARY 0 0 REALTIME VALID 101793 1572967 101710 1573153 NONE
<<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.26.129 15236 2024-12-08 22:27:52 GLOBAL VALID OPEN DMPRIMARY OK 1 1 OPEN STANDBY DSC_OPEN REALTIME INVALID
EP INFO:
INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
192.168.131.135 5236 OK DMPRIMARY OPEN STANDBY 0 0 REALTIME INVALID 101793 1572967 101793 1572967 NONE
DATABASE(DMPRIMARY) APPLY INFO FROM (DMSTANDBY), REDOS_PARALLEL_NUM (1), WAIT_APPLY[FALSE]:
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[101793, 101793, 101793], (RLSN, SLSN, KLSN)[1572967, 1572967, 1572967], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (1572967)
#================================================================================#
[monitor] 2024-12-08 22:27:55: 守护进程(DMSTANDBY)状态切换 [OPEN-->RECOVERY]
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2024-12-08 22:27:56 RECOVERY OK DMSTANDBY OPEN PRIMARY VALID 43 1573153 1573153
[monitor] 2024-12-08 22:27:58: 守护进程(DMSTANDBY)状态切换 [RECOVERY-->OPEN]
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2024-12-08 22:27:59 OPEN OK DMSTANDBY OPEN PRIMARY VALID 43 1573153 1573153
DM通过MAL系统实现Redo日志传输,以及其他一些实例间的消息通讯。 ↩︎
文章
阅读量
获赞