注册
达梦实时主备集群部署
培训园地/ 文章详情 /

达梦实时主备集群部署

joe_d 2024/03/13 1366 0 0

1.部署主备集群
1.1.环境准备
安装准备前先在两台主备服务器安装好数据库,本示例中组名为“GRP1” ,配置为实时主备,主库命名为“CB01” ,备库命名为“CB02”。
配置环境说明:
image.png
MAL系统是基于 TCP 协议实现的一种内部通信机制,DM通过 MAL系统实现 Redo日志传输, 以及其他一 些实例间的消息通讯。
守护进程 (dmwatcher ) 是数据库实例和监视器之间信息流转的桥梁。数据库实例向本地守护进程发送信息, 接收本地守护进程的消息和命令;
监视器 (dmmonitor) 接收守护进程的消息,并向守护进程发送命令;数据库实例与监视器之间没有直接的消 息交互;
守护进程解析并执行监视器发起的各种命令 (Switchover/Takeover/Open force 等) ,并在必要时通知数据库实例执行相应的操作。
MAL_DW_PORT:守护进程监听端口,其他守护进程或监视器使用 MAL_HOST + MAL_DW_ PORT创建 TCP 连 接。监视器配置文件 dmmonitor.ini 中,MON_DW_ IP 就是一组 MAL_HOST: MAL_DW_PORT。
MAL_INST_DW_PORT:实例对守护进程的监听端口,守护进程使用 MAL_HOST + MAL_INST_DW_PORT 创建到实例的 TCP连接。
1.2.主备库节点初始化实例
按实际需要初始化实例:
本例只指定数据库存放路径、DB_NAME、INSTANCE_NAME,页大小为32k,其它参数使用默认值:

[dmdba@Kylin01 dmdata]$ dminit PATH=/dm/dmdata DB_NAME=CB INSTANCE_NAME=CB01 PORT_NUM=5236 page_size=32
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2024-03-22
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

 log file path: /dm/dmdata/CB/CB01.log


 log file path: /dm/dmdata/CB/CB02.log

write to dir [/dm/dmdata/CB].
create dm database success. 2023-03-02 13:47:16
启动主库验证实例能否正常启动:
dmserver /dm/dmdata/CB/dm.ini
    file dm.key not found, use default license!
version info: develop
DM Database Server 64 V8 03134283968-20230322-185138-20033 startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2024-03-22
file lsn: 0
ndct db load finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct fill fast pool finished
pseg_set_gtv_trxid_low next_trxid in mem:[1002]
pseg_collect_mgr_items, total collect 0 active_trxs, 0 cmt_trxs, 0 pre_cmt_trxs, 0 to_release_trxs, 0 active_pages, 0 cmt_pages, 0 pre_cmt_pages, 0 to_release_pages, 0 mgr pages, 0 mgr recs!
next_trxid in mem:[2004]
next_trxid = 3006.
pseg recv finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
trx: 3006 purged 1 pages
trx: 3025 purged 1 pages
。。。。。。
trx: 3657 purged 1 pages
trx: 3659 purged 1 pages
trx: 3661 purged 1 pages
systables desc init success.
ndct_db_load_info success.
nsvr_process_before_open begin.
nsvr_process_before_open success.
SYSTEM IS READY.  --数据库启动成功
修改sysdba密码
SQL>  alter user sysdba identified by dameng123;

1.3.注册服务并启动实例

[root@Kylin01 ~]# /dm/dmdbms/dm8/script/root/dm_service_installer.sh -t dmserver -dm_ini /dm/dmdata/CB/dm.ini -p CB
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceCB.service → /usr/lib/systemd/system/DmServiceCB.service.
创建服务(DmServiceCB)完成
#关闭DmServiceCB服务开机自启动
[root@Kylin01 ~]# systemctl disable DmServiceCB.service 
启动DmServiceCB服务
[root@Kylin01 ~]# su - dmdba
Last login: Wed Jun  7 13:40:36 CST 2023 on pts/0
[dmdba@Kylin01 ~]$ DmServiceCB start
Starting DmServiceCB:                                      [ OK ]
[dmdba@Kylin01 ~]$ ps -ef|grep dms
dmdba      26529       1  0 14:01 pts/0    00:00:00 /dm/dmdbms/dm8/bin/dmserver path=/dm/dmdata/CB/dm.ini -noconsole
dmdba      26610   26459  0 14:02 pts/0    00:00:00 grep dms

1.4.启动归档模式

[dmdba@Kylin01 ~]$ disql sysdba/dameng123
disql V8
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 35.282(ms)
SQL> alter database mount;
操作已执行
已用时间: 4.241(毫秒). 执行号:0.
SQL> alter database add archivelog 'DEST=/dm/dmarch,TYPE=local, FILE_SIZE=128,space_limit=0';
操作已执行
已用时间: 7.955(毫秒). 执行号:0.
SQL> alter database archivelog;
操作已执行
已用时间: 19.771(毫秒). 执行号:0.
SQL> alter database open;
操作已执行
已用时间: 4.652(毫秒). 执行号:0.
SQL> select arch_mode from v$database;

行号     ARCH_MODE
---------- ---------
1          Y

已用时间: 1.293(毫秒). 执行号:700.
SQL> 
[dmdba@Kylin01 ~]$ cat /dm/dmdata/CB/dmarch.ini 
#DaMeng Database Archive Configuration file
#this is comments

[ARCHIVE_LOCAL1]
        ARCH_TYPE            = LOCAL        
        ARCH_DEST            = /dm/dmarch        
        ARCH_FILE_SIZE       = 128        
        ARCH_SPACE_LIMIT     = 0        
        ARCH_FLUSH_BUF_SIZE  = 0        
        ARCH_HANG_FLAG       = 1   

1.5.使用主库备份还原备库

主库创建备份目录
mkdir -p  /dm/dmback
备份主库:
./dmrman CTLSTMT="BACKUP DATABASE '/dm/dmdata/CB/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET  '/dm/dmback/BACKUP_FILE_01'" 
可以使用联机备份:
SQL> backup database full backupset '/dm/dmback/CB_full_01';
主库备份后创建测试表:
创建测试表造数据:
SQL>
DROP TABLE TAB_FOR_RECOVER;
CREATE TABLE TAB_FOR_RECOVER(C1 INT,create_time datetime);
BEGIN
FOR I IN 1..100 LOOP
INSERT INTO TAB_FOR_RECOVER VALUES(I,sysdate);
COMMIT;
END LOOP;
END;
/
SQL> select count(*) from TAB_FOR_RECOVER;

行号     COUNT(*)            
---------- --------------------
1          100

 
到备库上创建备份目录和数据库文件目录:
mkdir -p  /dm/dmback
 
主库上拷贝备份到备库:
scp -r /dm/dmback/CB_full_01/ 192.168.1.32:/dm/dmback/
 初始化备库实例:
dminit PATH=/dm/dmdata DB_NAME=CB INSTANCE_NAME=CB02 PORT_NUM=5236 page_size=32
备库还原:
[dmdba@Kylin02 dmdata]$ cd /dm/dmdbms/dm8/bin
./dmrman CTLSTMT="RESTORE DATABASE '/dm/dmdata/CB/dm.ini' FROM BACKUPSET '/dm/dmback/CB_full_01'"
./dmrman CTLSTMT="RECOVER DATABASE  '/dm/dmdata/CB/dm.ini'  FROM  BACKUPSET '/dm/dmback/CB_full_01'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm/dmdata/CB/dm.ini' UPDATE DB_MAGIC"
主备库permanent_magic一样。

1.6.修改dm.ini参数

修改主备库dm.ini参数:
vi /dm/dmdata/CB/dm.ini
修改主备库参数,注意 2 个库的 instance_name 参数不同。
INSTANCE_NAME = CB01
#INSTANCE_NAME = CB02
PORT_NUM = 5236    #数据库实例监听端口
ALTER_MODE_STATUS = 0    #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2    #不允许备库 OFFLINE  表空间
MAL_INI = 1    #打开 MAL  系统
ARCH_INI = 1    #打开归档配置

1.7.配置dmmal.ini文件

主备库编辑dmmal.ini文件:集群中所有节点内容必须一致。
vi /dm/dmdata/CB/dmmal.ini
添加内容: 
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = CB01 #与dm.ini中的INSTANCE_NAME一致 
MAL_HOST = 192.168.20.131 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5238 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.1.31#实例的对外服务 IP 地址
MAL_INST_PORT = 5236 # 实例的对外服务端口, 和dm.ini 中的 PORT_NUM 一致
MAL_INST_DW_PORT = 5237 #实例监听守护进程TCP 连接的端口
MAL_DW_PORT = 5239 #实例对应的守护进程监听 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME=CB02# 实 例 名 , 和dm.ini中 的 INSTANCE_NAME 一致
MAL_HOST = 192.168.20.132 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5238 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.1.32 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 # 实例的对外服务端口, 和dm.ini 中的 PORT_NUM 一致
MAL_INST_DW_PORT = 5237 #实例监听守护进程TCP 连接的端口
MAL_DW_PORT = 5239 #实例对应的守护进程监听 TCP 连接的端口

1.8.配置归档dmarch.ini文件

实时归档只有数据库是primary角色时才有效,指定的实例名对应mal配置文件中的实例名。
2节点都配置,ARCH_DEST 分写写对方的实例。比如当前实例CB01是主库,则ARCH_ DEST配置为CB02。
创建归档目录:
mkdir -p /dm/dmarch
 
编辑归档配置文件:
vi /dm/dmdata/CB/dmarch.ini
 
主库上添加内容(CB01实例):
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME    #实时归档类型
ARCH_DEST = CB02    #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 128       #单位 Mb ,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0    #单位 Mb ,0  表示无限制,范围 1024~4294967294M
 
备库上添加内容(CB02实例):
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME    #实时归档类型
ARCH_DEST = CB01    #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 128       #单位 Mb ,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0    #单位 Mb ,0  表示无限制,范围 1024~4294967294M

1.9.配置守护进程

编辑数据守护配置文件:
vi /dm/dmdata/CB/dmwatcher.ini
添加内容:
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #手动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 20220607 #守护系统唯一OGUID值
INST_INI = /dm/dmdata/CB/dm.ini #dm.ini  配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm/dmdbms/dm8/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭

在 DM DW4.0 之后,已经不再需要生成 dmwatcher.ctl  控制文件,dmctlcvt  工具也不再支持 dmwaterch.ctl  文件的生成。
[dmdba@Kylin01 dmback]$ dmctlcvt help
DMCTLCVT V8
version: 03134283968-20230322-185138-20033 Pack9

格式: ./dmctlcvt KEYWORD=value
注意: 控制文件名称必须指定为dm.ctl、dmmpp.ctl、dss.ctl

关键字              说明
--------------------------------------------------------------------------------
TYPE                1 转换控制文件为文本文件(源文件路径中控制文件名称必须是dm.ctl或dmmpp.ctl或dss.ctl)
                    2 转换文本文件为控制文件(目标文件路径中控制文件名称必须是dm.ctl或dmmpp.ctl或dss.ctl)
SRC                 源文件路径
DEST                目标文件路径
DCR_INI             dmdcr.ini文件路径
DFS_INI             dmdfs.ini文件路径
HELP                打印帮助信息

示例:
./dmctlcvt TYPE=1 SRC=/opt/dmdbms/data/dameng/dm.ctl DEST=/opt/dmdbms/data/dameng/dmctl.txt
./dmctlcvt TYPE=2 SRC=/opt/dmdbms/data/dameng/dmctl.txt DEST=/opt/dmdbms/data/dameng/dm.ctl

1.10.以 mount 模式启动主备库

以 mount  方式启动主库
dmserver /dm/dmdata/CB/dm.ini mount
dmserver /dm/dmdata/CB/dm.ini mount
一定要以 mount方式启动数据库实例,否则系统启动时会重构回滚表空间,生成 Redo日志;并且启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动 Open数据库。

1.11.设置 OGUID并修改主备库模式

启动主备库到mount,设置oguid,修改数据库模式 
主库:
disql SYSDBA/dameng123
修改为主库模式:
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); 
SQL>sp_set_oguid(20220607);
ALTER DATABASE PRIMARY;
SQL>sp_set_oguid(20220607);
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
 
 
备库:
disql SYSDBA/dameng123
修改为备库模式:
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); 
SQL>sp_set_oguid(20220607);
SQL>ALTER DATABASE STANDBY;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

1.12.配置监视器

本例为自动切换需要配置确认监视器dmmonitor.ini文件(确认监视器只能配一个,一般选择主备库以外的其他机器,安装了达梦服务端的即可),其中 MON_DW_IP中的IP和PORT和dmmal.ini中的MAL_HOST和MAL_DW_PORT配置项保持一致。
vi /dm/dmdata/CB/dmmonitor.ini
 添加内容:
MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /dm/dmdbms/dm8/log/ #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s  定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间

[GRP1]
MON_INST_OGUID = 20220607    #组 GRP1的唯一OGUID值
MON_DW_IP = 192.168.20.131:5239
MON_DW_IP = 192.168.20.132:5239

1.13.启动数据守护和监视器

主备库启动守护进程:(会自动启动数据库)
dmwatcher /dm/dmdata/CB/dmwatcher.ini
 守护进程启动后主备数据库会被open
SQL> select STATUS$ from v$instance;

行号     STATUS$
---------- -------
1          OPEN


启动监视器:查看主备集群运行情况
dmmonitor /dm/dmdata/CB/dmmonitor.ini
通过show命令查看主备集群信息。

image.png
1.14.注册集群服务

1)注册守护进程服务
主备库,将守护进程注册为服务(数据库会由数据守护自动拉起),需要root用户登录注册服务:
[root@Kylin01 root]# /dm/dmdbms/dm8/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /dm/dmdata/CB/dmwatcher.ini -p CB
Created symlink /etc/systemd/system/multi-user.target.wants/DmWatcherServiceCB.service → /usr/lib/systemd/system/DmWatcherServiceCB.service.
创建服务(DmWatcherServiceCB)完成

 [root@Kylin02 ~]# /dm/dmdbms/dm8/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /dm/dmdata/CB/dmwatcher.ini -p CB
Created symlink /etc/systemd/system/multi-user.target.wants/DmWatcherServiceCB.service → /usr/lib/systemd/system/DmWatcherServiceCB.service.
创建服务(DmWatcherServiceCB)完成
 
服务名:DmWatcherServiceCB
 
启动守护进程服务
su - dmdba
主:
[dmdba@Kylin01 CB]$ DmWatcherServiceCB start
Starting DmWatcherServiceCB:                               [ OK ]
备:
[dmdba@Kylin02 bin]$ DmWatcherServiceCB start
Starting DmWatcherServiceCB:                               [ OK ]
 
2)将确认监视器注册为服务
主库:
[root@Kylin01 ~]# /dm/dmdbms/dm8/script/root/dm_service_installer.sh -t dmmonitor -p CB -monitor_ini /dm/dmdata/CB/dmmonitor.ini
Created symlink /etc/systemd/system/multi-user.target.wants/DmMonitorServiceCB.service → /usr/lib/systemd/system/DmMonitorServiceCB.service.
创建服务(DmMonitorServiceCB)完成
关闭自启动服务:
systemctl disable DmMonitorServiceCB.service
备库:
[root@Kylin02 ~]# /dm/dmdbms/dm8/script/root/dm_service_installer.sh -t dmmonitor -p CB -monitor_ini /dm/dmdata/CB/dmmonitor.ini
Created symlink /etc/systemd/system/multi-user.target.wants/DmMonitorServiceCB.service → /usr/lib/systemd/system/DmMonitorServiceCB.service.
创建服务(DmMonitorServiceCB)完成

3)创建非确认监视器用于管理:
cp /dm/dmdata/CB/dmmonitor.ini /dm/dmdata/CB/dmmonitor_0.ini
[dmdba@Kylin02 ~]$ cat  /dm/dmdata/CB/dmmonitor_0.ini
MON_DW_CONFIRM = 0 #非确认监视器模式
MON_LOG_PATH = /dm/dmdbms/dm8/log/ #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s  定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间

[GRP1]
MON_INST_OGUID = 20220607    #组 GRP1的唯一OGUID值
MON_DW_IP = 192.168.20.131:5239
MON_DW_IP = 192.168.20.132:5239

启动非确认监视器查看主备运行情况:
dmmonitor /dm/dmdata/CB/dmmonitor_0.ini

image.png

1.15.主备同步测试
主库:
image.png
测试插入一条数据:
SQL> insert into TAB_FOR_RECOVER values(2,sysdate);commit;
image.png
备库:
image.png
image.png
1.16.配置dm_svc.conf

在/etc 目录下会自动生成集群的dm_svc.conf配置文件,请自行复制它到客户端机器的相关目录下:
dm_svc.conf配置文件,Windows平台下位于%SystemRoot%\system32目录,Linux平台下位于/etc目录。
 LOGIN_MODE 
指定优先登录的服务器模式。0:优先连接 Primary 模式的库,Normal 模式次之, 
最后选择 Stantby 模式;1:只连接主库;2:只连接备库;3:优先连接 Standby 模式的库,Primary 模式次之,最后选择Normal模式;4:优先连接Normal模式的库,Primary 模式次之,最后选择 Standby 模式。默认值为 4。 
 SWITCH_TIME 
检测到数据库实例故障时,接口在服务器之间切换的次数;超过设置次数没有连接到有 
效数据库时,断开连接并报错。有效值范围 1~9223372036854775807,默认值为 3。
 SWITCH_INTERVAL 
表示在服务器之间切换的时间间隔 ,单位为毫秒,有效值范围 1~9223372036854775807,默认值为 200。 

[dmdba@Kylin02 ~]$ cat /etc/dm_svc.conf
TIME_ZONE=(+8:00)
LANGUAGE=(cn)
DM_CB=(192.168.1.31:5236,192.168.1.32:5236)

[DM_CB]
LOGIN_MODE=(1)
SWITCH_TIME=2000
SWITCH_INTERVAL=10

此处需要注意将服务名(红色字体部分)改为:DM_DW 或自己需要的。
[dmdba@Kylin02 ~]$ disql sysdba/dameng123@DM_CB

服务器[192.168.1.31:5236]:处于主库打开状态
登录使用时间 : 18.336(ms)
disql V8
SQL> exit

2 Switchover切换测试

show
2023-03-02 22:39:06 
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG  
GRP1             20220607    FALSE           MANUAL          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.20.131      5239         2023-03-02 22:39:06  GLOBAL    VALID     OPEN           CB01             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.1.31        5236       OK        CB01             OPEN        PRIMARY   0          0            REALTIME  VALID    9992            45175           9993            45175           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.20.132      5239         2023-03-02 22:39:05  GLOBAL    VALID     OPEN           CB02             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.1.32        5236       OK        CB02             OPEN        STANDBY   0          0            REALTIME  VALID    5284            45173           5284            45173           NONE                  

DATABASE(CB02) APPLY INFO FROM (CB01), REDOS_PARALLEL_NUM (1), WAIT_APPLY[FALSE]:
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[9990, 9990, 9991], (RLSN, SLSN, KLSN)[45173, 45173, 45174], N_TSK[0], TSK_MEM_USE[512] 
REDO_LSN_ARR: (45173)
选择可以切换的实例
choose switchover grp1
Can choose one of the following instances to do switchover:
1: CB02

switchover grp1.CB02
[monitor]         2023-03-02 22:50:58: 未登录监视器或服务器公钥发生变化,请重新登录!
---登录监视器
login
用户名:sysdba
密码:
[monitor]         2023-03-02 22:51:14: 登录监视器成功!
--切换到CB02实例
switchover grp1.CB02
[monitor]         2023-03-02 22:51:43: 开始切换实例CB02
[monitor]         2023-03-02 22:51:43: 通知守护进程CB01切换SWITCHOVER状态
[monitor]         2023-03-02 22:51:44: 守护进程(CB01)状态切换 [OPEN-->SWITCHOVER]
[monitor]         2023-03-02 22:51:44: 切换守护进程CB01为SWITCHOVER状态成功
[monitor]         2023-03-02 22:51:44: 通知守护进程CB02切换SWITCHOVER状态
[monitor]         2023-03-02 22:51:44: 守护进程(CB02)状态切换 [OPEN-->SWITCHOVER]
[monitor]         2023-03-02 22:51:44: 切换守护进程CB02为SWITCHOVER状态成功
[monitor]         2023-03-02 22:51:44: 实例CB01开始执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句
[monitor]         2023-03-02 22:51:45: 实例CB01执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句成功
[monitor]         2023-03-02 22:51:45: 实例CB02开始执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句
[monitor]         2023-03-02 22:51:45: 实例CB02执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句成功
[monitor]         2023-03-02 22:51:45: 实例CB01开始执行ALTER DATABASE MOUNT语句
[monitor]         2023-03-02 22:51:45: 实例CB01执行ALTER DATABASE MOUNT语句成功
[monitor]         2023-03-02 22:51:45: 实例CB02开始执行SP_APPLY_KEEP_PKG()语句
[monitor]         2023-03-02 22:51:46: 实例CB02执行SP_APPLY_KEEP_PKG()语句成功
[monitor]         2023-03-02 22:51:46: 实例CB02开始执行ALTER DATABASE MOUNT语句
[monitor]         2023-03-02 22:51:47: 实例CB02执行ALTER DATABASE MOUNT语句成功
[monitor]         2023-03-02 22:51:47: 实例CB01开始执行ALTER DATABASE STANDBY语句
[monitor]         2023-03-02 22:51:47: 实例CB01执行ALTER DATABASE STANDBY语句成功
[monitor]         2023-03-02 22:51:47: 实例CB02开始执行ALTER DATABASE PRIMARY语句
[monitor]         2023-03-02 22:51:47: 实例CB02执行ALTER DATABASE PRIMARY语句成功
[monitor]         2023-03-02 22:51:47: 通知实例CB02修改所有归档状态无效
[monitor]         2023-03-02 22:51:47: 修改所有实例归档为无效状态成功
[monitor]         2023-03-02 22:51:47: 实例CB01开始执行ALTER DATABASE OPEN FORCE语句
[monitor]         2023-03-02 22:51:48: 实例CB01执行ALTER DATABASE OPEN FORCE语句成功
[monitor]         2023-03-02 22:51:48: 实例CB02开始执行ALTER DATABASE OPEN FORCE语句
[monitor]         2023-03-02 22:51:48: 实例CB02执行ALTER DATABASE OPEN FORCE语句成功
[monitor]         2023-03-02 22:51:48: 实例CB01开始执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句
[monitor]         2023-03-02 22:51:48: 实例CB01执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句成功
[monitor]         2023-03-02 22:51:48: 实例CB02开始执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句
[monitor]         2023-03-02 22:51:48: 实例CB02执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句成功
[monitor]         2023-03-02 22:51:48: 通知守护进程CB01切换OPEN状态
[monitor]         2023-03-02 22:51:48: 守护进程(CB01)状态切换 [SWITCHOVER-->OPEN]
[monitor]         2023-03-02 22:51:48: 切换守护进程CB01为OPEN状态成功
[monitor]         2023-03-02 22:51:48: 通知守护进程CB02切换OPEN状态
[monitor]         2023-03-02 22:51:49: 守护进程(CB02)状态切换 [SWITCHOVER-->OPEN]
[monitor]         2023-03-02 22:51:49: 切换守护进程CB02为OPEN状态成功
[monitor]         2023-03-02 22:51:49: 通知组(GRP1)的守护进程执行清理操作
[monitor]         2023-03-02 22:51:49: 清理守护进程(CB01)请求成功
[monitor]         2023-03-02 22:51:49: 清理守护进程(CB02)请求成功
[monitor]         2023-03-02 22:51:49: 实例CB02切换成功

2023-03-02 22:51:49 
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG  
GRP1             20220607    FALSE           MANUAL          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.20.132      5239         2023-03-02 22:51:49  GLOBAL    VALID     OPEN           CB02             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.1.32        5236       OK        CB02             OPEN        PRIMARY   0          0            REALTIME  VALID    10251           45429           10251           45613           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.20.131      5239         2023-03-02 22:51:49  GLOBAL    VALID     OPEN           CB01             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.1.31        5236       OK        CB01             OPEN        STANDBY   0          0            REALTIME  INVALID  10250           45428           10250           45428           NONE                  

DATABASE(CB01) APPLY INFO FROM (CB02), REDOS_PARALLEL_NUM (1), WAIT_APPLY[FALSE]:
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[10250, 10250, 10250], (RLSN, SLSN, KLSN)[45428, 45428, 45428], N_TSK[0], TSK_MEM_USE[0] 
REDO_LSN_ARR: (45428)


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

[monitor]         2023-03-02 22:51:51: 守护进程(CB02)状态切换 [OPEN-->RECOVERY]
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2023-03-02 22:51:51  RECOVERY       OK        CB02             OPEN        PRIMARY   VALID    9        45614           45614           

[monitor]         2023-03-02 22:51:55: 守护进程(CB02)状态切换 [RECOVERY-->OPEN]
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2023-03-02 22:51:54  OPEN           OK        CB02             OPEN        PRIMARY   VALID    9        45615           45616           

可以看到CB02已经切换为了主库,CB01切换为了备库。
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服