注册
DM8数据守护集群部署
专栏/技术分享/ 文章详情 /

DM8数据守护集群部署

DM_KSL 2026/08/21 191 0 0
摘要

DM8数据守护集群部署

一、 概述

DM 数据守护(DM Data Watch)的实现原理非常简单:将主库(生产库)产生的 Redo日志传输到备库,备库接收并重新应用 Redo 日志,从而实现备库与主库的数据同步。DM数据守护的核心思想是监控数据库状态,获取主、备库数据同步情况,为 Redo 日志传输与重演过程中出现的各种异常情况提供一系列的解决方案。
DM 数据守护系统结构主要由主库、备库、Redo 日志、Redo 日志传输、Redo 日志重演、守护进程(dmwatcher)、监视器(dmmonitor)组成。
image.png

二、 基础环境准备

集群规划

主库 实时备库
业务 IP / 心跳 IP 192.168.244.140 192.168.244.141
实例名 DW1_01 DW1_02
实例端口 5236 5236
MAL 端口 5336 5336
MAL 守护进程端口(监视器连接用) 5436 5436
守护进程端口(守护实例发指令用) 5536 5536
INST_OGUID 9527 9527
守护组 GDW1 GDW1
安装路径 /dm/dmdbms /dm/dmdbms
实例路径 /dm/data/data /dm/data/data
归档路径 /dm/data/arch /dm/data/arch
归档上限 1024 1024
监视器 192.168.244.142

主库、备库、监视器都需要安装DM8数据库软件

三、 初始化实例

dm8dw01

[dmdba@dm8dw01 bin]$ /dm/dmdbms/bin/dminit PATH=/dmdata/data INSTANCE_NAME=DW1_01 PORT_NUM=5236 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 SYSDBA_PWD=Dameng123 SYSAUDITOR_PWD=Dameng123

前台启动一下:

./dmserver /dmdata/data/DAMENG/dm.ini


dm8dw02

[dmdba@dm8dw02 ~]$ /dm/dmdbms/bin/dminit PATH=/dmdata/data INSTANCE_NAME=DW1_02 PORT_NUM=5236 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 SYSDBA_PWD=Dameng123 SYSAUDITOR_PWD=Dameng123

前台启动一下:

./dmserver /dmdata/data/DAMENG/dm.ini

dm8dw01
脱机备份DW1_01数据库

/dm/dmdbms/bin/dmrman CTLSTMT="BACKUP DATABASE '/dmdata/data/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dmdata/dmbak/BACKUP_FILE_20280806'"

把BACKUP_FILE_20280806发到dm8dw02备库去,然后备份还原:

[dmdba@dm8dw01 dmbak]$ scp -r /dmdata/dmbak/BACKUP_FILE_20280806/ dmdba@192.168.244.141:/dmdata/dmbak/

image.png

在dm8dw02上恢复数据库

/dm/dmdbms/bin/dmrman CTLSTMT="RESTORE DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/dmbak/BACKUP_FILE_20280806'"

/dm/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/dmbak/BACKUP_FILE_20280806'"

/dm/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' UPDATE DB_MAGIC"

image.png

检查数据一致性
这里只能前台启动,(./dmserver /dmdata/data/DAMENG/dm.ini mount)因为数据守护集群是通过收发redo日志,重演redo日志来实现的,而后台启动会生成redo日志,造成主库和备库不是同一版本
image.png

四、 文件配置

1. dm.ini文件配置

dm8dw01和dm8dw02

[dmdba@dm8dw01 DAMENG]$ vim /dmdata/data/DAMENG/dm.ini
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2

2. dmarch.ini文件配置

dm8dw01

[dmdba@dm8dw01 DAMENG]$ vim /dmdata/data/DAMENG/dmarch.ini
[ARCHIVE_REALTIME1]
ARCH_TYPE     = REALTIME
ARCH_DEST     = DW1_02   --填写备库实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE     = LOCAL
ARCH_DEST     = /dmdata/arch/    
ARCH_FILE_SIZE    = 128
ARCH_SPACE_LIMIT  = 1024

dm8dw02

[dmdba@dm8dw02 DAMENG]$ vim /dmdata/data/DAMENG/dmarch.ini
[ARCHIVE_REALTIME1]
ARCH_TYPE     = REALTIME
ARCH_DEST     = DW1_01  --填写主库实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE     = LOCAL
ARCH_DEST     = /dmdata/arch/    
ARCH_FILE_SIZE    = 128
ARCH_SPACE_LIMIT  = 1024


3. dmmal.ini文件配置

dm8dw01和dm8dw02

vim /dmdata/data/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DW1_01
MAL_HOST = 192.168.244.140
MAL_PORT = 5336
MAL_INST_HOST = 192.168.244.140
MAL_INST_PORT = 5236
MAL_DW_PORT = 5436
MAL_INST_DW_PORT = 5536
[MAL_INST2]
MAL_INST_NAME = DW1_02
MAL_HOST = 192.168.244.141
MAL_PORT = 5336
MAL_INST_HOST = 192.168.244.141
MAL_INST_PORT = 5236
MAL_DW_PORT = 5436
MAL_INST_DW_PORT = 5536

4. dmwatcher.ini文件配置

dm8dw01和dm8dw02

vim /dmdata/data/DAMENG/dmwatcher.ini
[GDW1]
DW_TYPE = GLOBAL
DW_MODE = AUTO     --故障自动切换模式
DW_ERROR_TIME = 20
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 20
INST_OGUID = 9527
INST_INI = /dmdata/data/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm/dmdbms/bin/DmServiceDW start
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

5. dmmonitor.ini文件配置

dm8dw03

vim /dm/dmdbms/dmmonitor.ini
MON_DW_CONFIRM = 1
MON_LOG_PATH = /dm/dmdbms/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 1024
[GDW1]
MON_INST_OGUID = 9527
MON_DW_IP = 192.168.244.140:5436
MON_DW_IP = 192.168.244.141:5436


五、 启动

1. 以mount方式启动数据库实例

dm8dw01

cd /dm/dmdbms/bin
./dmserver /dmdata/data/DAMENG/dm.ini mount
./disql sysdba/Dameng123
sp_set_oguid(9527);
alter database primary;    --主库

Dm8dw02

cd /dm/dmdbms/bin
./dmserver /dmdata/data/DAMENG/dm.ini mount
./disql sysdba/Dameng123
sp_set_oguid(9527);
alter database standby;    --备库

2. 启动守护进程

dm8dw01和dm8dw02

[dmdba@dm8dw01 bin]$ cd /dm/dmdbms/bin
[dmdba@dm8dw01 bin]$ ./dmwatcher /dmdata/data/DAMENG/dmwatcher.ini 
dmwatcher V8
DMWATCHER[4.0] IS READY


[dmdba@dm8dw02 bin]$ cd /dm/dmdbms/bin
[dmdba@dm8dw01 bin]$ ./dmwatcher /dmdata/data/DAMENG/dmwatcher.ini 
dmwatcher V8
DMWATCHER[4.0] IS READY


3. 启动监视器

dm8dw03

[dmdba@dm8dw03 bin]$ cd /dm/dmdbms/bin
[dmdba@dm8dw03 bin]$ ./dmmonitor /dm/dmdbms/dmmonitor.ini

image.png

4. 注册服务

dm8dw01

[root@dm8dw01 ~]# cd /dm/dmdbms/script/root/
[root@dm8dw01 root]# ./dm_service_installer.sh -t dmserver -p dw1_01 -dm_ini /dmdata/data/DAMENG/dm.ini
[root@dm8dw01 root]# ./dm_service_installer.sh -t dmwatcher -p dw1_01 -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini

dm8dw02

[root@dm8dw02 ~]# cd /dm/dmdbms/script/root/
[root@dm8dw01 root]# ./dm_service_installer.sh -t dmserver -p dw1_02 -dm_ini /dmdata/data/DAMENG/dm.ini
[root@dm8dw01 root]# ./dm_service_installer.sh -t dmwatcher -p dw1_02 -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini	

dm8dw03

[root@dm8dw03 ~]# cd /dm/dmdbms/script/root/
[root@dm8dw03 root]# ./dm_service_installer.sh -t dmmonitor -p GDW1 -monitor_ini /dm/dmdbms/dmmonitor.ini

六、 验证

在主库上创建test表,并插入几条数据,提交,然后在备库上查询test,可以获取对应的数据。
image.png

七、 集群启停顺序

1. 停止顺序

停止监听器->停止守护进程(先备后主)->停止数据库实例(先主后备)

[dmdba@dm8dw03 bin]$ ./DmMonitorServiceGDW1 stop
[dmdba@dm8dw02 bin]$ ./DmWatcherServicedw1_02 stop
[dmdba@dm8dw01 bin]$ ./DmWatcherServicedw1_01 stop
[dmdba@dm8dw01 bin]$ ./DmServicedw1_01 stop
[dmdba@dm8dw02 bin]$ ./DmServicedw1_02 stop

2. 启动顺序

启动数据库实例(主备没有顺序要求)->启动守护进程(先主后备)->启动监听器

[dmdba@dm8dw01 bin]$ ./DmServicedw1_01 start
[dmdba@dm8dw02 bin]$ ./DmServicedw1_02 start
[dmdba@dm8dw01 bin]$ ./DmWatcherServicedw1_01 start
[dmdba@dm8dw02 bin]$ ./DmWatcherServicedw1_02 start
[dmdba@dm8dw03 bin]$ ./DmMonitorServiceGDW1 start
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服