注册
DM主备集群动态增加节点
技术分享/ 文章详情 /

DM主备集群动态增加节点

田WJ 2026/08/07 86 0 0

1.Linux DM主备集群动态增加节点

1.1需求说明

原主备集群上新增1个节点,配置为高性能同步模式,不参与故障自动切换。
dmarch.ini中重点参数
WAIT_APPLY = 0
ARCH_FAILOVER = 1

1.2规划说明

1.png

1.3搭建原主备集群


结果查询
2.png

1.4原主备集群登录主库查询路径相关

–是否开启空间数据应用
SELECT SF_CHECK_GEO2_SYS;

–数据库表空间目录
SELECT TS.NAME, DF.PATH FROM VTABLESPACEASTS,VTABLESPACE AS TS, VDATAFILE AS DF WHERE TS.ID = DF.GROUP_ID;

–归档情况
select ARCH_TYPE,ARCH_DEST,ARCH_FILE_SIZE,ARCH_SPACE_LIMIT from v$dm_arch_ini;

–日志跟踪开启情况
SELECT PARA_NAME,PARA_VALUE FROM V$DM_INI WHERE PARA_NAME IN(‘PORT_NUM’,‘SVR_LOG’,‘ARCH_INI’);
cat /data/dmdata/DAMENG/sqllog.ini

–是否开启审计,审计目录位置
SELECT PARA_NAME,PARA_VALUE FROM V$DM_INI WHERE PARA_NAME in(‘ENABLE_AUDIT’,‘SYSTEM_PATH’);

select * from V$AUDIT_SPACE;
–备份路径相关
select * from SYSJOB.SYSJOBS;
select * from SYSJOB.SYSJOBSTEPS;
select * from SYSJOB.SYSJOBSCHEDULES;

1.5新机器C环境准备

1.5.1安装和原集群相同数据库软件版本

初始化实例,启动完全后关闭数据库
[root@]# su - dmdba
[dmdba@]$cd /data/dmdbms/bin

[dmdba@]$./dminit path=/data/dmdata page_size=32 extent_size=32 port_num=5237 log_size=2048 CASE_SENSITIVE=1 charset=1 DB_NAME=DAMENG SYSDBA_PWD=TEST_qweasd9999 SYSAUDITOR_PWD=TEST_qweasd9999

1.5.2目录提前创建准备

mkdir /testtps
mkdir /data/dmdata/DAMENG/auditlog
chown -R dmdba:dinstall /testtps /data/dmdata/DAMENG/auditlog

1.6原主备集群进行数据库物理全备份

SP_DBMS_JOB_RUN (1781162519);
scp -r /data/dmbak/DAMENG/bak/DB_DAMENG_FULL_2026_06_13_14_11_12 dmdba@192.168.118.239:/data/dmbak/DAMENG/bak/
3.png

1.7新机器C进行数据库还原恢复

su - dmdba
ll /data/dmdata/DAMENG/bak/
cd /data/dmdbms/bin
./dmrman
RMAN> RESTORE DATABASE ‘/data/dmdata/DAMENG/dm.ini’ REUSE DMINI FROM BACKUPSET ‘/data/dmbak/DAMENG/bak/DB_DAMENG_FULL_2026_06_13_14_11_12’;
RMAN> RECOVER DATABASE ‘/data/dmdata/DAMENG/dm.ini’ FOR STANDBY FROM BACKUPSET ‘/data/dmbak/DAMENG/bak/DB_DAMENG_FULL_2026_06_13_14_11_12’;
RMAN> RECOVER DATABASE ‘/data/dmdata/DAMENG/dm.ini’ UPDATE DB_MAGIC ;

1.8新机器C修改配置dm.ini

INSTANCE_NAME = GRP1_DW_03
PORT_NUM = 5237 ##数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 ##接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 ##不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 ##不允许备库OFFLINE表空间
MAL_INI = 1 ##打开MAL系统
ARCH_INI = 1 ##打开归档配置
RLOG_SEND_APPLY_MON = 64 ##统计最近64次的日志发送信息
##实例名,建议使用“组名_守护环境_序号”的命名方式,总长度不能超过16
INSTANCE_NAME = GRP1_DW_03
PORT_NUM = 5237 ##数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 ##接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 ##不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 ##不允许备库OFFLINE表空间
MAL_INI = 1 ##打开MAL系统
ARCH_INI = 1 ##打开归档配置
RLOG_SEND_APPLY_MON = 64 ##统计最近64次的日志发送信息

1.9新机器C新增配置dmarch.ini

ARCH_WAIT_APPLY = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /data/dmarch/DAMENG
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 20480
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_DW_01
[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_DW_02

1.10新机器C新增配置dmwatcher.ini

所有机器都保持一致。
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 30
INST_ERROR_TIME = 20
INST_RECOVER_TIME = 60
INST_OGUID = 532318
INST_INI = /data/dmdata/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /data/dmdbms/bin/DmServiceDAMENG start
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

1.11新机器C新增配置dmmal.ini

所有机器都保持一致。
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 15
MAL_TEMP_PATH = /data/dmdata/DAMENG
MAL_BUF_SIZE = 512
MAL_SYS_BUF_SIZE = 2048
MAL_COMPRESS_LEVEL = 0
MAL_VPOOL_SIZE = 128
[MAL_INST1]
MAL_INST_NAME = GRP1_DW_01
MAL_HOST = 192.168.118.236
MAL_PORT = 65237
MAL_INST_HOST = 192.168.118.236
MAL_INST_PORT = 5237
MAL_DW_PORT = 55237
MAL_INST_DW_PORT = 35237
MAL_LINK_MAGIC = 1
[MAL_INST2]
MAL_INST_NAME = GRP1_DW_02
MAL_HOST = 192.168.118.237
MAL_PORT = 65237
MAL_INST_HOST = 192.168.118.237
MAL_INST_PORT = 5237
MAL_DW_PORT = 55237
MAL_INST_DW_PORT = 35237
MAL_LINK_MAGIC = 1
[MAL_INST3]
MAL_INST_NAME = GRP1_DW_03
MAL_HOST = 192.168.118.239
MAL_PORT = 65237
MAL_INST_HOST = 192.168.118.239
MAL_INST_PORT = 5237
MAL_DW_PORT = 55237
MAL_INST_DW_PORT = 35237
MAL_LINK_MAGIC = 1

1.12新机器C配置数据库模式和oguid

–以mount方式启动数据库
dmserver /data/dmdata/DAMENG/dm.ini mount
–设置OGUID和数据库模式
SP_SET_PARA_VALUE(1,‘ALTER_MODE_STATUS’,1);
SP_SET_OGUID(532318);
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1,‘ALTER_MODE_STATUS’,0);

1.13修改配置原数据库主备集群机dmarch.ini和dmmal.ini

1.13.1静态配置-配置完成后重启数据库

(1)A机器dmarch.ini
ARCH_WAIT_APPLY = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /data/dmarch/DAMENG
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 20480
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_DW_02
[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_DW_03
WAIT_APPLY= 0
ARCH_FAILOVER = 1
(2)B机器dmarch.ini
ARCH_WAIT_APPLY = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /data/dmarch/DAMENG
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 20480
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_DW_01
[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_DW_03
WAIT_APPLY= 0
ARCH_FAILOVER = 1
(3)A机器和B机器dmmal.ini
所有机器都保持一致。
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 15
MAL_TEMP_PATH = /data/dmdata/DAMENG
MAL_BUF_SIZE = 512
MAL_SYS_BUF_SIZE = 2048
MAL_COMPRESS_LEVEL = 0
MAL_VPOOL_SIZE = 128
[MAL_INST1]
MAL_INST_NAME = GRP1_DW_01
MAL_HOST = 192.168.118.236
MAL_PORT = 65237
MAL_INST_HOST = 192.168.118.236
MAL_INST_PORT = 5237
MAL_DW_PORT = 55237
MAL_INST_DW_PORT = 35237
MAL_LINK_MAGIC = 1
[MAL_INST2]
MAL_INST_NAME = GRP1_DW_02
MAL_HOST = 192.168.118.237
MAL_PORT = 65237
MAL_INST_HOST = 192.168.118.237
MAL_INST_PORT = 5237
MAL_DW_PORT = 55237
MAL_INST_DW_PORT = 35237
MAL_LINK_MAGIC = 1
[MAL_INST3]
MAL_INST_NAME = GRP1_DW_03
MAL_HOST = 192.168.118.239
MAL_PORT = 65237
MAL_INST_HOST = 192.168.118.239
MAL_INST_PORT = 5237
MAL_DW_PORT = 55237
MAL_INST_DW_PORT = 35237
MAL_LINK_MAGIC = 1
(4)重启集群原主备数据库服务和守护服务

1.13.2动态配置-配置完成后不需要重启数据库服务

动态配置dmmal.ini和dmarch.ini 文件。
(1)DISQL登录原主备库改dmmal.ini
SF_MAL_CONFIG(1,0); SF_MAL_INST_ADD(‘MAL_INST3’,‘GRP1_DW_03’,‘192.168.118.239’,65237,‘192.168.118.239’,5237,55237,1,35237);
SF_MAL_CONFIG_APPLY();
SF_MAL_CONFIG(0,0);
4.png
查询确认
5.png
(2)DISQL登录原主备库动态添加归档配置
1)关闭原主备集群中所有实例的守护进程和监视器
关闭顺序为:关闭监视器–关闭备库守护进程–关闭主库守护进程
DmMonitorServiceGRP1 stop
DmWatcherServiceGRP1 stop
2)配置归档
–临时修改ALTER_MODE_STATUS,允许用户手动修改模式状态
–临时关闭守护进程活动状态检测,允许用户手动修改模式状态
SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);
SP_SET_PARA_VALUE(1, ‘DW_INACTIVE_INTERVAL’, 0);
ALTER DATABASE MOUNT;
–分别连接原主备所有实例,动态添加dmarch.ini 中归档节点。
–SQL>ALTER DATABASE ADD ARCHIVELOG ‘DEST= GRP1_DW_03,TYPE= REALTIME’;
–SQL>ALTER DATABASE modify ARCHIVELOG ‘DEST= GRP1_DW_03,TYPE= REALTIME,WAIT_APPLY=0,ARCH_FAILOVER=1’;
SQL>ALTER DATABASE ADD ARCHIVELOG ‘DEST= GRP1_DW_03,TYPE= REALTIME,WAIT_APPLY=0,ARCH_FAILOVER=1’;
–手动修改原主备所有实例为OPEN状态,必须先修改备库,再修改主库,否则可能会引发主备数据同步失败导致主库挂起。
ALTER DATABASE OPEN FORCE;
SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);
SP_SET_PARA_VALUE(1, ‘DW_INACTIVE_INTERVAL’, 60);
–查询确认
3)启动原主备所有实例的守护进程
DmWatcherServiceGRP1 start

1.14新机器C注册数据库服务和守护服务

–注册数据库服务
bash /data/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /data/dmdata/DAMENG/dm.ini -p DAMENG -m mount
systemctl enable DmServiceDAMENG.service
–注册守护进程服务并启动
bash /data/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /data/dmdata/DAMENG/dmwatcher.ini -p GRP1
systemctl enable DmWatcherServiceGRP1
systemctl start DmWatcherServiceGRP1

1.15监视器机器非确认监视服务和确认监视服务

1.15.1非确认监视器配置文件调整并启动检查

vi /data/dmdbms/data/DAMENG/dmmonitor_GRP1s.ini
MON_DW_CONFIRM = 0
MON_LOG_PATH = /data/dmdbms/logs
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 2048
[GRP1]
MON_INST_OGUID = 532318
MON_DW_IP = 192.168.118.236:55237
MON_DW_IP = 192.168.118.237:55237
MON_DW_IP = 192.168.118.239:55237
6.png

1.15.2确认监视器配置文件新增配置并启动服务

vi /data/dmdbms/data/DAMENG/dmmonitor_GRP1.ini
MON_DW_CONFIRM = 1
MON_LOG_PATH = /data/dmdbms/logs
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 2048
[GRP1]
MON_INST_OGUID = 532318
MON_DW_IP = 192.168.118.236:55237
MON_DW_IP = 192.168.118.237:55237
MON_DW_IP = 192.168.118.239:55237
启动确认监视器 DmMonitorServiceGRP1 start

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服