达梦一主+备+异备+DEM管理
一、安装前准备
1.1集群规划
说明:虚拟机只配置了一个网卡
二、配置A机器
2.1实例、备份数据
--初始化实例
[dmdba@DM01 ~]$ /dm8/bin/dminit PATH=/dm8/data/ INSTANCE_NAME=RWC1_01 EXTENT_SIZE=32 PAGE_SIZE=32 LOG_SIZE=2048
--启动服务
[dmdba@DM01 ~]$ /dm8/bin/dmserver /dm8/data/DAMENG/dm.ini
--开启归档
[dmdba@DM01 ~]$ /dm8/bin/disql SYSDBA/SYSDBA@192.168.10.100:5236
SQL> ALTER DATABASE MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST=/dm8/data/DAMENG/arch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=51200';
SQL> ALTER DATABASE OPEN;
--备份数据
SQL> BACKUP DATABASE BACKUPSET '/dm8/data/DAMENG/bak/BACKUP_FILE';
--修改dm.ini
SQL> SP_SET_PARA_VALUE (2,'PORT_NUM',5236);
SQL> SP_SET_PARA_VALUE (2,'DW_INACTIVE_INTERVAL',60);
SQL> SP_SET_PARA_VALUE (2,'ALTER_MODE_STATUS',0);
SQL> SP_SET_PARA_VALUE (2,'ENABLE_OFFLINE_TS',2);
SQL> SP_SET_PARA_VALUE (2,'MAL_INI',1);
SQL> SP_SET_PARA_VALUE (2,'TIMER_INI',1);
SQL> SP_SET_PARA_VALUE (2,'RLOG_SEND_APPLY_MON',64);
关闭前台实例服务
2.2替换dmarch.ini
[dmdba@DM01 ~]$ vi /dm8/data/DAMENG/dmarch.ini
ARCH_WAIT_APPLY = 1 #1表示事务一致模式,0表示高性能模式
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/data/DAMENG/arch/ #本地归档存放路径
ARCH_FILE_SIZE = 1024 #单个归档大小,单位MB
ARCH_SPACE_LIMIT = 51200 #归档上限,单位MB
[ARCHIVE_TIMELY1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = RWC1_01B #即时归档目标实例名
[ARCHIVE_ASYNC]
ARCH_TYPE = ASYNC #异步归档类型
ARCH_DEST = RWC1_02B #异步归档目标实例名
ARCH_TIMER_NAME = RT_TIMER #定时器名称,和dmtimer.ini中的名称一致
2.3创建dmmal.ini
[dmdba@DM01 ~]$ vi /dm8/data/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL = 10 #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 10 #判定MAL链路断开的时间
MAL_TEMP_PATH = /dm8/data/malpath/ #临时文件目录
MAL_BUF_SIZE = 512 #单个MAL缓存大小,单位MB
MAL_SYS_BUF_SIZE = 2048 #MAL总大小限制,单位MB
MAL_COMPRESS_LEVEL = 0 #MAL消息压缩等级,0表示不压缩
[MAL_INST1]
MAL_INST_NAME = RWC1_01 #实例名,和 dm.ini的INSTANCE_NAME一致
MAL_HOST = 192.168.10.100 #MAL系统监听TCP连接的IP地址
MAL_PORT = 5336 #MAL系统监听TCP连接的端口
MAL_INST_HOST = 192.168.10.100 #实例的对外服务IP地址
MAL_INST_PORT = 5236 #实例对外服务端口,和dm.ini的PORT_NUM一致
MAL_DW_PORT = 5436 #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5536 #实例监听守护进程TCP连接的端口
[MAL_INST2]
MAL_INST_NAME = RWC1_01B
MAL_HOST = 192.168.10.101
MAL_PORT = 5336
MAL_INST_HOST = 192.168.10.101
MAL_INST_PORT = 5236
MAL_DW_PORT = 5436
MAL_INST_DW_PORT = 5536
[MAL_INST3]
MAL_INST_NAME = RWC1_02B
MAL_HOST = 192.168.10.102
MAL_PORT = 5336
MAL_INST_HOST = 192.168.10.102
MAL_INST_PORT = 5236
MAL_DW_PORT = 5436
MAL_INST_DW_PORT = 5536
2.4创建dmwatcher.ini
[dmdba@DM01 ~]$ vi /dm8/data/DAMENG/dmwatcher.ini
[GRWC1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = 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 #指定备库重演日志的时间阈值,默认关闭
2.5创建dmtimer.ini
[dmdba@DM01 ~]$ vi /dm8/data/DAMENG/dmtimer.ini
#定时器配置为每十分钟触发主库发送归档日志到异步备库
[RT_TIMER] #和dmarch.ini中的ARCH_TIMER_NAME一致
TYPE = 2 #按日执行
FREQ_MONTH_WEEK_INTERVAL = 1 #间隔周数或月数
FREQ_SUB_INTERVAL = 1 #间隔天数
FREQ_MINUTE_INTERVAL = 10 #间隔分钟数
START_TIME = 00:00:00 #开始时间
END_TIME = 00:00:00 #结束时间
DURING_START_DATE = 2022-08-11 00:00:01 #开始时间点
DURING_END_DATE = 9999-12-31 23:59:59 #结束时间点
NO_END_DATE_FLAG = 1 #是否结束标记
DESCRIBE = RT TIMER #定时器描述
IS_VALID = 1 #开启定时器
2.6拷贝实例
--拷贝实例到B机器、C机器
[dmdba@DM01 ~]$ scp -r /dm8/data/DAMENG dmdba@192.168.10.101:/dm8/data/
[dmdba@DM01 ~]$ scp -r /dm8/data/DAMENG dmdba@192.168.10.102:/dm8/data/
2.7注册服务
[root@DM01 ~]# /dm8/script/root/dm_service_installer.sh -t dmserver -p RWC1_01 -dm_ini /dm8/data/DAMENG/dm.ini -m mount
[root@DM01 ~]# /dm8/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dm8/data/DAMENG/dmwatcher.ini
备注:删除自启
[root@DM01 ~]# /dm8/script/root/dm_service_uninstaller.sh -n DmServiceRWC1_01
[root@DM01 ~]# /dm8/script/root/dm_service_uninstaller.sh -n DmWatcherServiceWatcher
三、配置B机器
3.1修改dm.ini
[dmdba@DM02 ~]$ vi /dm8/data/DAMENG/dm.ini
INSTANCE_NAME = RWC1_01B #数据库实例名
3.2替换dmarch.ini
[dmdba@DM02 ~]$ vi /dm8/data/DAMENG/dmarch.ini
ARCH_WAIT_APPLY = 1 #1表示事务一致模式,0表示高性能模式
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/data/DAMENG/arch/ #本地归档存放路径
ARCH_FILE_SIZE = 1024 #单个归档大小,单位MB
ARCH_SPACE_LIMIT = 51200 #归档上限,单位MB
[ARCHIVE_TIMELY1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = RWC1_01 #即时归档目标实例名
[ARCHIVE_ASYNC]
ARCH_TYPE = ASYNC #异步归档类型
ARCH_DEST = RWC1_02B #异步归档目标实例名
ARCH_TIMER_NAME = RT_TIMER #定时器名称,和dmtimer.ini中的名称一致
3.3相同配置项
dmmal.ini、dmwatcher.ini、dmtimer.ini配置项与A机器相同,不需要修改
3.4注册服务
[root@DM02 ~]# /dm8/script/root/dm_service_installer.sh -t dmserver -p RWC1_01B -dm_ini /dm8/data/DAMENG/dm.ini -m mount
[root@DM02 ~]# /dm8/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dm8/data/DAMENG/dmwatcher.ini
备注:删除自启
[root@DM02 ~]# /dm8/script/root/dm_service_uninstaller.sh -n DmServiceRWC1_01B
[root@DM02 ~]# /dm8/script/root/dm_service_uninstaller.sh -n DmWatcherServiceWatcher
3.5恢复数据
[dmdba@DM02 ~]$ /dm8/bin/dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/DAMENG/bak/BACKUP_FILE'"
[dmdba@DM02 ~]$ /dm8/bin/dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/DAMENG/bak/BACKUP_FILE'"
[dmdba@DM02 ~]$ /dm8/bin/dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
四、配置C机器
4.1修改dm.ini
[dmdba@DM03 ~]$ vi /dm8/data/DAMENG/dm.ini
INSTANCE_NAME = RWC1_02B #数据库实例名
4.2替换dmarch.ini
[dmdba@DM03 ~]$ vi /dm8/data/DAMENG/dmarch.ini
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/data/DAMENG/arch/ #本地归档存放路径
ARCH_FILE_SIZE = 1024 #单个归档大小,单位MB
ARCH_SPACE_LIMIT = 51200 #归档上限,单位MB
4.3创建dmwatcher.ini
[dmdba@DM03 ~]$ vi /dm8/data/DAMENG/dmwatcher.ini
[GRWC1]
DW_TYPE = LOCAL #本地守护类型
DW_MODE = MANUAL #故障手动切换模式
DW_ERROR_TIME = 20 #远程守护进程故障认定时间
INST_ERROR_TIME = 20 #本地实例故障认定时间
INST_OGUID = 45331 #守护系统唯一OGUID值
INST_INI = /dm8/data/DAMENG/dm.ini #dm.ini文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm8/bin/dmserver #命令行方式启动
4.4相同配置项
dmmal.ini、dmwatcher.ini、dmtimer.ini配置项与A机器相同,不需要修改
4.5注册服务
[root@DM03 ~]# /dm8/script/root/dm_service_installer.sh -t dmserver -p RWC1_02B -dm_ini /dm8/data/DAMENG/dm.ini -m mount
[root@DM03 ~]# /dm8/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dm8/data/DAMENG/dmwatcher.ini
备注:删除自启
[root@DM03 ~]# /dm8/script/root/dm_service_uninstaller.sh -n DmServiceRWC1_02B
[root@DM03 ~]# /dm8/script/root/dm_service_uninstaller.sh -n DmWatcherServiceWatcher
4.6恢复数据
[dmdba@DM03 ~]$ /dm8/bin/dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/DAMENG/bak/BACKUP_FILE'"
[dmdba@DM03 ~]$ /dm8/bin/dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/DAMENG/bak/BACKUP_FILE'"
[dmdba@DM03 ~]$ /dm8/bin/dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
五、配置监视器
1、在各节点数据库的bin目录中 存放非确认监视器配置文件。
2、在确认监视器机器上(非集群节点) 注册确认监视器自启服务。
5.1创建dmmonitor.ini
[dmdba@DEM ~]$ vi /dm8/bin/dmmonitor.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
[GRWC1]
MON_INST_OGUID = 45331 #组GRWC1的唯一OGUID 值
MON_DW_IP = 192.168.10.100:5436 #IP对应MAL_HOST,PORT对应MAL_DW_PORT
MON_DW_IP = 192.168.10.101:5436
MON_DW_IP = 192.168.10.102:5436
5.2注册服务
[root@DEM ~]$ /dm8/script/root/dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /dm8/bin/dmmonitor.ini
备注:删除自启
[root@DEM ~]$ /dm8/script/root/dm_service_uninstaller.sh -n DmMonitorServiceMonitor
六、启动服务及查看信息
6.1启动数据库并修改参数
A机器
[dmdba@DM01 ~]$ /dm8/bin/DmServiceRWC1_01 start
[dmdba@DM01 ~]$ /dm8/bin/disql SYSDBA/SYSDBA
SQL> SP_SET_OGUID(45331);
SQL> ALTER DATABASE PRIMARY;
B机器
[dmdba@DM02 ~]$ /dm8/bin/DmServiceRWC1_01B start
[dmdba@DM02 ~]$ /dm8/bin/disql SYSDBA/SYSDBA
SQL> SP_SET_OGUID(45331);
SQL> ALTER DATABASE STANDBY;
C机器
[dmdba@DM03 ~]$ /dm8/bin/DmServiceRWC1_02B start
[dmdba@DM03 ~]$ /dm8/bin/disql SYSDBA/SYSDBA
SQL> SP_SET_OGUID(45331);
SQL> ALTER DATABASE STANDBY;
6.2启动守护进程
A/B/C机器:[dmdba@DM01 ~]$ /dm8/bin/DmWatcherServiceWatcher start
6.3启动监视器
[dmdba@DEM ~]$ /dm8/bin/DmMonitorServiceMonitor start
前台启动:[dmdba@DEM ~]$ /dm8/bin/dmmonitor /dm8/bin/dmmonitor.ini
6.4启停集群
启动:A/B/C机器守护进程
A/B/C机器:[dmdba@DM01 ~]$ /dm8/bin/DmWatcherServiceWatcher start
停止:A/B/C机器守护进程→A机器RWC1_01主库→B机器RWC1_01B备库→C机器RWC1_02B备库
A/B/C机器:[dmdba@DM01 ~]$ /dm8/bin/DmWatcherServiceWatcher stop
A机器:[dmdba@DM01 ~]$ /dm8/bin/DmServiceRWC1_01 stop
B机器:[dmdba@DM02 ~]$ /dm8/bin/DmServiceRWC1_01B stop
C机器:[dmdba@DM03 ~]$ /dm8/bin/DmServiceRWC1_02B stop
6.5 查看非确认监视器状态
[dmdba@DM01 bin]$ ./dmmonitor dmmonitor.ini
[monitor] 2022-08-11 11:14:32: DMMONITOR[4.0] V8
[monitor] 2022-08-11 11:14:32: DMMONITOR[4.0] IS READY.
[monitor] 2022-08-11 11:14:33: 收到守护进程(RWC1_01)消息
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2022-08-11 11:14:32 OPEN OK RWC1_01 OPEN PRIMARY VALID 9 119151 119157
[monitor] 2022-08-11 11:14:33: 收到守护进程(RWC1_01B)消息
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2022-08-11 11:14:32 OPEN OK RWC1_01B OPEN STANDBY VALID 9 119151 119151
[monitor] 2022-08-11 11:14:33: 收到守护进程(RWC1_02B)消息
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2022-08-11 11:14:32 OPEN OK RWC1_02B OPEN STANDBY NULL 0 118837 118837
show
2022-08-11 11:14:37
#================================================================================#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRWC1 45331 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.10.100 5436 2022-08-11 11:14:36 GLOBAL VALID OPEN RWC1_01 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.10.100 5236 OK RWC1_01 OPEN PRIMARY 0 0 REALTIME VALID 30220 119167 30220 119167 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.10.101 5436 2022-08-11 11:14:36 GLOBAL VALID OPEN RWC1_01B 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.10.101 5236 OK RWC1_01B OPEN STANDBY 0 0 REALTIME VALID 23825 119167 23825 119167 NONE
DATABASE(RWC1_01B) APPLY INFO FROM (RWC1_01), REDOS_PARALLEL_NUM (1):
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[30220, 30220, 30220], (RLSN, SLSN, KLSN)[119167, 119167, 119167], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (119167)
ASYNC SOURCE INSTANCE: RWC1_01
<<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.102 5436 2022-08-11 11:14:36 LOCAL VALID OPEN RWC1_02B OK 1 1 OPEN STANDBY DSC_OPEN NONE NULL
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.10.102 5236 OK RWC1_02B OPEN STANDBY 0 0 NONE NULL 10702 118837 10702 118837 NONE
DATABASE(RWC1_02B) APPLY INFO FROM (RWC1_01), REDOS_PARALLEL_NUM (1), ARCH_SEND_UNTIL_TIME[NONE], APPLY_UNTIL_TIME[FALSE]:
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[30107, 30107, 30107], (RLSN, SLSN, KLSN)[118837, 118837, 118837], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (118837)
#================================================================================#
6.6 DEM安装部署后添加到集群中,查看状态
7故障测试
7.1手动切换灾备数据库
login
用户名:SYSDBA
密码:
[monitor] 2022-08-11 11:29:10: 登录监视器成功!
choose switchover
Can choose one of the following instances to do switchover:
1: RWC1_01B
switchover RWC1_01B
[monitor] 2022-08-11 11:29:28: 开始切换实例RWC1_01B
[monitor] 2022-08-11 11:29:28: 通知守护进程RWC1_01切换SWITCHOVER状态
[monitor] 2022-08-11 11:29:28: 守护进程(RWC1_01)状态切换 [OPEN-->SWITCHOVER]
[monitor] 2022-08-11 11:29:29: 切换守护进程RWC1_01为SWITCHOVER状态成功
[monitor] 2022-08-11 11:29:29: 通知守护进程RWC1_01B切换SWITCHOVER状态
[monitor] 2022-08-11 11:29:29: 守护进程(RWC1_01B)状态切换 [OPEN-->SWITCHOVER]
[monitor] 2022-08-11 11:29:30: 切换守护进程RWC1_01B为SWITCHOVER状态成功
[monitor] 2022-08-11 11:29:30: 实例RWC1_01开始执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句
[monitor] 2022-08-11 11:29:31: 实例RWC1_01执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句成功
[monitor] 2022-08-11 11:29:31: 实例RWC1_01B开始执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句
[monitor] 2022-08-11 11:29:31: 实例RWC1_01B执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句成功
[monitor] 2022-08-11 11:29:31: 实例RWC1_01开始执行ALTER DATABASE MOUNT语句
[monitor] 2022-08-11 11:29:32: 实例RWC1_01执行ALTER DATABASE MOUNT语句成功
[monitor] 2022-08-11 11:29:32: 实例RWC1_01B开始执行SP_APPLY_KEEP_PKG()语句
[monitor] 2022-08-11 11:29:33: 实例RWC1_01B执行SP_APPLY_KEEP_PKG()语句成功
[monitor] 2022-08-11 11:29:33: 实例RWC1_01B开始执行ALTER DATABASE MOUNT语句
[monitor] 2022-08-11 11:29:33: 实例RWC1_01B执行ALTER DATABASE MOUNT语句成功
[monitor] 2022-08-11 11:29:33: 实例RWC1_01开始执行ALTER DATABASE STANDBY语句
[monitor] 2022-08-11 11:29:33: 实例RWC1_01执行ALTER DATABASE STANDBY语句成功
[monitor] 2022-08-11 11:29:33: 实例RWC1_01B开始执行ALTER DATABASE PRIMARY语句
[monitor] 2022-08-11 11:29:33: 实例RWC1_01B执行ALTER DATABASE PRIMARY语句成功
[monitor] 2022-08-11 11:29:33: 通知实例RWC1_01B修改所有归档状态无效
[monitor] 2022-08-11 11:29:33: 修改所有实例归档为无效状态成功
[monitor] 2022-08-11 11:29:33: 实例RWC1_01开始执行ALTER DATABASE OPEN FORCE语句
[monitor] 2022-08-11 11:29:33: 实例RWC1_01执行ALTER DATABASE OPEN FORCE语句成功
[monitor] 2022-08-11 11:29:33: 实例RWC1_01B开始执行ALTER DATABASE OPEN FORCE语句
[monitor] 2022-08-11 11:29:33: 实例RWC1_01B执行ALTER DATABASE OPEN FORCE语句成功
[monitor] 2022-08-11 11:29:33: 实例RWC1_01开始执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句
[monitor] 2022-08-11 11:29:33: 实例RWC1_01执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句成功
[monitor] 2022-08-11 11:29:33: 实例RWC1_01B开始执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句
[monitor] 2022-08-11 11:29:34: 实例RWC1_01B执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句成功
[monitor] 2022-08-11 11:29:34: 通知守护进程RWC1_01切换OPEN状态
[monitor] 2022-08-11 11:29:34: 守护进程(RWC1_01)状态切换 [SWITCHOVER-->OPEN]
[monitor] 2022-08-11 11:29:35: 切换守护进程RWC1_01为OPEN状态成功
[monitor] 2022-08-11 11:29:35: 通知守护进程RWC1_01B切换OPEN状态
[monitor] 2022-08-11 11:29:35: 守护进程(RWC1_01B)状态切换 [SWITCHOVER-->OPEN]
[monitor] 2022-08-11 11:29:36: 切换守护进程RWC1_01B为OPEN状态成功
[monitor] 2022-08-11 11:29:36: 通知组(GRWC1)的守护进程执行清理操作
[monitor] 2022-08-11 11:29:36: 清理守护进程(RWC1_01)请求成功
[monitor] 2022-08-11 11:29:36: 清理守护进程(RWC1_01B)请求成功
[monitor] 2022-08-11 11:29:36: 清理守护进程(RWC1_02B)请求成功
[monitor] 2022-08-11 11:29:36: 实例RWC1_01B切换成功
2022-08-11 11:29:36
#================================================================================#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRWC1 45331 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.10.101 5436 2022-08-11 11:29:36 GLOBAL VALID OPEN RWC1_01B 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.10.101 5236 OK RWC1_01B OPEN PRIMARY 0 0 REALTIME VALID 30630 122665 30630 122665 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.10.100 5436 2022-08-11 11:29:36 GLOBAL VALID OPEN RWC1_01 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.10.100 5236 OK RWC1_01 OPEN STANDBY 0 0 REALTIME INVALID 30629 120219 30629 120219 NONE
DATABASE(RWC1_01) APPLY INFO FROM (RWC1_01B), REDOS_PARALLEL_NUM (1):
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[30629, 30629, 30629], (RLSN, SLSN, KLSN)[120219, 120219, 120219], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (120219)
ASYNC SOURCE INSTANCE: RWC1_01B
<<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.102 5436 2022-08-11 11:29:36 LOCAL VALID OPEN RWC1_02B OK 1 1 OPEN STANDBY DSC_OPEN NONE NULL
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.10.102 5236 OK RWC1_02B OPEN STANDBY 0 0 NONE NULL 10702 119553 10702 119553 NONE
DATABASE(RWC1_02B) APPLY INFO FROM (RWC1_01), REDOS_PARALLEL_NUM (1), ARCH_SEND_UNTIL_TIME[NONE], APPLY_UNTIL_TIME[FALSE]:
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[30378, 30378, 30378], (RLSN, SLSN, KLSN)[119553, 119553, 119553], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (119553)
#================================================================================#
[monitor] 2022-08-11 11:29:38: 守护进程(RWC1_01B)状态切换 [OPEN-->RECOVERY]
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2022-08-11 11:29:38 RECOVERY OK RWC1_01B OPEN PRIMARY VALID 10 122666 122666
[monitor] 2022-08-11 11:29:39: 守护进程(RWC1_01B)状态切换 [RECOVERY-->OPEN]
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2022-08-11 11:29:39 OPEN OK RWC1_01B OPEN PRIMARY VALID 10 122666 122667
7.2自动切换灾备数据库
[dmdba@DM02 ~]$ ps -ef |grep dms
dmdba 7705 7650 0 11:32 pts/4 00:00:00 grep --color=auto dms
dmdba 113975 1 0 03:22 pts/0 00:03:21 /dm8/bin/dmserver path=/dm8/data/DAMENG/dm.ini -noconsole mount
[dmdba@DM02 ~]$ kill -9 113975
[monitor] 2022-08-11 11:32:32: 实例RWC1_01B[PRIMARY, OPEN, ISTAT_SAME:TRUE]故障
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2022-08-11 11:32:32 STARTUP ERROR RWC1_01B OPEN PRIMARY VALID 10 122863 122864
[monitor] 2022-08-11 11:32:32: 守护进程(RWC1_01B)状态切换 [OPEN-->STARTUP]
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2022-08-11 11:32:32 STARTUP ERROR RWC1_01B OPEN PRIMARY VALID 10 122863 122864
[monitor] 2022-08-11 11:32:34: 守护进程(RWC1_01)状态切换 [OPEN-->TAKEOVER]
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2022-08-11 11:32:34 TAKEOVER OK RWC1_01 OPEN STANDBY VALID 10 122863 122863
[monitor] 2022-08-11 11:32:37: 守护进程(RWC1_01)状态切换 [TAKEOVER-->OPEN]
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2022-08-11 11:32:36 OPEN OK RWC1_01 OPEN PRIMARY VALID 11 125310 125310
[monitor] 2022-08-11 11:32:54: 实例RWC1_01B[PRIMARY, AFTER REDO, ISTAT_SAME:TRUE]恢复正常
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2022-08-11 11:32:54 STARTUP OK RWC1_01B AFTER REDO PRIMARY VALID 10 122864 122864
[monitor] 2022-08-11 11:32:55: 守护进程(RWC1_01B)状态切换 [STARTUP-->UNIFY EP]
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2022-08-11 11:32:55 UNIFY EP OK RWC1_01B MOUNT STANDBY INVALID 10 122864 122864
[monitor] 2022-08-11 11:32:55: 守护进程(RWC1_01B)状态切换 [UNIFY EP-->STARTUP]
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2022-08-11 11:32:55 STARTUP OK RWC1_01B OPEN STANDBY INVALID 10 122864 122864
[monitor] 2022-08-11 11:32:55: 守护进程(RWC1_01B)状态切换 [STARTUP-->OPEN]
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2022-08-11 11:32:55 OPEN OK RWC1_01B OPEN STANDBY INVALID 10 122864 122864
[monitor] 2022-08-11 11:32:55: 守护进程(RWC1_01)状态切换 [OPEN-->RECOVERY]
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2022-08-11 11:32:55 RECOVERY OK RWC1_01 OPEN PRIMARY VALID 11 125322 125322
[monitor] 2022-08-11 11:32:58: 守护进程(RWC1_01)状态切换 [RECOVERY-->OPEN]
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2022-08-11 11:32:58 OPEN OK RWC1_01 OPEN PRIMARY VALID 11 125323 125323
show
2022-08-11 11:33:10
#================================================================================#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRWC1 45331 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.10.100 5436 2022-08-11 11:33:10 GLOBAL VALID OPEN RWC1_01 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.10.100 5236 OK RWC1_01 OPEN PRIMARY 0 0 REALTIME VALID 30726 125326 30727 125327 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.10.101 5436 2022-08-11 11:33:10 GLOBAL VALID OPEN RWC1_01B 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.10.101 5236 OK RWC1_01B OPEN STANDBY 0 0 REALTIME VALID 30713 125327 30713 125327 NONE
DATABASE(RWC1_01B) APPLY INFO FROM (RWC1_01), REDOS_PARALLEL_NUM (1):
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[30727, 30727, 30727], (RLSN, SLSN, KLSN)[125327, 125327, 125327], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (125327)
ASYNC SOURCE INSTANCE: RWC1_01
<<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.102 5436 2022-08-11 11:33:10 LOCAL VALID OPEN RWC1_02B OK 1 1 OPEN STANDBY DSC_OPEN NONE NULL
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.10.102 5236 OK RWC1_02B OPEN STANDBY 0 0 NONE NULL 10702 122667 10702 122667 NONE
DATABASE(RWC1_02B) APPLY INFO FROM (RWC1_01B), REDOS_PARALLEL_NUM (1), ARCH_SEND_UNTIL_TIME[NONE], APPLY_UNTIL_TIME[FALSE]:
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[30633, 30633, 30633], (RLSN, SLSN, KLSN)[122667, 122667, 122667], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (122667)
#================================================================================#
8验证主+备+异备同步是否正常
主库:创建一张测试表,记录创建时间
[dmdba@DM01 bin]$ ./disql SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于主库打开状态
登录使用时间 : 3.913(ms)
disql V8
SQL>
SQL> select now();
行号 NOW()
---------- --------------------------
1 2022-08-11 14:06:59.995948
已用时间: 1.888(毫秒). 执行号:684900.
SQL>
SQL> create TABLE ceshi1 as select * from dba_objects;
操作已执行
已用时间: 156.193(毫秒). 执行号:684901.
SQL>
SQL> select count(*) from SYSDBA.CESHI1;
行号 COUNT(*)
---------- --------------------
1 881
已用时间: 3.022(毫秒). 执行号:684902.
SQL>
备库查询:表和数据正常
[dmdba@DM02 bin]$ ./disql SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于备库打开状态
登录使用时间 : 7.219(ms)
disql V8
SQL>
SQL> select now();
行号 NOW()
---------- --------------------------
1 2022-08-11 14:07:19.989434
已用时间: 4.597(毫秒). 执行号:262500.
SQL>
SQL> select count(*) from SYSDBA.CESHI1;
行号 COUNT(*)
---------- --------------------
1 881
已用时间: 2.661(毫秒). 执行号:262501.
SQL>
SQL>
异备库查询:发现表不存在,等待十分钟
[dmdba@DM03 bin]$ ./disql SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于备库打开状态
登录使用时间 : 18.955(ms)
disql V8
SQL>
SQL> select now();
行号 NOW()
---------- --------------------------
1 2022-08-11 14:07:34.250343
已用时间: 2.691(毫秒). 执行号:368000.
SQL>
SQL> select count(*) from SYSDBA.CESHI1;
select count(*) from SYSDBA.CESHI1;
第1 行附近出现错误[-2106]:无效的表或视图名[CESHI1].
已用时间: 2.424(毫秒). 执行号:0.
SQL>
SQL> select now();
行号 NOW()
---------- --------------------------
1 2022-08-11 14:17:26.885394
已用时间: 1.889(毫秒). 执行号:368001.
SQL> select count(*) from SYSDBA.CESHI1;
行号 COUNT(*)
---------- --------------------
1 881
已用时间: 2.281(毫秒). 执行号:368002.
SQL>
数据同步正常,DDL操作的结果也是一样的
社区地址:https://eco.dameng.com