DW集群手动切换搭建

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

一、守护集群搭建

1.1、集群环境规划

服务器配置信息
A机器	B机器
业务IP	192.168.2.100	192.168.2.101
心跳IP	192.168.10.100	192.168.10.101
实例名	DW1_01	DW1_02
实例端口	5236	5236
MAL端口	5336	5336
MAL守护进程端口	5436	5436
守护进程端口	5536	5536
OGUID	45331
守护组	GDW1
安装目录	/dm8
实例目录	/dm8/data
归档目录	/dm8/arch
归档上限	51200
确认监视器IP	192.168.10.102

1.2、配置文件说明

1) 数据库配置文件 dm.ini
2) MAL 配置文件 dmmal.ini (集群内一致)
3) Redo 日志归档配置文件 dmarch.ini
4) 守护进程配置文件 dmwatcher.ini (集群内基本一致)
5) 确认监视器配置文件 dmmonitor_auto.ini
6) 普通监视器配置文件 dmmonitor_manual.ini
除了2个监视器配置文件,其他文件推荐放在 /dmdbms/data/DAMENG/下面
DAMENG :是dminit时以DB_NAME参数值创建的文件夹

1.2.1 dm.ini

配置项	参数值	配置含义
INSTANCE_NAME	DW1_01	数据库实例名(长度不超过 16 个字符),与 dmmal.ini 中的MAL_INST_NAME 对应。配置数据守护系统时,应该保持INSTANCE_NAME 是全局唯一的。
PORT_NUM	5236	数据库实例监听端口(范围 1024~65534),与 dmmal.ini 中 的 MAL_INST_PORT 对应。
DW_INACTIVE_INTERVAL	60	接收守护进程消息超时时间
ALTER_MODE_STATUS	0	是否允许手工修改数据库的模式和状态,1 表示允许,0 表示不允许,此参数可动态修改,默认为 1,数据守护环境下建议配置为 0,避免用户手工干预。
ENABLE_OFFLINE_TS	2	是否允许 offline 表空间,1 表示允许,0 表示不允许,2 表示禁止备库,其他放开。守护环境下建议配置为 2。
MAL_INI	1	系统配置开关,0 表示不启用 MAL 系统,1 表示启用 MAL系统。
ARCH_INI	1	Redo 日志归档配置开关,0 表示不启动 Redo 日志归档,1 表示启用 Redo 日志归档
RLOG_SEND_APPLY_MON	64	统计最近64次日志发送消息
在这里插入图片描述

1.3、主备手动切换

1.3.1、主库配置(192.168.10.100)

1.3.1.1、初始化实例、备份数据库
--初始化实例
[dmdba@dmp ~]$ dminit PATH=/dm8/data PAGE_SIZE=32 EXTENT_SIZE=32 INSTANCE_NAME=DW1_01 LOG_SIZE=2048

--启动服务
[dmdba@dmp ~]$ dmserver /dm8/data/DAMENG/dm.ini

--开启归档
[dmdba@dmp ~]$ /opt/dmdbms/bin/disql SYSDBA/SYSDBA@172.16.1.1:5236
SQL> ALTER DATABASE MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST=/dm8/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,'RLOG_SEND_APPLY_MON',64);
1.3.1.2、编辑dmarch.ini
[dmdba@dmp DAMENG]$ vi dmarch.ini
        ARCH_WAIT_APPLY      = 0

[ARCHIVE_LOCAL1]
        ARCH_TYPE                = LOCAL        #本地归档类型
        ARCH_DEST                = /dm8/arch    #本地归档存放路径            
        ARCH_FILE_SIZE           = 1024         #单个归档大小,单位MB
        ARCH_SPACE_LIMIT         = 51200        #归档上限,单位MB
        ARCH_FLUSH_BUF_SIZE  = 0
        ARCH_HANG_FLAG       = 1

[ARCHIVE_REALTIME]
        ARCH_TYPE                = REALTIME     #实时归档类型
        ARCH_DEST                = DW1_02       #实时归档目标实例名
1.3.1.3、创建dmmal.ini
[dmdba@dmp DAMENG]$ vi 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            = DW1_01  #实例名,和 dm.ini的INSTANCE_NAME一致 
  MAL_HOST                 = 192.168.10.100  #MAL系统监听TCP连接的IP地址 
  MAL_PORT                 = 5336  #MAL系统监听TCP连接的端口
  MAL_INST_HOST            = 192.168.2.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            = DW1_02
  MAL_HOST                 = 192.168.10.101
  MAL_PORT                 = 5336
  MAL_INST_HOST            = 192.168.2.101
  MAL_INST_PORT            = 5236
  MAL_DW_PORT              = 5436
  MAL_INST_DW_PORT         = 5536
1.3.1.4、创建dmwatcher.ini
[dmdba@dmp DAMENG]$ vi dmwatcher.ini
 [GDW1]
  DW_TYPE                  = GLOBAL  #全局守护类型
  DW_MODE                  = MANUAL  #故障手动切换模式(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
1.3.1.5、拷贝实例目录到备库
[dmdba@dmp ~]$ scp -r /dm8/data/DAMENG/ 192.168.10.101:///dm8/data/DAMENG/
1.3.1.6、注册服务
[root@dmp root]# ./dm_service_installer.sh -t dmserver -p DW1_01 -dm_ini /dm8/data/DAMENG/dm.ini -m mount
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceDW1_01.service to /usr/lib/systemd/system/DmServiceDW1_01.service.
创建服务(DmServiceDW1_01)完成
[root@dmp root]# 
[root@dmp root]# ./dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dm8/data/DAMENG/dmwatcher.ini 
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServiceWatcher.service to /usr/lib/systemd/system/DmWatcherServiceWatcher.service.
创建服务(DmWatcherServiceWatcher)完成
备注:删除自启
[root@dmp root]# ./dm_service_uninstaller.sh -n DmServiceDW1_01
[root@dmp root]# ./dm_service_uninstaller.sh -n DmWatcherServiceWatcher

1.3.2、备库配置(192.168.10.101)

1.3.2.1、编辑dm.ini替换实例名
[dmdba@dmp DAMENG]$ vi dm.ini
 #instance name
                INSTANCE_NAME                   = DW1_02                                        
1.3.2.2、编辑dmarch.ini
[dmdba@dmp DAMENG]$ vi dmarch.ini
        ARCH_WAIT_APPLY      = 0

[ARCHIVE_LOCAL1]
        ARCH_TYPE                = LOCAL        #本地归档类型
        ARCH_DEST                = /dm8/arch    #本地归档存放路径            
        ARCH_FILE_SIZE           = 1024         #单个归档大小,单位MB
        ARCH_SPACE_LIMIT         = 51200        #归档上限,单位MB
        ARCH_FLUSH_BUF_SIZE  = 0
        ARCH_HANG_FLAG       = 1

[ARCHIVE_REALTIME]
        ARCH_TYPE                = REALTIME     #实时归档类型
        ARCH_DEST                = DW1_01       #实时归档目标实例名
1.3.2.3、相同配置项

dmmal.ini和dmwatcher.ini配置相同,无需修改

1.3.2.4、注册服务
[root@dmp root]# ./dm_service_installer.sh -t dmserver -p DW1_02 -dm_ini /dm8/data/DAMENG/dm.ini -m mount
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceDW1_01.service to /usr/lib/systemd/system/DmServiceDW1_01.service.
创建服务(DmServiceDW1_01)完成
[root@dmp root]# 
[root@dmp root]# ./dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dm8/data/DAMENG/dmwatcher.ini 
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServiceWatcher.service to /usr/lib/systemd/system/DmWatcherServiceWatcher.service.
创建服务(DmWatcherServiceWatcher)完成
备注:删除自启
[root@dmp root]# ./dm_service_uninstaller.sh -n DmServiceDW1_02
[root@dmp root]# ./dm_service_uninstaller.sh -n DmWatcherServiceWatcher
1.3.2.5、恢复数据
[dmdba@dms1 ~]$ dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/DAMENG/bak/BACKUP_FILE'"
dmrman V8
RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/DAMENG/bak/BACKUP_FILE'
file dm.key not found, use default license!
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:04][Remaining:00:00:00]                                 
restore successfully.
time used: 00:00:04.597

[dmdba@dms1 ~]$ dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/DAMENG/bak/BACKUP_FILE'"
dmrman V8
RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/DAMENG/bak/BACKUP_FILE'
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[38075], file_lsn[38075]
[Percent:100.00%][Speed:0.00PKG/s][Cost:00:00:00][Remaining:00:00:00]                               
recover successfully!
time used: 00:00:02.471

[dmdba@dms1 ~]$ dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
dmrman V8
RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' UPDATE DB_MAGIC
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[38093], file_lsn[38093]
recover successfully!
time used: 00:00:01.089

1.3.3、监听器配置(192.168.10.102)

1、在各节点数据库的bin目录中 存放非确认监视器配置文件。
2、在确认监视器机器上(非集群节点)注册确认监视器自启服务。

1.3.3.1、创建dmmonitor_manual.ini
[dmdba@~]# vi /dm8/bin/dmmonitor_manual.ini
MON_DW_CONFIRM             = 0  #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
1.3.3.2、注册服务
[root@dmm root]# ./dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /dm8/bin/dmmonitor_manual.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmMonitorServiceMonitor.service to /usr/lib/systemd/system/DmMonitorServiceMonitor.service.
创建服务(DmMonitorServiceMonitor)完成
备注:删除自启
[root@dmm root]# ./dm_service_uninstaller.sh -n DmMonitorServiceMonitor
1.3.3.3、监视器常用命令

命令	含义
list	查看守护进程的配置信息
show global info	查看所有实例组的信息
tip	查看系统当前运行状态
login	登录监视器
logout	退出登录
choose switchover GDW1	主机正常:查看可切换为主机的实例列表
switchover GDW1.实例名	主机正常:使用指定组的指定实例,切换为主机
choose takeover GDW1	主机故障:查看可切换为主机的实例列表
takeover GDW1.实例名	主机故障:使用指定组的指定实例,切换为主机
choose takeover force GDW1	强制切换:查看可切换为主机的实例列表
takeover force GDW1.实例名	强制切换:使用指定组的指定实例,切换为主机
主机故障后,在备机执行SELECT SF_DW_CHECK_TAKEOVER();【1:可接管  0:不可接管】

1.3.4、启动服务

1.3.4.1、启动数据库并修改参数
192.168.10.100
[dmdba@dmp ~]$ DmServiceDW1_01 start
Starting DmServiceDW1_01: [ OK ]
[dmdba@dmp ~]$ disql SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于普通配置状态
登录使用时间 : 4.249(ms)
disql V8
SQL> SP_SET_OGUID(45331);
DMSQL 过程已成功完成
已用时间: 8.496(毫秒). 执行号:0.
SQL> ALTER DATABASE PRIMARY;
操作已执行
已用时间: 5.128(毫秒). 执行号:0.
SQL> exit;

192.168.10.101
[dmdba@dms1 ~]$ DmServiceDW1_02 start
Starting DmServiceDW1_02: [ OK ]
[dmdba@dms1 ~]$ disql SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于普通配置状态
登录使用时间 : 3.607(ms)
disql V8
SQL> SP_SET_OGUID(45331);
DMSQL 过程已成功完成
已用时间: 7.270(毫秒). 执行号:0.
SQL> ALTER DATABASE STANDBY;
操作已执行
已用时间: 22.055(毫秒). 执行号:0.
SQL> exit;
1.3.4.2、启动守护进程
100/101机器:
[dmdba@dmp ~]$ DmWatcherServiceWatcher start
Starting DmWatcherServiceWatcher: [ OK ]
[dmdba@dms1 ~]$ DmWatcherServiceWatcher start
Starting DmWatcherServiceWatcher: [ OK ]
1.3.4.3、启动监视器
[dmdba@dmm ~]$ DmMonitorServiceMonitor start
Starting DmMonitorServiceMonitor: [ OK ]

[dmdba@dmm ~]$ cd /dm8/bin
[dmdba@dmm bin]$ ./dmmonitor dmmonitor_manual.ini 
[monitor]         2022-05-26 11:30:02: DMMONITOR[4.0] V8
[monitor]         2022-05-26 11:30:02: DMMONITOR[4.0] IS READY.

[monitor]         2022-05-26 11:30:03: 收到守护进程(DW1_02)消息
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-05-26 11:30:03  OPEN           OK        DW1_02           OPEN        STANDBY   NULL     3        40790           40790           

[monitor]         2022-05-26 11:30:03: 收到守护进程(DW1_01)消息
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-05-26 11:30:03  OPEN           OK        DW1_01           OPEN        PRIMARY   VALID    3        40791           40792          
1.3.4.3、启动集群顺序
启动:100/101机器数据库→100/101守护进程→102监视器
100机器:[dmdba@dmp ~]$ DmServiceDW1_01 start
101机器:[dmdba@dms1 ~]$ DmServiceDW1_02 start
100机器:[dmdba@dmp ~]$ DmWatcherServiceWatcher start
101机器:[dmdba@dms1 ~]$ DmWatcherServiceWatcher start
102机器:[dmdba@dmm bin]$ DmMonitorServiceMonitor start

停止:102监听器→101/100机器守护进程→100机器DW1_01主库→101机器DW1_02备库
102机器:[dmdba@dmm bin]$ DmMonitorServiceMonitor stop
101机器:[dmdba@dms1 ~]$ DmWatcherServiceWatcher stop
100机器:[dmdba@dmp ~]$ DmWatcherServiceWatcher stop
100机器:[dmdba@dmp ~]$ DmServiceDW1_01 stop
101机器:[dmdba@dms1 ~]$ DmServiceDW1_02 stop

1.3.5、手动执行切换主备库

[dmdba@dmm bin]$ ./dmmonitor dmmonitor_manual.ini 
[monitor]         2022-05-26 13:11:26: DMMONITOR[4.0] V8
[monitor]         2022-05-26 13:11:26: DMMONITOR[4.0] IS READY.

[monitor]         2022-05-26 13:11:27: 收到守护进程(DW1_02)消息
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-05-26 13:11:26  OPEN           OK        DW1_02           OPEN        STANDBY   NULL     4        45520           45520           

[monitor]         2022-05-26 13:11:27: 收到守护进程(DW1_01)消息
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-05-26 13:11:26  OPEN           OK        DW1_01           OPEN        PRIMARY   VALID    4        45520           45521           

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

help
达梦守护监视器当前支持以下命令:
用法说明: 
命令中的[group_name][db_name],在组名或库名不唯一的情况下,需要指定名称,组名和库名之间用'.'分隔. 
对于show monitor命令,如果db_name未指定,则按照监视器ini的配置顺序,使用组中第一个活动的守护进程获取连接信息, 
#=============================================================================================#
#-----------------------------------系统全局命令----------------------------------------------#
1.help                                                            --显示帮助信息
2.exit                                                            --退出监视器
3.show version                                                    --显示监视器自身版本信息
4.show global info                                                --显示所有组的全局信息
5.show database [group_name.]db_name                              --显示指定库的详细信息
6.show [group_name]                                               --显示指定组的详细信息,如果未指定组名,则显示所有组的详细信息
7.show i[nterval] n                                               --每隔n秒自动显示所有组的详细信息
8.q                                                               --取消自动显示
9.list [[group_name.]db_name]                                     --列出指定组的库对应的守护进程配置信息,如果都未指定,则列出所有守护进程配置信息
10.show open info [group_name.]db_name                            --显示指定库的OPEN历史信息
11.show arch send info [group_name.]db_name                       --查看源库到指定组的指定库的归档同步信息(包含恢复间隔信息)
12.show apply stat [group_name.]db_name                           --查看指定组的指定库的日志重演信息
13.show monitor [group_name[.]] [db_name]                         --列出连接到指定守护进程的所有监视器信息

14.show state                                                     --显示当前监视器所在监视器配置组的所有监视器的状态信息

15.tip                                                            --查看系统当前运行状态

16.login                                                          --登录监视器
17.logout                                                         --退出登录

18.get takeover time                                              --获取备库开始自动接管需要延迟等待的时间

---输入q/Q退出或者回车键继续---
      
#---------------------------------------------------------------------------------------------#
#-----------------------------------以组为单位执行的命令--------------------------------------#
19.startup dmwatcher [group_name]                                 --启动指定组的守护进程监控功能
20.stop dmwatcher [group_name]                                    --关闭指定组的守护进程监控功能
21.startup group [group_name]                                     --启动指定组中的所有库
22.stop group [group_name]                                        --关闭指定组中的所有库
23.kill group [group_name]                                        --强制杀掉指定组中的所有活动库

24.choose switchover [group_name]                                 --选择可切换为PRIMARY库的备库列表
25.choose takeover [group_name]                                   --选择可接管故障PRIMARY库的备库列表
26.choose takeover force [group_name]                             --选择可强制接管故障PRIMARY库的备库列表

27.set group [group_name] auto restart on                         --打开指定组中所有节点的自动拉起功能
28.set group [group_name] auto restart off                        --关闭指定组中所有节点的自动拉起功能

29.set group [group_name] para_name para_value                    --修改指定组的所有守护进程的指定配置参数(同时修改ini文件和内存值),如果未指定组名,则通知所有组执行
                                                                  --para_name指定参数名称,para_value指定参数值
                                                                  --支持修改参数: DW_ERROR_TIME/INST_RECOVER_TIME/INST_ERROR_TIME/INST_AUTO_RESTART/
                                                                                  INST_SERVICE_IP_CHECK/RLOG_SEND_THRESHOLD/RLOG_APPLY_THRESHOLD

30.set group [group_name] recover time time_value                 --修改指定组中所有备库的恢复间隔为time_value指定的整数值(time_value取值:3~86400,单位为秒)(只修改守护进程内存值)
                                                                  --如果未指定组名,则通知所有组执行

31.set group [group_name] arch invalid                            --修改指定组中所有备库的归档为无效状态,如果未指定组名,则通知所有组执行

32.clear group [group_name] arch send info                        --清理指定组中源库到所有备库(包括异步备库)的最近N次归档发送信息(通知源库执行),没有指定组名则通知所有组执行
                                                                  --N值取主库dm.ini中配置的RLOG_SEND_APPLY_MON值和实际归档发送次数中的较小值

33.clear group [group_name] apply stat                            --清理指定组中所有备库的最近N次重演信息(通知组中所有备库执行),没有指定组名则通知所有组执行
                                                                  --N值取备库dm.ini中配置的RLOG_SEND_APPLY_MON值和实际重演次数中的较小值

---输入q/Q退出或者回车键继续---

#---------------------------------------------------------------------------------------------#
#-----------------------------------以库为单位执行的命令------------------------------------#
34.check recover [group_name.]db_name                             --检查指定组的指定库是否满足自动恢复条件
35.check open [group_name.]db_name                                --检查指定组的指定库是否满足自动OPEN条件

36.open database [group_name.]db_name                             --强制OPEN指定组的指定库
37.switchover [group_name[.]] [db_name]                           --切换指定组的指定库为PRIMARY库
38.takeover [group_name[.]] [db_name]                             --使用指定组的指定库接管故障PRIMARY库
39.takeover force [group_name[.]] [db_name]                       --使用指定组的指定库强制接管故障PRIMARY库

40.set database [group_name.]db_name recover time time_value      --修改指定组的指定库的恢复间隔为time_value指定的整数值(time_value取值:3~86400,单位为秒)(只修改守护进程内存值)
41.set database [group_name.]db_name arch invalid                 --修改指定组的指定库的归档为无效状态

42.detach database [group_name.]db_name                           --将指定的备库分离出守护进程组
43.attach database [group_name.]db_name                           --将分离出去的备库重新加回到守护进程组

44.startup dmwatcher database [group_name.]db_name                --启动指定库的守护进程监控功能
45.stop dmwatcher database [group_name.]db_name                   --关闭指定库的守护进程监控功能

46.startup database [group_name.]db_name                          --启动指定组的指定库
47.stop database [group_name.]db_name                             --关闭指定组的指定库
48.kill database [group_name.]db_name                             --强杀指定组的指定库

49.clear database [group_name.]db_name arch send info             --清理指定组中主库到指定备库的最近N次归档发送信息(通知主库执行)
                                                                  --N值取主库dm.ini中配置的RLOG_SEND_APPLY_MON值和实际归档发送次数中的较小值

50.clear database [group_name.]db_name apply stat                 --清理指定备库的最近N次重演信息(通知备库执行)
                                                                  --N值取备库dm.ini中配置的RLOG_SEND_APPLY_MON值和实际重演次数中的较小值
51.set database [group_name.]db_name until time time_val          --设置指定组的指定异步备库重演到的时间点为time_value指定的时间点
52.cancel database [group_name.]db_name until time                --取消设置指定组的指定异步备库重演到的时间点

---输入q/Q退出或者回车键继续---

#---------------------------------------------------------------------------------------------#
#-----------------------------------只允许在MPP主备环境下使用的命令---------------------------#
53.show mpp                                                       --显示MPP节点信息
54.startup dmwatcher all                                          --启动所有组的守护进程监控功能
55.stop dmwatcher all                                             --关闭所有组的守护进程监控功能
56.startup group all                                              --启动所有组的库
57.stop group all                                                 --关闭所有组的库
58.kill group all                                                 --强制杀掉所有组中的活动库

59.check mppctl                                                   --检查MPP控制文件是否处于一致状态
60.recover mppctl                                                 --恢复MPP控制文件到一致状态

#=============================================================================================#
1.3.5.1 切换备库为主库
1、选择可切换为PRIMARY库的备库列表
choose switchover
Can choose one of the following instances to do switchover:
1: DW1_02

2、登录监视器
login
用户名:SYSDBA
密码:
[monitor]         2022-05-26 13:17:04: 登录监视器成功!

3、执行switchover命令
switchover GDW1.DW1_02
[monitor]     2022-05-26 13:18:08: 开始切换实例DW1_02
[monitor]     2022-05-26 13:18:08: 通知守护进程DW1_01切换SWITCHOVER状态
[monitor]     2022-05-26 13:18:08: 守护进程(DW1_01)状态切换 [OPEN-->SWITCHOVER]
[monitor]     2022-05-26 13:18:09: 切换守护进程DW1_01为SWITCHOVER状态成功
[monitor]     2022-05-26 13:18:09: 通知守护进程DW1_02切换SWITCHOVER状态
[monitor]     2022-05-26 13:18:09: 守护进程(DW1_02)状态切换 [OPEN-->SWITCHOVER]
[monitor]     2022-05-26 13:18:10: 切换守护进程DW1_02为SWITCHOVER状态成功
[monitor]     2022-05-26 13:18:10: 实例DW1_01开始执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句
[monitor]     2022-05-26 13:18:11: 实例DW1_01执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句成功
[monitor]     2022-05-26 13:18:11: 实例DW1_02开始执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句
[monitor]     2022-05-26 13:18:11: 实例DW1_02执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句成功
[monitor]     2022-05-26 13:18:11: 实例DW1_01开始执行ALTER DATABASE MOUNT语句
[monitor]     2022-05-26 13:18:12: 实例DW1_01执行ALTER DATABASE MOUNT语句成功
[monitor]     2022-05-26 13:18:12: 实例DW1_02开始执行SP_APPLY_KEEP_PKG()语句
[monitor]     2022-05-26 13:18:12: 实例DW1_02执行SP_APPLY_KEEP_PKG()语句成功
[monitor]     2022-05-26 13:18:12: 实例DW1_02开始执行ALTER DATABASE MOUNT语句
[monitor]     2022-05-26 13:18:12: 实例DW1_02执行ALTER DATABASE MOUNT语句成功
[monitor]     2022-05-26 13:18:12: 实例DW1_01开始执行ALTER DATABASE STANDBY语句
[monitor]     2022-05-26 13:18:13: 实例DW1_01执行ALTER DATABASE STANDBY语句成功
[monitor]      2022-05-26 13:18:13: 实例DW1_02开始执行ALTER DATABASE PRIMARY语句
[monitor]         2022-05-26 13:18:13: 实例DW1_02执行ALTER DATABASE PRIMARY语句成功
[monitor]         2022-05-26 13:18:13: 通知实例DW1_02修改所有归档状态无效
[monitor]         2022-05-26 13:18:13: 修改所有实例归档为无效状态成功
[monitor]         2022-05-26 13:18:13: 实例DW1_01开始执行ALTER DATABASE OPEN FORCE语句
[monitor]         2022-05-26 13:18:13: 实例DW1_01执行ALTER DATABASE OPEN FORCE语句成功
[monitor]         2022-05-26 13:18:13: 实例DW1_02开始执行ALTER DATABASE OPEN FORCE语句
[monitor]         2022-05-26 13:18:13: 实例DW1_02执行ALTER DATABASE OPEN FORCE语句成功
[monitor]         2022-05-26 13:18:13: 实例DW1_01开始执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句
[monitor]         2022-05-26 13:18:14: 实例DW1_01执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句成功
[monitor]         2022-05-26 13:18:14: 实例DW1_02开始执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句
[monitor]         2022-05-26 13:18:14: 实例DW1_02执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句成功
[monitor]         2022-05-26 13:18:14: 通知守护进程DW1_01切换OPEN状态
[monitor]         2022-05-26 13:18:14: 守护进程(DW1_01)状态切换 [SWITCHOVER-->OPEN]
[monitor]         2022-05-26 13:18:15: 切换守护进程DW1_01为OPEN状态成功
[monitor]         2022-05-26 13:18:15: 通知守护进程DW1_02切换OPEN状态
[monitor]         2022-05-26 13:18:16: 守护进程(DW1_02)状态切换 [SWITCHOVER-->OPEN]
[monitor]         2022-05-26 13:18:16: 切换守护进程DW1_02为OPEN状态成功
[monitor]         2022-05-26 13:18:16: 通知组(GDW1)的守护进程执行清理操作
[monitor]         2022-05-26 13:18:17: 清理守护进程(DW1_01)请求成功
[monitor]         2022-05-26 13:18:17: 清理守护进程(DW1_02)请求成功
[monitor]         2022-05-26 13:18:17: 实例DW1_02切换成功

2022-05-26 13:18:17 
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG  
GDW1             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-05-26 13:18:17  GLOBAL    VALID     OPEN           DW1_02           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.2.101       5236       OK        DW1_02           OPEN        PRIMARY   0          0            REALTIME  VALID    6889            48104           6889            48104           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-05-26 13:18:17  GLOBAL    VALID     OPEN           DW1_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.2.100       5236       OK        DW1_01           OPEN        STANDBY   0          0            REALTIME  INVALID  6886            45657           6886            45657           NONE                  

DATABASE(DW1_01) APPLY INFO FROM (DW1_02), REDOS_PARALLEL_NUM (1):
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[6886, 6886, 6886], (RLSN, SLSN, KLSN)[45657, 45657, 45657], N_TSK[0], TSK_MEM_USE[0] 
REDO_LSN_ARR: (45657)
1.3.5.2 切回备库为主库
show global info
2022-05-26 13:21:31 
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG  
GDW1             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-05-26 13:21:30  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 13:21:30  GLOBAL    VALID     OPEN           DW1_01           OK        1     1     OPEN        STANDBY   DSC_OPEN       REALTIME  VALID    

1、选择可切换为PRIMARY库的备库列表
choose switchover
Can choose one of the following instances to do switchover:
1: DW1_01

2、执行switchover命令
switchover GDW1.DW1_01
[monitor]         2022-05-26 13:23:10: 开始切换实例DW1_01
[monitor]         2022-05-26 13:23:10: 通知守护进程DW1_02切换SWITCHOVER状态
[monitor]         2022-05-26 13:23:10: 守护进程(DW1_02)状态切换 [OPEN-->SWITCHOVER]
[monitor]         2022-05-26 13:23:10: 切换守护进程DW1_02为SWITCHOVER状态成功
[monitor]         2022-05-26 13:23:10: 通知守护进程DW1_01切换SWITCHOVER状态
[monitor]         2022-05-26 13:23:10: 守护进程(DW1_01)状态切换 [OPEN-->SWITCHOVER]
[monitor]         2022-05-26 13:23:11: 切换守护进程DW1_01为SWITCHOVER状态成功
[monitor]         2022-05-26 13:23:11: 实例DW1_02开始执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句
[monitor]         2022-05-26 13:23:11: 实例DW1_02执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句成功
[monitor]         2022-05-26 13:23:11: 实例DW1_01开始执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句
[monitor]         2022-05-26 13:23:11: 实例DW1_01执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句成功
[monitor]         2022-05-26 13:23:11: 实例DW1_02开始执行ALTER DATABASE MOUNT语句
[monitor]         2022-05-26 13:23:11: 实例DW1_02执行ALTER DATABASE MOUNT语句成功
[monitor]         2022-05-26 13:23:11: 实例DW1_01开始执行SP_APPLY_KEEP_PKG()语句
[monitor]         2022-05-26 13:23:12: 实例DW1_01执行SP_APPLY_KEEP_PKG()语句成功
[monitor]         2022-05-26 13:23:12: 实例DW1_01开始执行ALTER DATABASE MOUNT语句
[monitor]         2022-05-26 13:23:12: 实例DW1_01执行ALTER DATABASE MOUNT语句成功
[monitor]         2022-05-26 13:23:12: 实例DW1_02开始执行ALTER DATABASE STANDBY语句
[monitor]         2022-05-26 13:23:12: 实例DW1_02执行ALTER DATABASE STANDBY语句成功
[monitor]         2022-05-26 13:23:12: 实例DW1_01开始执行ALTER DATABASE PRIMARY语句
[monitor]         2022-05-26 13:23:14: 实例DW1_01执行ALTER DATABASE PRIMARY语句成功
[monitor]         2022-05-26 13:23:14: 通知实例DW1_01修改所有归档状态无效
[monitor]         2022-05-26 13:23:14: 修改所有实例归档为无效状态成功
[monitor]         2022-05-26 13:23:14: 实例DW1_02开始执行ALTER DATABASE OPEN FORCE语句
[monitor]         2022-05-26 13:23:14: 实例DW1_02执行ALTER DATABASE OPEN FORCE语句成功
[monitor]         2022-05-26 13:23:14: 实例DW1_01开始执行ALTER DATABASE OPEN FORCE语句
[monitor]         2022-05-26 13:23:15: 实例DW1_01执行ALTER DATABASE OPEN FORCE语句成功
[monitor]         2022-05-26 13:23:15: 实例DW1_02开始执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句
[monitor]         2022-05-26 13:23:15: 实例DW1_02执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句成功
[monitor]         2022-05-26 13:23:15: 实例DW1_01开始执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句
[monitor]         2022-05-26 13:23:15: 实例DW1_01执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句成功
[monitor]         2022-05-26 13:23:15: 通知守护进程DW1_02切换OPEN状态
[monitor]         2022-05-26 13:23:15: 守护进程(DW1_02)状态切换 [SWITCHOVER-->OPEN]
[monitor]         2022-05-26 13:23:16: 切换守护进程DW1_02为OPEN状态成功
[monitor]         2022-05-26 13:23:16: 通知守护进程DW1_01切换OPEN状态
[monitor]         2022-05-26 13:23:17: 守护进程(DW1_01)状态切换 [SWITCHOVER-->OPEN]
[monitor]         2022-05-26 13:23:17: 切换守护进程DW1_01为OPEN状态成功
[monitor]         2022-05-26 13:23:17: 通知组(GDW1)的守护进程执行清理操作
[monitor]         2022-05-26 13:23:17: 清理守护进程(DW1_01)请求成功
[monitor]         2022-05-26 13:23:17: 清理守护进程(DW1_02)请求成功
[monitor]         2022-05-26 13:23:17: 实例DW1_01切换成功

2022-05-26 13:23:17 
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG  
GDW1             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-05-26 13:23:17  GLOBAL    VALID     OPEN           DW1_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.2.100       5236       OK        DW1_01           OPEN        PRIMARY   0          0            REALTIME  VALID    6990            50649           6990            50650           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-05-26 13:23:17  GLOBAL    VALID     OPEN           DW1_02           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.2.101       5236       OK        DW1_02           OPEN        STANDBY   0          0            REALTIME  INVALID  6989            48203           6989            48203           NONE                  

DATABASE(DW1_02) APPLY INFO FROM (DW1_01), REDOS_PARALLEL_NUM (1):
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[6989, 6989, 6989], (RLSN, SLSN, KLSN)[48203, 48203, 48203], N_TSK[0], TSK_MEM_USE[0] 
REDO_LSN_ARR: (48203)


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

[monitor]         2022-05-26 13:23:19: 守护进程(DW1_01)状态切换 [OPEN-->RECOVERY]
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-05-26 13:23:19  RECOVERY       OK        DW1_01           OPEN        PRIMARY   VALID    6        50650           50650           

[monitor]         2022-05-26 13:23:22: 守护进程(DW1_01)状态切换 [RECOVERY-->OPEN]
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-05-26 13:23:22  OPEN           OK        DW1_01           OPEN        PRIMARY   VALID    6        50651           50651

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值