暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

达梦数据库学习系列之基于CentOS7部署DM8主备集群

麻瓜的DBA生活 2021-12-31
2137

一、前言

达梦主备架构是类似于Oracle的Aactive DataGuard的主备集群解决方案,称作DataWatch AND ReadWriteShunt数据守护与读写分离集群,本质是应用场景的不同,在达梦的DSC和MPP架构依然适用。
达梦主备架构通过dmwatcher守护进程监视实例的状态;数据库进程为dmserver;数据库通过MAL传输归档日志到备库进行应用,dmmonitor进程监视整个主备集群的状态,可以做到自动切换。

二、环境信息

操作系统版本:Centos7 数据库版本:DM8

1. IP和端口规划

主机名公网IP实例端口私网IP私网端口守护进程端口实例守护进程端口
dm8_primary192.168.2.305236192.168.3.30523752385239
dm8_standby192.168.2.315236192.168.3.31523752385239

由于涉及的端口过多,建立进行提前规划。

2. 数据库信息规划

 数据库名:muggle 实例名:muggle_01、muggle_02

 OGUID:88888

三、数据库安装

需要在两台服务器完成数据库软件的安装。

1. 关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service

2. 创建用户

groupadd dinstall
useradd -g dinstall dmdba


passwd dmdba

3. 创建目录

mkdir -p /dmdbms
chown dmdba.dinstall -R /dmdbms
chmod 775 -R /dmdbms


mkdir /dmdata
chown dmdba.dinstall /dmdata
chmod 775 /dmdata

4. 配置资源限制

vi /etc/security/limits.conf


dmdba hard nofile 65536
dmdba soft nofile 65536
dmdba hard stack 32768
dmdba soft stack 16384

5. 配置用户环境变量

vi .bash_profile


export DM_HOME=/dmdbms
export LD_LIBRARY_PATH=$DM_HOME/bin:$LD_LIBRARY_PATH
export PATH=$DM_HOME/bin:$PATH

6. DM8软件安装

mount dm8_20210818_x86_rh7_64_ent_8.1.2.18_pack13.iso /mnt


su - dmdba
cd /mnt
./DMInstall.bin -i


Please select the installer's language (E/e:English C/c:Chinese) [E/e]:
Extract install files..........
Welcome to DM DBMS Installer


Whether to input the path of Key File? (Y/y:Yes N/n:No) [Y/y]:n


Whether to Set The TimeZone? (Y/y:Yes N/n:No) [Y/y]:
TimeZone:
[ 1]: GTM-12=West Date Line
[ 2]: GTM-11=Samoa
[ 3]: GTM-10=Hawaii
[ 4]: GTM-09=Alaska
[ 5]: GTM-08=Pacific(America and Canada)
[ 6]: GTM-07=Arizona
[ 7]: GTM-06=Central(America and Canada)
[ 8]: GTM-05=East(America and Canada)
[ 9]: GTM-04=Atlantic(America and Canada)
[10]: GTM-03=Brasilia
[11]: GTM-02=Middle Atlantic
[12]: GTM-01=Azores
[13]: GTM=Greenwich Mean Time
[14]: GTM+01=Sarajevo
[15]: GTM+02=Cairo
[16]: GTM+03=Moscow
[17]: GTM+04=AbuDhabi
[18]: GTM+05=Islamabad
[19]: GTM+06=Dakar
[20]: GTM+07=BangKok,Hanoi
[21]: GTM+08=China
[22]: GTM+09=Seoul
[23]: GTM+10=Guam
[24]: GTM+11=Solomon
[25]: GTM+12=Fiji
[26]: GTM+13=Nukualofa
[27]: GTM+14=Kiribati
Please Select the TimeZone [21]:


Installation Type:
1 Typical
2 Server
3 Client
4 Custom
Please Input the number of the Installation Type [1 Typical]:
Require Space: 1263M


Please Input the install path [/home/dmdba/dmdbms]:/dmdbms
Available Space:89G
Please Confirm the install path(/dmdbms)? (Y/y:Yes N/n:No) [Y/y]:


Pre-Installation Summary
Installation Location: /dmdbms
Require Space: 1263M
Available Space: 89G
Version Information:
Expire Date:
Installation Type: Typical
Confirm to Install? (Y/y:Yes N/n:No):y
2021-12-30 10:05:45 
[INFO] Installing DM DBMS...
2021-12-30 10:05:45
[INFO] Installing BASE Module...
2021-12-30 10:05:49
[INFO] Installing SERVER Module...
2021-12-30 14:07:49
[INFO] Installing CLIENT Module...
2021-12-30 10:05:52
[INFO] Installing DRIVERS Module...
2021-12-30 10:05:55
[INFO] Installing MANUAL Module...
2021-12-30 10:05:56
[INFO] Installing SERVICE Module...
2021-12-30 10:05:56
[INFO] Move log file to log directory.
2021-12-30 10:05:57
[INFO] Installed DM DBMS completely.


Please execute the commands by root:
/dmdbms/script/root/root_installer.sh


End

7.执行root脚本

/dmdbms/script/root/root_installer.sh
Move /dmdbms/bin/dm_svc.conf to /etc
Modify the files' mode of DM Server
Create the DmAPService service
Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service.
Finished to create the service (DmAPService)
Start the DmAPService service

四、主库配置

1. 初始化数据库

dminit PATH=/dmdata DB_NAME=MUGGLE INSTANCE_NAME=MUGGLE_01 SYSDBA_PWD=A12345678a SYSAUDITOR_PWD=A12345678a

log:

[dmdba@dm8_primary ~]$ dminit PATH=/dmdata DB_NAME=MUGGLE INSTANCE_NAME=MUGGLE_01 SYSDBA_PWD=A12345678a SYSAUDITOR_PWD=A12345678a
initdb V8
db version: 0x7000c
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL


log file path: /dmdata/MUGGLE/MUGGLE01.log




log file path: /dmdata/MUGGLE/MUGGLE02.log


write to dir [/dmdata/MUGGLE].
create dm database success. 2021-12-30 10:56:28

2.注册实例服务(root)

cd /dmdbms/script/root
./dm_service_installer.sh -t dmserver -p MUGGLE -dm_ini /dmdata/MUGGLE/dm.ini

log:

[root@dm8_primary /]# cd /dmdbms/script/root
[root@dm8_primary root]# ./dm_service_installer.sh -t dmserver -p MUGGLE -dm_ini /dmdata/MUGGLE/dm.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceMUGGLE.service to /usr/lib/systemd/system/DmServiceMUGGLE.service.
创建服务(DmServiceMUGGLE)完成

3. 启动实例

systemctl start DmServiceMUGGLE

4. 停止实例

systemctl stop DmServiceMUGGLE

5. 配置实例参数文件(dm.ini)

vi /dmdata/MUGGLE/dm.ini


INSTANCE_NAME = MUGGLE_01
PORT_NUM = 5236
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64

6. 配置MAL参数文件(dmmal.ini)

vi /dmdata/MUGGLE/dmmal.ini


MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5


[MAL_INST1]
MAL_INST_NAME = MUGGLE_01
MAL_HOST = 192.168.3.30
MAL_PORT = 5237
MAL_INST_HOST = 192.168.2.30
MAL_INST_PORT = 5236
MAL_DW_PORT = 5238
MAL_INST_DW_PORT = 5239


[MAL_INST2]
MAL_INST_NAME = MUGGLE_02
MAL_HOST = 192.168.3.31
MAL_PORT = 5237
MAL_INST_HOST = 192.168.2.31
MAL_INST_PORT = 5236
7.MAL_DW_PORT = 5238
MAL_INST_DW_PORT = 5239

7.配置归档参数文件(dmarch.ini)

mkdir /dmarch
chown -R dmdba.dinstall /dmarch
chmod -R 775 /dmarch


vi /dmdata/MUGGLE/dmarch.ini


[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = MUGGLE_02


[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmarch
ARCH_FILE_SIZE = 512
ARCH_SPACE_LIMIT = 0


8. mount启动主库

dmserver /dmdata/MUGGLE/dm.ini  mount &

log:

[dmdba@dm8_primary ~]$ dmserver /dmdata/MUGGLE/dm.ini  mount &
[1] 11827
[dmdba@dm8_primary ~]$ Global parameter value of ALTER_MODE_STATUS is illegal, use default value!
version info: enterprise
DM Database Server x64 V8 1-2-84-21.10.21-149328-10032-ENT startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
begin redo pwr log collect, last ckpt lsn: 25052 ...
redo pwr log collect finished
main rfil[/dmdata/MUGGLE/MUGGLE01.log]'s grp collect 0 valid pwr record, discard 2 invalid pwr record
EP[0]'s cur_lsn[25067], file_lsn[25067]
rafil_recv_if_necessary, arch file recv begin: arch_lsn: 25051, clsn: 25067, begin_seq: 4197, end_seq: 4199
arch file recv end: arch_lsn: 25052, clsn: 25067, begin_seq: 4198, end_seq: 4199
begin redo log recover, last ckpt lsn: 25052 ...
redo log recover finished
ndct db load finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.

9. 设置OGUID

disql sysdba/A12345678a@192.168.3.30:5236


SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(88888);
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

log:

[dmdba@dm8_primary ~]$ disql sysdba/A12345678a@192.168.3.30:5236


服务器[192.168.3.30:5236]:处于普通配置状态
登录使用时间 : 1.339(ms)
disql V8
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL 过程已成功完成
已用时间: 5.621(毫秒). 执行号:0.
SQL> sp_set_oguid(88888);
DMSQL 过程已成功完成
已用时间: 12.390(毫秒). 执行号:1.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL 过程已成功完成
已用时间: 3.807(毫秒). 执行号:2.
SQL>

10. 修改为主库模式

alter database primary;

log:

SQL> alter database primary;
操作已执行
已用时间: 10.634(毫秒). 执行号:0.
SQL>

五、备库配置

通过drman备份主数据库,并上传至备库进行备库的搭建工作。

1. 备库的还原

创建备份目录

mkdir -p /dmbak
chown dmdba.dinstall -R /dmbak

关闭主库

shutdown immediate

脱机备份主库

dmrman CTLSTMT="BACKUP DATABASE '/dmdata/MUGGLE/dm.ini' FULL TO MUGGLE_full BACKUPSET '/dmbak/MUGGLE_FULL'"

log:

[dmdba@dm8_primary ~]$ dmrman CTLSTMT="BACKUP DATABASE '/dmdata/MUGGLE/dm.ini' FULL TO MUGGLE_full BACKUPSET '/dmbak/MUGGLE_FULL'"
dmrman V8
BACKUP DATABASE '/dmdata/MUGGLE/dm.ini' FULL TO MUGGLE_full BACKUPSET '/dmbak/MUGGLE_FULL'
Database mode = 1, oguid = 88888
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
begin redo pwr log collect, last ckpt lsn: 25052 ...
redo pwr log collect finished
EP[0]'s cur_lsn[25067], file_lsn[25067]
Processing backupset /dmbak/MUGGLE_FULL
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
backup successfully!
time used: 00:00:01.063

2. 初始化备库实例

[dmdba@dm8_standby MUGGLE]$ dminit PATH=/dmdata DB_NAME=MUGGLE INSTANCE_NAME=MUGGLE_02
initdb V8
db version: 0x7000c
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL


log file path: /dmdata/MUGGLE/MUGGLE01.log




log file path: /dmdata/MUGGLE/MUGGLE02.log


write to dir [/dmdata/MUGGLE].
create dm database success. 2021-12-30 11:57:05

拷贝备份集

scp -r MUGGLE_FULL/ dmdba@192.168.2.31:/dmbak

还原备库数据文件

dmrman CTLSTMT=" RESTORE DATABASE '/dmdata/MUGGLE/dm.ini' FROM BACKUPSET '/dmbak/MUGGLE_FULL'"

log:

[dmdba@dm8_standby MUGGLE_FULL]$ dmrman CTLSTMT=" RESTORE DATABASE '/dmdata/MUGGLE/dm.ini' FROM BACKUPSET '/dmbak/MUGGLE_FULL'"
dmrman V8
RESTORE DATABASE '/dmdata/MUGGLE/dm.ini' FROM BACKUPSET '/dmbak/MUGGLE_FULL'
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:02][Remaining:00:00:00]
restore successfully.
time used: 00:00:02.330

介质恢复

dmrman CTLSTMT=" RECOVER DATABASE '/dmdata/MUGGLE/dm.ini' FROM BACKUPSET '/dmbak/MUGGLE_FULL'"

log:

[dmdba@dm8_standby MUGGLE_FULL]$ dmrman CTLSTMT=" RECOVER DATABASE '/dmdata/MUGGLE/dm.ini' FROM BACKUPSET '/dmbak/MUGGLE_FULL'"
dmrman V8
RECOVER DATABASE '/dmdata/MUGGLE/dm.ini' FROM BACKUPSET '/dmbak/MUGGLE_FULL'
Database mode = 1, oguid = 88888
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[25052], file_lsn[25052]
[Percent:100.00%][Speed:0.00PKG/s][Cost:00:00:00][Remaining:00:00:00]
recover successfully!
time used: 00:00:02.299
[dmdba@dm8_standby MUGGLE_FULL]$

更新Magic

dmrman CTLSTMT="RECOVER DATABASE '/dmdata/MUGGLE/dm.ini' UPDATE DB_MAGIC"

log:

[dmdba@dm8_standby MUGGLE_FULL]$ dmrman CTLSTMT="RECOVER DATABASE '/dmdata/MUGGLE/dm.ini' UPDATE DB_MAGIC"
dmrman V8
RECOVER DATABASE '/dmdata/MUGGLE/dm.ini' UPDATE DB_MAGIC
Database mode = 1, oguid = 88888
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[25067], file_lsn[25067]
recover successfully!
time used: 00:00:01.003
[dmdba@dm8_standby MUGGLE_FULL]$

3. root注册实例

cd /dmdbms/script/root
./dm_service_installer.sh -t dmserver -p MUGGLE -dm_ini /dmdata/MUGGLE/dm.ini

log:

[root@dm8_standby ~]# cd /dmdbms/script/root
[root@dm8_standby root]# ./dm_service_installer.sh -t dmserver -p MUGGLE -dm_ini /dmdata/MUGGLE/dm.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceMUGGLE.service to /usr/lib/systemd/system/DmServiceMUGGLE.service.
创建服务(DmServiceMUGGLE)完成
[root@dm8_standby root]#

4. 启动服务

systemctl start DmServiceMUGGLE

5. 配置归档参数文件(dmarch.ini)

mkdir /dmarch


vi /dmdata/MUGGLE/dmarch.ini


[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = MUGGLE_01


[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmarch
ARCH_FILE_SIZE = 512
ARCH_SPACE_LIMIT = 0

Note:更改归档传输路径为主库。

6. 配置实例参数文件(dm.ini)

vi /dmdata/MUGGLE/dm.ini


INSTANCE_NAME = MUGGLE_02
PORT_NUM = 5236
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64

Note:修改实例名和端口,dmmal.ini无需修改。

7. 配置dmmal.ini

vi /dmdata/MUGGLE/dm.ini


MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5


[MAL_INST1]
MAL_INST_NAME = MUGGLE_01
MAL_HOST = 192.168.3.30
MAL_PORT = 5237
MAL_INST_HOST = 192.168.2.30
MAL_INST_PORT = 5236
MAL_DW_PORT = 5238
MAL_INST_DW_PORT = 5239


[MAL_INST2]
MAL_INST_NAME = MUGGLE_02
MAL_HOST = 192.168.3.31
MAL_PORT = 5237
MAL_INST_HOST = 192.168.2.31
MAL_INST_PORT = 5236
MAL_DW_PORT = 5238
MAL_INST_DW_PORT = 5239

8. 启动备库

dmserver /dmdata/MUGGLE/dm.ini  mount &

9.配置备库OGUID

disql sysdba/A12345678a@192.168.2.31:5236


SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(88888);
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

log:

[dmdba@dm8_standby ~]$ disql sysdba/A12345678a@192.168.2.31:5236


服务器[192.168.2.31:5236]:处于主库配置状态
登录使用时间 : 4.312(ms)
disql V8
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL 过程已成功完成
已用时间: 6.233(毫秒). 执行号:0.
SQL> sp_set_oguid(88888);
DMSQL 过程已成功完成
已用时间: 2.023(毫秒). 执行号:1.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL 过程已成功完成
已用时间: 5.693(毫秒). 执行号:2.
SQL>


10. 修改备库模式

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
alter database standby;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

log:

SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL 过程已成功完成
已用时间: 3.951(毫秒). 执行号:3.
SQL> alter database standby;
操作已执行
已用时间: 17.373(毫秒). 执行号:0.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL 过程已成功完成
已用时间: 3.724(毫秒). 执行号:4.
SQL>

六、配置守护进程

主备节点均要配置,守护进程会自动将主库节点的实例启动到mount状态,并且由守护进程来控制实例的open状态。

1. 配置守护进程参数文件(dmwatcher.ini)

vi /dmdata/MUGGLE/dmwatcher.ini


[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 88888
INST_INI = /dmdata/MUGGLE/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dmdbms/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

2. 注册守护进程服务(root)

cd /dmdbms/script/root
./dm_service_installer.sh -t dmwatcher -p MUGGLE -watcher_ini /dmdata/MUGGLE/dmwatcher.ini

log:

[root@dm8_standby ~]# cd /dmdbms/script/root
[root@dm8_standby root]# ./dm_service_installer.sh -t dmwatcher -p MUGGLE -watcher_ini /dmdata/MUGGLE/dmwatcher.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServiceMUGGLE.service to /usr/lib/systemd/system/DmWatcherServiceMUGGLE.service.
创建服务(DmWatcherServiceMUGGLE)完成

3.启动守护进程服务

systemctl start DmWatcherServiceMUGGLE

4. 集群检验

主库

disql sysdba/A12345678a@192.168.2.30:5236
select NAME,OGUID,STATUS$,MODE$ from v$instance;
[dmdba@dm8_primary ~]$ disql SYSDBA/A12345678a@192.168.2.30:5236


服务器[192.168.2.30:5236]:处于主库打开状态
登录使用时间 : 1.236(ms)
disql V8
SQL> select NAME,OGUID,STATUS$,MODE$ from v$instance;


行号 NAME OGUID STATUS$ MODE$
---------- --------- ----------- ------- -------
1 MUGGLE_01 88888 OPEN PRIMARY


已用时间: 3.902(毫秒). 执行号:500.
SQL>

备库

disql sysdba/A12345678a@192.168.2.31:5236
select NAME,OGUID,STATUS$,MODE$ from v$instance;
[dmdba@dm8_primary ~]$ disql sysdba/A12345678a@192.168.2.31:5236


服务器[192.168.2.31:5236]:处于备库打开状态
登录使用时间 : 2.590(ms)
disql V8
SQL> select NAME,OGUID,STATUS$,MODE$ from v$instance;


行号 NAME OGUID STATUS$ MODE$
---------- --------- ----------- ------- -------
1 MUGGLE_02 88888 OPEN STANDBY


已用时间: 3.300(毫秒). 执行号:100.
SQL>

七、配置监视器

    监视器可以实现主备集群的自动切换,后面我们进行验证下;监视器可以配置在专门的服务器,这里演示配置在节点1上。

1. 创建日志目录

mkdir -p /dmdata/log

2. 配置监视器参数文件(dmmonitor.ini)

vi /dmdata/MUGGLE/dmmonitor.ini


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


[GRP1]
MON_INST_OGUID = 88888
MON_DW_IP = 192.168.3.30:5238
MON_DW_IP = 192.168.3.31:5238

3. 注册服务(root)

cd /dmdbms/script/root
./dm_service_installer.sh -t dmmonitor -p MUGGLE -monitor_ini /dmdata/MUGGLE/dmmonitor.ini

log:

[root@dm8_standby ~]# cd /dmdbms/script/root
[root@dm8_standby root]# ./dm_service_installer.sh -t dmmonitor -p MUGGLE -monitor_ini /dmdata/MUGGLE/dmmonitor.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmMonitorServiceMUGGLE.service to /usr/lib/systemd/system/DmMonitorServiceMUGGLE.service.
创建服务(DmMonitorServiceMUGGLE)完成

4. 启动监视器服务

systemctl start DmMonitorServiceMUGGLE

   监视器服务同时只能在一个节点运行。

5.命令行查看监控服务(应先停止监控服务,再用命令行查看)

dmmonitor path=/dmdata/MUGGLE/dmmonitor.ini

log:

[dmdba@dm8_primary ~]$ dmmonitor path=/dmdata/MUGGLE/dmmonitor.ini 
[monitor] 2021-12-30 16:08:32: DMMONITOR[4.0] V8
[monitor] 2021-12-30 16:08:32: DMMONITOR[4.0] IS READY.


[monitor] 2021-12-30 16:08:32: 收到守护进程(MUGGLE_01)消息
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2021-12-30 16:08:32 OPEN OK MUGGLE_01 OPEN PRIMARY VALID 3 28021 28021


[monitor] 2021-12-30 16:08:32: 收到守护进程(MUGGLE_02)消息
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2021-12-30 16:08:32 OPEN OK MUGGLE_02 OPEN STANDBY VALID 3 28021 28021


show
2021-12-30 16:08:34
#================================================================================#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRP1 88888 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.3.30 5238 2021-12-30 16:08:34 GLOBAL VALID OPEN MUGGLE_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.30 5236 OK MUGGLE_01 OPEN PRIMARY 0 0 REALTIME VALID 4234 28021 4234 28021 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.3.31 5238 2021-12-30 16:08:34 GLOBAL VALID OPEN MUGGLE_02 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.2.31 5236 OK MUGGLE_02 OPEN STANDBY 0 0 REALTIME VALID 4199 28021 4199 28021 NONE


DATABASE(MUGGLE_02) APPLY INFO FROM (MUGGLE_01), REDOS_PARALLEL_NUM (1):
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[4234, 4234, 4234], (RLSN, SLSN, KLSN)[28021, 28021, 28021], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (28021)




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

八、集群同步/切换测试

1.测试同步

主库:

create tablespace muggle datafile '/dmdata/MUGGLE/muggle01.dbf' size 512;
create user muggle identified by "muggle123456789" default tablespace muggle default index tablespace muggle;
grant dba to muggle;


create table muggle.test(id number,name varchar(10));
insert into muggle.test (id,name) values(1,'muggle');
commit;

log:

SQL> select * from muggle.test;


行号 ID NAME
---------- -- ------
1 1 muggle


已用时间: 0.633(毫秒). 执行号:606.
SQL>

备库查看:

[dmdba@dm8_standby bin]$ disql sysdba/A12345678a@192.168.2.31:5236


服务器[192.168.2.31:5236]:处于备库打开状态
登录使用时间 : 1.191(ms)
disql V8
SQL> select * from muggle.test;


行号 ID NAME
---------- -- ------
1 1 muggle


已用时间: 1.379(毫秒). 执行号:300.
SQL> >

查看恢复状态

SQL> select * from V$RECOVER_STATUS;
no rows


used time: 0.296(ms). Execute id is 318.
SQL>

2. 主备切换

dmmonitor path=/dmdata/MUGGLE/dmmonitor.ini


login
SYSDBA
A12345678a
switchover grp1.MUGGLE_02

log:

LOGIN
用户名:SYSDBA
密码:
[monitor] 2021-12-30 16:31:01: 登录监视器成功!


switchover grp1.MUGGLE_02
[monitor] 2021-12-30 16:31:34: 开始切换实例MUGGLE_02
[monitor] 2021-12-30 16:31:34: 通知守护进程MUGGLE_01切换SWITCHOVER状态
[monitor] 2021-12-30 16:31:34: 守护进程(MUGGLE_01)状态切换 [OPEN-->SWITCHOVER]
[monitor] 2021-12-30 16:31:35: 切换守护进程MUGGLE_01SWITCHOVER状态成功
[monitor] 2021-12-30 16:31:35: 通知守护进程MUGGLE_02切换SWITCHOVER状态
[monitor] 2021-12-30 16:31:35: 守护进程(MUGGLE_02)状态切换 [OPEN-->SWITCHOVER]
[monitor] 2021-12-30 16:31:36: 切换守护进程MUGGLE_02SWITCHOVER状态成功
[monitor] 2021-12-30 16:31:36: 实例MUGGLE_01开始执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句
[monitor] 2021-12-30 16:31:36: 实例MUGGLE_01执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句成功
[monitor] 2021-12-30 16:31:36: 实例MUGGLE_02开始执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句
[monitor] 2021-12-30 16:31:36: 实例MUGGLE_02执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句成功
[monitor] 2021-12-30 16:31:36: 实例MUGGLE_01开始执行ALTER DATABASE MOUNT语句
[monitor] 2021-12-30 16:31:36: 实例MUGGLE_01执行ALTER DATABASE MOUNT语句成功
[monitor] 2021-12-30 16:31:36: 实例MUGGLE_02开始执行SP_APPLY_KEEP_PKG()语句
[monitor] 2021-12-30 16:31:36: 实例MUGGLE_02执行SP_APPLY_KEEP_PKG()语句成功
[monitor] 2021-12-30 16:31:36: 实例MUGGLE_02开始执行ALTER DATABASE MOUNT语句
[monitor] 2021-12-30 16:31:37: 实例MUGGLE_02执行ALTER DATABASE MOUNT语句成功
[monitor] 2021-12-30 16:31:37: 实例MUGGLE_01开始执行ALTER DATABASE STANDBY语句
[monitor] 2021-12-30 16:31:37: 实例MUGGLE_01执行ALTER DATABASE STANDBY语句成功
[monitor] 2021-12-30 16:31:37: 实例MUGGLE_02开始执行ALTER DATABASE PRIMARY语句
[monitor] 2021-12-30 16:31:37: 实例MUGGLE_02执行ALTER DATABASE PRIMARY语句成功
[monitor] 2021-12-30 16:31:37: 通知实例MUGGLE_02修改所有归档状态无效
[monitor] 2021-12-30 16:31:37: 修改所有实例归档为无效状态成功
[monitor] 2021-12-30 16:31:37: 实例MUGGLE_01开始执行ALTER DATABASE OPEN FORCE语句
[monitor] 2021-12-30 16:31:37: 实例MUGGLE_01执行ALTER DATABASE OPEN FORCE语句成功
[monitor] 2021-12-30 16:31:37: 实例MUGGLE_02开始执行ALTER DATABASE OPEN FORCE语句
[monitor] 2021-12-30 16:31:37: 实例MUGGLE_02执行ALTER DATABASE OPEN FORCE语句成功
[monitor] 2021-12-30 16:31:37: 实例MUGGLE_01开始执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句
[monitor] 2021-12-30 16:31:37: 实例MUGGLE_01执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句成功
[monitor] 2021-12-30 16:31:37: 实例MUGGLE_02开始执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句
[monitor] 2021-12-30 16:31:37: 实例MUGGLE_02执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句成功
[monitor] 2021-12-30 16:31:37: 通知守护进程MUGGLE_01切换OPEN状态
[monitor] 2021-12-30 16:31:37: 守护进程(MUGGLE_01)状态切换 [SWITCHOVER-->OPEN]
[monitor] 2021-12-30 16:31:38: 切换守护进程MUGGLE_01OPEN状态成功
[monitor] 2021-12-30 16:31:38: 通知守护进程MUGGLE_02切换OPEN状态
[monitor] 2021-12-30 16:31:39: 守护进程(MUGGLE_02)状态切换 [SWITCHOVER-->OPEN]
[monitor] 2021-12-30 16:31:39: 切换守护进程MUGGLE_02OPEN状态成功
[monitor] 2021-12-30 16:31:39: 通知组(GRP1)的守护进程执行清理操作
[monitor] 2021-12-30 16:31:39: 清理守护进程(MUGGLE_01)请求成功
[monitor] 2021-12-30 16:31:39: 清理守护进程(MUGGLE_02)请求成功
[monitor] 2021-12-30 16:31:39: 实例MUGGLE_02切换成功


2021-12-30 16:31:39
#================================================================================#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRP1 88888 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.3.31 5238 2021-12-30 16:31:39 GLOBAL VALID OPEN MUGGLE_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.31 5236 OK MUGGLE_02 OPEN PRIMARY 0 0 REALTIME VALID 4253 35224 4253 35224 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.3.30 5238 2021-12-30 16:31:40 GLOBAL VALID OPEN MUGGLE_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.30 5236 OK MUGGLE_01 OPEN STANDBY 0 0 REALTIME INVALID 4251 33866 4251 33866 NONE


DATABASE(MUGGLE_01) APPLY INFO FROM (MUGGLE_02), REDOS_PARALLEL_NUM (1):
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[4251, 4251, 4251], (RLSN, SLSN, KLSN)[33866, 33866, 33866], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (33866)




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


[monitor] 2021-12-30 16:31:41: 守护进程(MUGGLE_02)状态切换 [OPEN-->RECOVERY]
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2021-12-30 16:31:41 RECOVERY OK MUGGLE_02 OPEN PRIMARY VALID 8 35224 35224


[monitor] 2021-12-30 16:31:45: 守护进程(MUGGLE_02)状态切换 [RECOVERY-->OPEN]
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2021-12-30 16:31:45 OPEN OK MUGGLE_02 OPEN PRIMARY VALID 8 35227 35227

查看主备状态

disql SYSDBA/A12345678a
select NAME,OGUID,STATUS$,MODE$ from v$instance;

log:

[dmdba@dm8_standby MUGGLE]$ disql sysdba/A12345678a@192.168.2.31:5236


服务器[192.168.2.31:5236]:处于主库打开状态
登录使用时间 : 0.916(ms)
disql V8
SQL> select NAME,OGUID,STATUS$,MODE$ from v$instance;


行号 NAME OGUID STATUS$ MODE$
---------- --------- ----------- ------- -------
1 MUGGLE_02 88888 OPEN PRIMARY


已用时间: 1.532(毫秒). 执行号:1100.
SQL>

    可以看到,主库与备库角色发生了互换。主备切换正常。至此,DM8主备集群搭建完成。

文章转载自麻瓜的DBA生活,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论