注册
达梦DCP培训数据守护学习内容及测试分享
技术分享/ 文章详情 /

达梦DCP培训数据守护学习内容及测试分享

hello world 2023/09/20 1376 0 0

达梦DCP培训数据守护学习内容及测试分享

测试课题:DM 数据守护
环境:麒麟v10+DM8
架构:主备集群+MONITOR
需要部署三台虚拟机
test1,IP 192.168.100.5,主库
test2,IP 192.168.100.6,备库
test3,IP 192.168.100.7,MONITOR

一、开启主库归档

查看归档配置:
./disql sysdba/Dameng123

SQL> select arch_mode from v$database;
select * from v$dm_arch_ini;

行号 ARCH_MODE


1 N

已用时间: 35.397(毫秒). 执行号:3625.
SQL> 未选定行

已用时间: 6.836(毫秒). 执行号:3626.
SQL>
SQL> alter database mount;
操作已执行
已用时间: 174.053(毫秒). 执行号:0.
SQL> alter database ARCHIVELOG;
操作已执行
已用时间: 12.732(毫秒). 执行号:0.
SQL> alter database ADD ARCHIVELOG 'type=local, dest=/dm8/arch, file_size=64, space_limit=20480';
操作已执行
已用时间: 22.913(毫秒). 执行号:0.
SQL>
SQL> alter database open;
操作已执行
已用时间: 540.383(毫秒). 执行号:0.
SQL> select arch_mode from v$database;
select * from v$dm_arch_ini;
行号 ARCH_MODE


1 Y

已用时间: 22.812(毫秒). 执行号:3627.

二、备份数据库(冷备)

停止主库数据库服务
[root@test1 bin]# ./DmServiceDMSERVER stop
Stopping DmServiceDMSERVER: [ OK ]

[dmdba@ test1 bin]$ ./dmrman
dmrman V8

mkdir -p /dm8/backup/fulltoserver2
RMAN> backup database '/dm8/data/DAMENG/dm.ini' backupset '/dm8/backup/fulltoserver2';

backup successfully!
time used: 00:00:10.557

三、将备份文件传输到备机,并恢复

[dmdba@test1 backup]$ scp -r fulltoserver2/ dmdba@192.168.100.6:/dm8/backup

在备机上对备份目录授权
chown -R dmdba.dinstall fulltoserver2

[dmdba@test2 backup]$ ll /dm8/data/
总用量 0

备机不初始化直接还原主库冷备
cd /dm8/bin
[dmdba@test2 bin]$ ./dmrman
dmrman V8
RMAN> restore database to '/dm8/data/DAMENG' from backupset '/dm8/backup/fulltoserver2';
restore database to '/dm8/data/DAMENG' from backupset '/dm8/backup/fulltoserver2';

restore successfully.
time used: 00:00:05.014

[dmdba@test2 backup]$ ll /dm8/data/DAMENG/dm.ini
-rw-r--r-- 1 dmdba dinstall 67064 9月 15 14:53 /dm8/data/DAMENG/dm.ini

老版本冷备不需要recover database,直接更新备库数据库魔数
主备环境,数据库魔数不能相同,否则不能同步
新版本冷备也需要recover database,重做备份集中的redo

RMAN> recover database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/backup/fulltoserver2';
recover database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/backup/fulltoserver2';
...
EP[0]'s cur_lsn[272391], file_lsn[272391]
备份集[/dm8/backup/fulltoserver2]备份过程中未产生日志
recover successfully!
time used: 582.342(ms)

修改备库的魔数
recover database '/dm8/data/DAMENG/dm.ini' update db_magic;

RMAN> recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
...
EP[0]'s cur_lsn[272391], file_lsn[272391]
recover successfully!
time used: 00:00:01.125

四、根据模板来设置

主节点
cd /dm8/samples/ini_script/UTF-8
[dmdba@test1 UTF-8]$ cp dmarch_example.ini /dm8/data/DAMENG/dmarch.ini
[dmdba@test1 UTF-8]$ cp dmmal_example.ini /dm8/data/DAMENG/dmmal.ini
[dmdba@test1 UTF-8]$ cp dmwatcher_example.ini /dm8/data/DAMENG/dmwatcher.ini

主备的/dm8/data/DAMENG/dm.ini中实例名要改成不同
修改备库的实例名,改为DMSERVER2
[dmdba@test2 DAMENG]$ vi dm.ini
#instance name
INSTANCE_NAME = DMSERVER2

设置系统自启动服务(达梦数据库名为DMSERVER2)
[dmdba@test2 bin]$ find /dm8 -name dm_service_installer.sh
/dm8/script/root/dm_service_installer.sh
cd /dm8/script/root/
./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DAMENG/dm.ini -p DMSERVER2 --如果服务没有注册,需要现行注册,如已注册请忽略。
systemctl start DmServiceDMSERVER2
systemctl enable DmServiceDMSERVER2

[root@test2 root]# ./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DAMENG/dm.ini -p DMSERVER2
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER2.service → /usr/lib/systemd/system/DmServiceDMSERVER2.service.
创建服务(DmServiceDMSERVER2)完成
[root@test2 root]# systemctl start DmServiceDMSERVER2
[root@test2 root]# systemctl enable DmServiceDMSERVER2

主备机修改/dm8/data/DAMENG/dm.ini中的这4项
主备环境配置好 dm.ini、 dmmal.ini、 dmarch.ini、 dmwatcher.ini
dm.ini 中需要开启归档和 MAL:
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置

主库备库
开启主备库的MAL,设置为1
开启主备库的归档,设置为1
不允许修改数据库模式,设置为2
不允许表空间OFFLINE,设置为2

[dmdba@test1 DAMENG]$ vi dm.ini

#configuration file
MAL_INI = 1 #dmmal.ini
ARCH_INI = 1 #dmarch.ini
ALTER_MODE_STATUS = 0 #Whether to permit database user to alter database mode and status by SQLs, 1: yes, 0: no
ENABLE_OFFLINE_TS = 2 #Whether tablespace can be offline

[dmdba@test2 DAMENG]$ vi dm.ini

#configuration file
MAL_INI = 1 #dmmal.ini
ARCH_INI = 1 #dmarch.ini
ALTER_MODE_STATUS = 0 #Whether to permit database user to alter database mode and status by SQLs, 1: yes, 0: no
ENABLE_OFFLINE_TS = 2 #Whether tablespace can be offline

主库配置实时主备归档
vi /dm8/data/DAMENG/dmarch.ini

ARCH_WAIT_APPLY = 0

[ARCHIVE_LOCAL1] #REDO日志归档名
ARCH_TYPE = LOCAL #REDO日志归档类型,REALTIME/LOCAL/SYNC/ASYNC/REMOTE 分别表示实时归档/本地归档/同步归档/异步归档/远程归档
ARCH_DEST = /dm8/arch #归档目标,实时归档、同步归档和异步归档设置为远程数据库实例名,本地归档为归档文件存放路径
ARCH_FILE_SIZE = 128 #单个REDO日志归档文件大小,单位Mb,取值范围(64M~2048M),仅对本地归档有效,缺省128M
ARCH_SPACE_LIMIT = 10240 #REDO日志归档空间限制,当所有本地归档文件达到限制值时,系统自动删除最老的归档文件。单位Mb,0表示无空间限制,取值范围>(1024M~4294967294M),仅对本地归档有效,缺省为0
ARCH_FLUSH_BUF_SIZE = 0
ARCH_HANG_FLAG = 1

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档
ARCH_DEST = DMSERVER2 #实时归档目标实例名

主库配置/dm8/data/DAMENG/dmmal.ini
[dmdba@test1 DAMENG]$ vi dmmal.ini
配置这部分,其余不改动

#MAL名称,同一个配置文件中MAL名称需保持唯一性
[MAL_INST1]

##数据库实例名,与dm.ini的INSTANCE_NAME配置项保持一致,MAL系统中数据库实例名要保持唯一
MAL_INST_NAME = DMSERVER

##MAL IP地址,使用MAL_HOST + MAL_PORT创建MAL链路
MAL_HOST = 192.168.100.5

##MAL监听端口
MAL_PORT = 5238

##MAL_INST_NAME实例对外服务IP地址
MAL_INST_HOST = 192.168.100.5

##MAL_INST_NAME实例对外服务端口,和dm.ini中的PORT_NUM保持一致
MAL_INST_PORT = 5236

##MAL_INST_NAME实例守护进程监听端口,其他守护进程或监视器使用MAL_HOST + MAL_DW_PORT创建TCP连接
MAL_DW_PORT = 5240

[MAL_INST2]

##数据库实例名,与dm.ini的INSTANCE_NAME配置项保持一致,MAL系统中数据库实例名要保持唯一
MAL_INST_NAME = DMSERVER2

##MAL IP地址,使用MAL_HOST + MAL_PORT创建MAL链路
MAL_HOST = 192.168.100.6

##MAL监听端口
MAL_PORT = 5238

##MAL_INST_NAME实例对外服务IP地址
MAL_INST_HOST = 192.168.100.6

##MAL_INST_NAME实例对外服务端口,和dm.ini中的PORT_NUM保持一致
MAL_INST_PORT = 5236

##MAL_INST_NAME实例守护进程监听端口,其他守护进程或监视器使用MAL_HOST + MAL_DW_PORT创建TCP连接
MAL_DW_PORT = 5240

主库配置
vi /dm8/data/DAMENG/dmwatcher.ini
#守护进程组名(长度不能超过16)
[GROUP_A]

##守护类型,默认为LOCAL LOCAL:本地守护 REALTIME:实时主备 TIMELY:读写分离 MARCH:MPP主备
##DW_TYPE = DMSERVER2
DW_TYPE = GLOBAL

##切换模式,默认为MANUAL MANUAL:故障手动切换模式 AUTO:故障自动切换模式
DW_MODE = AUTO

##守护进程故障认定时间,取值范围为(3s~32767s),缺省15秒没有收到远程守护进程消息,即认定远程守护进程故障,对本地模式无效。另外此参数也是监视器认定守护进程的故障时间,超过设置的时间间隔仍没有收到守护进程消息,监视器认为守护进程出现故障。
DW_ERROR_TIME = 15

##数据库故障认定时间,取值范围为(3s~32767s),缺省15秒没有收到数据库发送的状态信息,即认定其监控的数据库出现故障
INST_ERROR_TIME = 15

##数据守护唯一标识码,同一守护进程组中的所有数据库、守护进程和监视器,都必须配置相同的OGUID值,取值范围为0-2147483647
INST_OGUID = 88888888

##监控数据库dm.ini路径。dmwatcher从dm.ini配置文件获取DW_PORT信息,并进一步从dmmal.ini中获取MAL_HOST/MAL_DW_PORT等信息。
INST_INI = /dm8/data/DAMENG/dm.ini

##是否自动重启数据库实例,0:不自动重启1:自动重启
INST_AUTO_RESTART = 1

##数据库启动命令。
INST_STARTUP_CMD = /dm8/bin/dmserver

##备库故障恢复检测时间间隔,取值范围0~86400s,缺省每60秒检查一下备库状态,满足故障恢复条件时,启动历史数据同步流程。数据守护系统启动完成后、Switchover主备切换后、Takeover备库接管后以及强制Open主库后,主库守护进程INST_RECOVER_TIME内存值会强制设置成0,确保尽快启动数据同步。另外,还可以通过监视器命令set recover time修改INST_RECOVER_TIME内存值。
##INST_RECOVER_TIME = 60

#守护进程是否监控实例对外服务,判定公共网络是否出现故障。确认故障的时间为INST_ERROR_TIME的3倍。取值范围:0、1,默认0。
#INST_SERVICE_IP_CHECK = 0

五、将主库的/dm8/data/DAMENG目录下的dmmal.ini、 dmarch.ini、 dmwatcher.ini配置文件传到备机同样的位置/dm8/data/DAMENG

[dmdba@test1 DAMENG]$ scp dmmal.ini dmdba@192.168.100.6:/dm8/data/DAMENG/
[dmdba@test1 DAMENG]$ scp dmarch.ini dmdba@192.168.100.6:/dm8/data/DAMENG/
[dmdba@test1 DAMENG]$ scp dmwatcher.ini dmdba@192.168.100.6:/dm8/data/DAMENG/

六、修改备库端刚才从主库接收到的3个配置文件dmmal.ini、 dmarch.ini、 dmwatcher.ini

cd /dm8/data/DAMENG
确认主库备库的dmmal.ini保持一致

备库端修改 dmarch.ini中的ARCH_DEST
设置为主库端实例DMSERVER

[dmdba@test2 DAMENG]$ more dmarch.ini
ARCH_WAIT_APPLY = 0

[ARCHIVE_LOCAL1] #REDO日志归档名
ARCH_TYPE = LOCAL #REDO日志归档类型,REALTIME/LOCAL/SYNC/ASYNC/REMOTE 分别表示实时归档/本地归档/同步归档/异步归档/远程归档
ARCH_DEST = /dm8/arch #归档目标,实时归档、同步归档和异步归档设置为远程数据库实例名,本地归档为归档文件存放路径
ARCH_FILE_SIZE = 128 #单个REDO日志归档文件大小,单位Mb,取值范围(64M~2048M),仅对本地归档有效,缺省128M
ARCH_SPACE_LIMIT = 20480 #REDO日志归档空间限制,当所有本地归档文件达到限制值时,系统自动删除最老的归档文件。单位Mb,0表示无空间限制
ARCH_FLUSH_BUF_SIZE = 0
ARCH_HANG_FLAG = 1

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档
ARCH_DEST = DMSERVER #实时归档目标实例名

确认主库备库dmwatcher.ini保持一致

新版本要加入另外一个新端口…
MAL_INST_DW_PORT

再次修改主备库的dmmal.ini
加入MAL_INST_DW_PORT 配置项

[dmdba@test1 DAMENG]$ vi dmmal.ini

[MAL_INST1]

##数据库实例名,与dm.ini的INSTANCE_NAME配置项保持一致,MAL系统中数据库实例名要保持唯一
MAL_INST_NAME = DMSERVER

##MAL IP地址,使用MAL_HOST + MAL_PORT创建MAL链路
MAL_HOST = 192.168.100.5

##MAL监听端口
MAL_PORT = 5238

##MAL_INST_NAME实例对外服务IP地址
MAL_INST_HOST = 192.168.100.5

##MAL_INST_NAME实例对外服务端口,和dm.ini中的PORT_NUM保持一致
MAL_INST_PORT = 5236

##MAL_INST_NAME实例守护进程监听端口,其他守护进程或监视器使用MAL_HOST + MAL_DW_PORT创建TCP连接
MAL_DW_PORT = 5240
MAL_INST_DW_PORT = 5242

[MAL_INST2]

##数据库实例名,与dm.ini的INSTANCE_NAME配置项保持一致,MAL系统中数据库实例名要保持唯一
MAL_INST_NAME = DMSERVER2

##MAL IP地址,使用MAL_HOST + MAL_PORT创建MAL链路
MAL_HOST = 192.168.100.6

##MAL监听端口
MAL_PORT = 5238

##MAL_INST_NAME实例对外服务IP地址
MAL_INST_HOST = 192.168.100.6

##MAL_INST_NAME实例对外服务端口,和dm.ini中的PORT_NUM保持一致
MAL_INST_PORT = 5236

##MAL_INST_NAME实例守护进程监听端口,其他守护进程或监视器使用MAL_HOST + MAL_DW_PORT创建TCP连接
MAL_DW_PORT = 5240
MAL_INST_DW_PORT = 5242

[dmdba@test2 DAMENG]$ vi dmmal.ini
#MAL名称,同一个配置文件中MAL名称需保持唯一性
[MAL_INST1]

##数据库实例名,与dm.ini的INSTANCE_NAME配置项保持一致,MAL系统中数据库实例名要保持唯一
MAL_INST_NAME = DMSERVER

##MAL IP地址,使用MAL_HOST + MAL_PORT创建MAL链路
MAL_HOST = 192.168.100.5

##MAL监听端口
MAL_PORT = 5238

##MAL_INST_NAME实例对外服务IP地址
MAL_INST_HOST = 192.168.100.5

##MAL_INST_NAME实例对外服务端口,和dm.ini中的PORT_NUM保持一致
MAL_INST_PORT = 5236

##MAL_INST_NAME实例守护进程监听端口,其他守护进程或监视器使用MAL_HOST + MAL_DW_PORT创建TCP连接
MAL_DW_PORT = 5240
MAL_INST_DW_PORT = 5242

[MAL_INST2]

##数据库实例名,与dm.ini的INSTANCE_NAME配置项保持一致,MAL系统中数据库实例名要保持唯一
MAL_INST_NAME = DMSERVER2

##MAL IP地址,使用MAL_HOST + MAL_PORT创建MAL链路
MAL_HOST = 192.168.100.6

##MAL监听端口
MAL_PORT = 5238

##MAL_INST_NAME实例对外服务IP地址
MAL_INST_HOST = 192.168.100.6

##MAL_INST_NAME实例对外服务端口,和dm.ini中的PORT_NUM保持一致
MAL_INST_PORT = 5236

##MAL_INST_NAME实例守护进程监听端口,其他守护进程或监视器使用MAL_HOST + MAL_DW_PORT创建TCP连接
MAL_DW_PORT = 5240
MAL_INST_DW_PORT = 5242

七、检查完毕后重新启动主备实例

启动主机到 mount 状态
cd /dm8/data/DAMENG
/dm8/bin/dmserver dm.ini mount

[dmdba@test1 DAMENG]$ /dm8/bin/dmserver dm.ini mount

[dmdba@test1 DAMENG]$ /dm8/bin/disql sysdba/Dameng123

服务器[LOCALHOST:5236]:处于主库配置状态
登录使用时间 : 30.171(ms)
disql V8
SQL> select status$ from v$instance;

行号 STATUS$


1 MOUNT

启动备机到 mount 状态
[dmdba@test2 DAMENG]$ /dm8/bin/dmserver dm.ini mount
...
SYSTEM IS READY.

checkpoint request by primary or other DSC instance

另外开1个会话
[dmdba@test2 ~]$ /dm8/bin/disql sysdba/Dameng123

服务器[LOCALHOST:5236]:处于主库配置状态
登录使用时间 : 19.677(ms)
disql V8
SQL> select status$ from v$instance;

行号 STATUS$


1 MOUNT

已用时间: 17.061(毫秒). 执行号:0.

将主机改为primary,并设置OGUID
SQL> SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
DMSQL 过程已成功完成
已用时间: 35.383(毫秒). 执行号:3.
SQL> alter database primary;
操作已执行
已用时间: 27.311(毫秒). 执行号:0.
SQL> sp_set_oguid(88888888);
DMSQL 过程已成功完成
已用时间: 8.327(毫秒). 执行号:4.
SQL> SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);
DMSQL 过程已成功完成
已用时间: 14.353(毫秒). 执行号:5.

SQL> select STATUS$,MODE$ from v$instance;
MOUNT PRIMARY

将备机改为standby,并设置OGUID

SQL> SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
DMSQL 过程已成功完成
已用时间: 16.555(毫秒). 执行号:2.
SQL> alter database standby;
操作已执行
已用时间: 78.357(毫秒). 执行号:0.
SQL> sp_set_oguid(88888888);
DMSQL 过程已成功完成
已用时间: 4.806(毫秒). 执行号:3.
SQL> SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);
DMSQL 过程已成功完成
已用时间: 13.769(毫秒). 执行号:4.

SQL> select STATUS$,MODE$ from v$instance;
MOUNT PRIMARY

八、启动主机监视器,启动备机监视器。

主备机上的dmwatcher会自动将各自机器上的数据库从mount启动到open
[dmdba@test1 DAMENG]$ /dm8/bin/dmwatcher dmwatcher.ini
DMWATCHER[4.0] V8
DMWATCHER[4.0] IS READY

[dmdba@test2 DAMENG]$ /dm8/bin/dmwatcher dmwatcher.ini
DMWATCHER[4.0] V8
Read ini warning, default backup path [/dm8/data/DAMENG/bak] does not exist.
DMWATCHER[4.0] IS READY

监视器启动成功后,集群环境正常的话,主备机会自动打开


SQL> select STATUS$,MODE$ from v$instance;
OPEN PRIMARY


SQL> SQL> select STATUS$,MODE$ from v$instance;
OPEN STANDBY

主备机检查归档状态
SQL> select * from v$arch_status;

行号 ARCH_TYPE ARCH_DEST ARCH_STATUS ARCH_SRC


1 LOCAL /dm8/arch VALID DMSERVER
2 REALTIME DMSERVER2 VALID DMSERVER

SQL> select * from v$arch_status;

行号 ARCH_TYPE ARCH_DEST ARCH_STATUS ARCH_SRC


1 LOCAL /dm8/arch VALID DMSERVER2
2 REALTIME DMSERVER VALID DMSERVER2

九、验证数据是否同步

主机
SQL> create table dmtest.testtab123(id int);
操作已执行
已用时间: 40.685(毫秒). 执行号:10.
SQL> insert into dmtest.testtab123 values (1);
影响行数 1

已用时间: 7.155(毫秒). 执行号:11.
SQL> commit;
操作已执行
已用时间: 6.086(毫秒). 执行号:12.

备机

SQL> select * from dmtest.testtab123;

行号 ID


1 1

已用时间: 4.646(毫秒). 执行号:102.

十、在监视器机器上(第三台机器test3)配置监视器dmmonitor.ini

监视器中的 OGUID 要与数据库设置的一致。 配置数据守护 dmwatcher 的 IP 和端口。
[dmdba@test3 data]$ cd /dm8/data
[dmdba@test3 data]$ cp /dm8/samples/ini_script/UTF-8/dmmonitor_example.ini dmmonitor.ini

[dmdba@test3 data]$ vi dmmonitor.ini
#日志文件路径,日志文件命名方式为“dmmonitor_年月日时分秒.log”,例如“dmmonitor_20150418230523.log”。其他请参考表后附加说明。
#MON_LOG_PATH = c:\dmdbms\log

#自动记录系统状态信息到日志文件的时间间隔,取值(0,1或者(53600)),单位秒,0表示不记录任何日志,1表示只记录监视器正常接收到的消息,53600表示除了记录监视器正常接收消息外,
每隔指定的间隔另外记录系统信息到日志文件中,默认值为1。
#MON_LOG_INTERVAL = 1

#单个日志文件大小,范围16~2048,单位为M,默认值为64,达到最大值后,会自动生成并切换到新的日志文件中,如果达到设定的总空间限制,会自动删除创建时间最早的日志文件。
#MON_LOG_FILE_SIZE = 64

#日志总空间大小,取值0或者256~4096,单位为M,默认值为0,表示没有空间限制。
#MON_LOG_SPACE_LIMIT = 0

#守护进程组名,与dmwatcher.ini中的守护进程组名保持一致
#[GROUP_A]

##数据守护唯一标识码,与dmwatcher.ini中的INST_OGUID 保持一致
##MON_INST_OGUID = 123456789

##守护进程IP地址和监听端口。配置格式为:“守护进程IP地址:守护进程监听端口”。其中IP地址和dmmal.ini中的MAL_HOST保持一致,端口和dmmal.ini中的MAL_DW_PORT保持一致。
##MON_DW_IP = 5243

MON_DW_CONFIRM = 1
MON_LOG_PATH = /dm8/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0

[GROUP_A]
MON_INST_OGUID = 88888888
MON_DW_IP = 192.168.100.5:5240
MON_DW_IP = 192.168.100.6:5240
#这个端口和dmmal.ini中的MAL_DW_PORT保持一致

mkdir -p /dm8/log

十一、第三台机器上启动监视器:

/dm8/bin/dmmonitor /dm8/data/dmmonitor.ini

监视器上可以查看集群的状态
show 命令查看集群状态
login 登录
choose switchover 查看选择可切换为 PRIMARY 库的备库列表
switchover主备切换

/dm8/bin/dmmonitor /dm8/data/dmmonitor.ini

[dmdba@test3 data]$ /dm8/bin/dmmonitor /dm8/data/dmmonitor.ini
[monitor] 2023-09-17 16:52:21: DMMONITOR[4.0] V8
[monitor] 2023-09-17 16:52:21: DMMONITOR[4.0] IS READY.

[monitor] 2023-09-17 16:52:22: 收到守护进程(DMSERVER2)消息
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2023-09-17 16:52:22 OPEN OK DMSERVER2 OPEN STANDBY NULL 12 282734 282734

[monitor] 2023-09-17 16:52:22:
#--------------------------------------------------------------------------------#
GET MONITOR CONNECT INFO FROM DMWATCHER(DMSERVER2), THE FIRST LINE IS SELF INFO.

DW_CONN_TIME MON_CONFIRM MID MON_IP MON_VERSION
2023-09-17 16:52:22 TRUE 304566918 ::ffff:192.168.100.7 DMMONITOR[4.0] V8

#--------------------------------------------------------------------------------#

[monitor] 2023-09-17 16:52:22: 收到守护进程(DMSERVER)消息
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2023-09-17 16:52:21 OPEN OK DMSERVER OPEN PRIMARY VALID 12 282735 282735

show
2023-09-17 16:53:41

GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GROUP_A 88888888 TRUE AUTO FALSE

<<DATABASE GLOBAL INFO:>>
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
192.168.100.5 5240 2023-09-17 16:53:39 GLOBAL VALID OPEN DMSERVER 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.100.5 5236 OK DMSERVER OPEN PRIMARY 0 0 REALTIME VALID 49163 282761 49163 282761 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.100.6 5240 2023-09-17 16:53:40 GLOBAL VALID OPEN DMSERVER2 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.100.6 5236 OK DMSERVER2 OPEN STANDBY 0 0 REALTIME VALID 48122 282760 48122 282760 NONE

DATABASE(DMSERVER2) APPLY INFO FROM (DMSERVER), REDOS_PARALLEL_NUM (1), WAIT_APPLY[FALSE]:
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[49162, 49162, 49163], (RLSN, SLSN, KLSN)[282760, 282760, 282761], N_TSK[0], TSK_MEM_USE[512]
REDO_LSN_ARR: (282760)

login
用户名:sysdba
密码:
[monitor] 2023-09-17 16:55:12: 登录监视器成功!

exit

[dmdba@test3 data]$ ps -ef |grep dmm
dmdba 8822 7834 0 16:57 pts/0 00:00:00 grep dmm
[dmdba@test3 data]$ /dm8/bin/dmmonitor /dm8/data/dmmonitor.ini

choose switchover
Can choose one of the following instances to do switchover:
1: DMSERVER2

switchover
[monitor] 2023-09-17 16:59:56: 未登录监视器或服务器公钥发生变化,请重新登录!

登录,开始主备切换

login
用户名:sysdba
密码:
[monitor] 2023-09-17 17:00:38: 登录监视器成功!

choose switchover
Can choose one of the following instances to do switchover:
1: DMSERVER2

switchover
[monitor] 2023-09-17 17:01:01: 开始切换实例DMSERVER2
[monitor] 2023-09-17 17:01:01: 通知守护进程DMSERVER切换SWITCHOVER状态
[monitor] 2023-09-17 17:01:01: 守护进程(DMSERVER)状态切换 [OPEN-->SWITCHOVER]
[monitor] 2023-09-17 17:01:02: 切换守护进程DMSERVER为SWITCHOVER状态成功
[monitor] 2023-09-17 17:01:02: 通知守护进程DMSERVER2切换SWITCHOVER状态
[monitor] 2023-09-17 17:01:02: 守护进程(DMSERVER2)状态切换 [OPEN-->SWITCHOVER]
[monitor] 2023-09-17 17:01:03: 切换守护进程DMSERVER2为SWITCHOVER状态成功
[monitor] 2023-09-17 17:01:03: 实例DMSERVER开始执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句
[monitor] 2023-09-17 17:01:04: 实例DMSERVER执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句成功
[monitor] 2023-09-17 17:01:04: 实例DMSERVER2开始执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句
[monitor] 2023-09-17 17:01:04: 实例DMSERVER2执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句成功
[monitor] 2023-09-17 17:01:04: 实例DMSERVER开始执行ALTER DATABASE MOUNT语句
[monitor] 2023-09-17 17:01:04: 实例DMSERVER执行ALTER DATABASE MOUNT语句成功
[monitor] 2023-09-17 17:01:04: 实例DMSERVER2开始执行SP_APPLY_KEEP_PKG()语句
[monitor] 2023-09-17 17:01:05: 实例DMSERVER2执行SP_APPLY_KEEP_PKG()语句成功
[monitor] 2023-09-17 17:01:05: 实例DMSERVER2开始执行ALTER DATABASE MOUNT语句
[monitor] 2023-09-17 17:01:05: 实例DMSERVER2执行ALTER DATABASE MOUNT语句成功
[monitor] 2023-09-17 17:01:05: 实例DMSERVER开始执行ALTER DATABASE STANDBY语句
[monitor] 2023-09-17 17:01:06: 实例DMSERVER执行ALTER DATABASE STANDBY语句成功
[monitor] 2023-09-17 17:01:06: 实例DMSERVER2开始执行ALTER DATABASE PRIMARY语句
[monitor] 2023-09-17 17:01:07: 实例DMSERVER2执行ALTER DATABASE PRIMARY语句成功
[monitor] 2023-09-17 17:01:07: 通知实例DMSERVER2修改所有归档状态无效
[monitor] 2023-09-17 17:01:07: 修改所有实例归档为无效状态成功
[monitor] 2023-09-17 17:01:07: 实例DMSERVER开始执行ALTER DATABASE OPEN FORCE语句
[monitor] 2023-09-17 17:01:07: 实例DMSERVER执行ALTER DATABASE OPEN FORCE语句成功
[monitor] 2023-09-17 17:01:07: 实例DMSERVER2开始执行ALTER DATABASE OPEN FORCE语句
[monitor] 2023-09-17 17:01:08: 实例DMSERVER2执行ALTER DATABASE OPEN FORCE语句成功
[monitor] 2023-09-17 17:01:08: 实例DMSERVER开始执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句
[monitor] 2023-09-17 17:01:08: 实例DMSERVER执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句成功
[monitor] 2023-09-17 17:01:08: 实例DMSERVER2开始执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句
[monitor] 2023-09-17 17:01:08: 实例DMSERVER2执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句成功
[monitor] 2023-09-17 17:01:08: 通知守护进程DMSERVER切换OPEN状态
[monitor] 2023-09-17 17:01:08: 守护进程(DMSERVER)状态切换 [SWITCHOVER-->OPEN]
[monitor] 2023-09-17 17:01:09: 切换守护进程DMSERVER为OPEN状态成功
[monitor] 2023-09-17 17:01:09: 通知守护进程DMSERVER2切换OPEN状态
[monitor] 2023-09-17 17:01:09: 守护进程(DMSERVER2)状态切换 [SWITCHOVER-->OPEN]
[monitor] 2023-09-17 17:01:10: 切换守护进程DMSERVER2为OPEN状态成功
[monitor] 2023-09-17 17:01:10: 通知组(GROUP_A)的守护进程执行清理操作
[monitor] 2023-09-17 17:01:10: 清理守护进程(DMSERVER)请求成功
2023-09-17 17:01:10

GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GROUP_A 88888888 TRUE AUTO FALSE

<<DATABASE GLOBAL INFO:>>
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
192.168.100.6 5240 2023-09-17 17:01:10 GLOBAL VALID OPEN DMSERVER2 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.100.6 5236 OK DMSERVER2 OPEN PRIMARY 0 0 REALTIME VALID 49318 283528 49318 283529 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.100.5 5240 2023-09-17 17:01:10 GLOBAL VALID OPEN DMSERVER 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.100.5 5236 OK DMSERVER OPEN STANDBY 0 0 REALTIME INVALID 49311 282909 49311 282909 NONE

DATABASE(DMSERVER) APPLY INFO FROM (DMSERVER2), REDOS_PARALLEL_NUM (1), WAIT_APPLY[FALSE]:
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[49311, 49311, 49311], (RLSN, SLSN, KLSN)[282909, 282909, 282909], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (282909)

[monitor] 2023-09-17 17:01:10: 清理守护进程(DMSERVER2)请求成功
[monitor] 2023-09-17 17:01:10: 实例DMSERVER2切换成功

[monitor] 2023-09-17 17:01:12: 守护进程(DMSERVER2)状态切换 [OPEN-->RECOVERY]
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2023-09-17 17:01:12 RECOVERY OK DMSERVER2 OPEN PRIMARY VALID 13 283529 283529

[monitor] 2023-09-17 17:01:15: 守护进程(DMSERVER2)状态切换 [RECOVERY-->OPEN]
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2023-09-17 17:01:15 OPEN OK DMSERVER2 OPEN PRIMARY VALID 13 283530 283531

显示主备身份已互换

test1上
SQL> select STATUS$,MODE$ from v$instance;

服务器[LOCALHOST:5236]:处于备库打开状态
已连接
OPEN STANDBY

已用时间: 3.801(毫秒). 执行号:1300.

test2上
SQL> select STATUS$,MODE$ from v$instance;

OPEN PRIMARY

已用时间: 2.940(毫秒). 执行号:104.

测试同步,test2向test1同步

原备库,现主库
SQL> insert into dmtest.testtab002 values (1);
影响行数 1

已用时间: 6.305(毫秒). 执行号:106.
SQL> commit;
操作已执行
已用时间: 7.284(毫秒). 执行号:107.

原主库,现备库

SQL> select * from dmtest.testtab002;

行号 ID


1 1

已用时间: 3.193(毫秒). 执行号:1301.

再切回去

choose switchover
Can choose one of the following instances to do switchover:
1: DMSERVER

switchover
[monitor] 2023-09-17 17:07:32: 开始切换实例DMSERVER
[monitor] 2023-09-17 17:07:32: 通知守护进程DMSERVER2切换SWITCHOVER状态
[monitor] 2023-09-17 17:07:32: 守护进程(DMSERVER2)状态切换 [OPEN-->SWITCHOVER]
[monitor] 2023-09-17 17:07:33: 切换守护进程DMSERVER2为SWITCHOVER状态成功
[monitor] 2023-09-17 17:07:33: 通知守护进程DMSERVER切换SWITCHOVER状态
[monitor] 2023-09-17 17:07:33: 守护进程(DMSERVER)状态切换 [OPEN-->SWITCHOVER]
[monitor] 2023-09-17 17:07:34: 切换守护进程DMSERVER为SWITCHOVER状态成功
...
[monitor] 2023-09-17 17:07:38: 守护进程(DMSERVER2)状态切换 [SWITCHOVER-->OPEN]
[monitor] 2023-09-17 17:07:39: 切换守护进程DMSERVER2为OPEN状态成功
[monitor] 2023-09-17 17:07:39: 通知守护进程DMSERVER切换OPEN状态
[monitor] 2023-09-17 17:07:39: 守护进程(DMSERVER)状态切换 [SWITCHOVER-->OPEN]
[monitor] 2023-09-17 17:07:40: 切换守护进程DMSERVER为OPEN状态成功
[monitor] 2023-09-17 17:07:40: 通知组(GROUP_A)的守护进程执行清理操作
[monitor] 2023-09-17 17:07:40: 清理守护进程(DMSERVER)请求成功
2023-09-17 17:07:40

GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GROUP_A 88888888 TRUE AUTO FALSE

<<DATABASE GLOBAL INFO:>>
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
192.168.100.5 5240 2023-09-17 17:07:39 GLOBAL VALID OPEN DMSERVER 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.100.5 5236 OK DMSERVER OPEN PRIMARY 0 0 REALTIME VALID 49465 284463 49465 284463 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.100.6 5240 2023-09-17 17:07:40 GLOBAL VALID OPEN DMSERVER2 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.100.6 5236 OK DMSERVER2 OPEN STANDBY 0 0 REALTIME INVALID 49458 283844 49458 283844 NONE

DATABASE(DMSERVER2) APPLY INFO FROM (DMSERVER), REDOS_PARALLEL_NUM (1), WAIT_APPLY[FALSE]:
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[49458, 49458, 49458], (RLSN, SLSN, KLSN)[283844, 283844, 283844], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (283844)

[monitor] 2023-09-17 17:07:40: 清理守护进程(DMSERVER2)请求成功
[monitor] 2023-09-17 17:07:40: 实例DMSERVER切换成功

[monitor] 2023-09-17 17:07:41: 守护进程(DMSERVER)状态切换 [OPEN-->RECOVERY]
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2023-09-17 17:07:41 RECOVERY OK DMSERVER OPEN PRIMARY VALID 14 284464 284464

[monitor] 2023-09-17 17:07:44: 守护进程(DMSERVER)状态切换 [RECOVERY-->OPEN]
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2023-09-17 17:07:43 OPEN OK DMSERVER OPEN PRIMARY VALID 14 284465 284465


SQL> select STATUS$,MODE$ from v$instance;

OPEN PRIMARY

已用时间: 2.907(毫秒). 执行号:1302.


SQL> select STATUS$,MODE$ from v$instance;

服务器[LOCALHOST:5236]:处于备库打开状态
已连接

OPEN STANDBY

已用时间: 3.811(毫秒). 执行号:1000.

十二、主备库注册数据库守护、实例为 linux 系统服务


[root@test1 ~]# /dm8/script/root/dm_service_installer.sh -t dmserver -p DMSERVER -dm_ini /dm8/data/DAMENG/dm.ini
[root@test1 ~]# /dm8/script/root/dm_service_installer.sh -t dmwatcher -p DMSERVER -watcher_ini /dm8/data/DAMENG/dmwatcher.ini


[root@test2 ~]# /dm8/script/root/dm_service_installer.sh -t dmserver -p DMSERVER2 -dm_ini /dm8/data/DAMENG/dm.ini
[root@test2 ~]# /dm8/script/root/dm_service_installer.sh -t dmwatcher -p DMSERVER2 -watcher_ini /dm8/data/DAMENG/dmwatcher.ini

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服