注册
达梦主备集群在线增加备机变更操作方案
专栏/写意人生/ 文章详情 /

达梦主备集群在线增加备机变更操作方案

写意人生 2026/08/29 220 1 0
摘要 主备集群在线增加备机变更操作方案,分享经验。

一、数据库服务器集群基本信息

1.1 目前运行中生产环境基本信息

业务地址:10.77.16.153-主库a
业务地址:10.77.16.154-备库b
CPU: Intel(R) (84核)
操作系统:Kylin Linux Advanced Server release V10 SP3 2403/(Halberd)-x86_64-Build20.01/20240426
内存:256GB
/data 500GB
a和b是云服务器。

1.2 需要加入集群的裸金属数据库服务器信息

业务地址:10.77.16.155-主库c
业务地址:10.77.16.156-备库d
CPU: Kunpeng-920 (128核)
操作系统:Kylin Linux Advanced Server release V10 SP3 2403/(Halberd)-aarch64-Build20/20240426
内存:512GB
/data 7TB
c和d是裸金属服务器。

1.3 数据库切换方案概述

(1)a和b是主备集群,设备类型是云服务器,生产数据库系统运行在该服务器上,其中a是主库。
(2)c和d是裸金属服务器,主备集群已经部署完成,数据库版本和操作系统版本与a,b保持一致。
(3)切换当天需要将c,d两个节点做为备机加入到a,b集群中,构成1主3备集群,其中a节点是主库。
(4)1主3备集群运行正常,数据一致后,手动切换主库到c节点。
(5)将原来的a,b节点剔除集群,由c,d组成独立的主备集群。
(6)在第四步以前,原生产环境a,b节点数据库一直处于运行中,可以对外提供服务。

二、准备工作

2.1 备份配置文件

备份四个节点的dm.ini、dmarch.ini、dmmal.ini、dmmonitor.ini、dmwatcher.ini文件。
16.153,16.154,16.155,16.156
配置文件路径:/data/dmdata/DM
cp dm.ini dmarch.ini dmmal.ini dmwatcher.ini dmmonitor.ini /home/dmdba/dmbackup/configbackup20260828

三、主备集群增加两个节点c和d

3.1 数据准备

(1)对主库a进行联机备份操作
/data/dmdbms/bin/disql SYSDBA/DMDBA_hust4400@localhost:5236
backup database full backupset '/data/dmbackup/DB_FULL_2026082803' compressed level 1 parallel 5;
select sf_bakset_check('DISK','/data/dmbackup/DB_FULL_2026082803');
预计备份时间:5分钟左右。总数据量60多G。

(2)在c,d节点上还原数据
拷贝备份集到c,d节点的/data/dmbackup/目录,使用DMRMAN工具脱机还原。
scp -r DB_FULL_2026082803/ 10.77.16.155:/data/dmbackup
scp -r DB_FULL_2026082803/ 10.77.16.156:/data/dmbackup

/data/dmdbms/bin/dmrman
RESTORE DATABASE '/data/dmdata/DM/dm.ini' FROM BACKUPSET '/data/dmbackup/DB_FULL_2026082803';
RECOVER DATABASE '/data/dmdata/DM/dm.ini' FROM BACKUPSET '/data/dmbackup/DB_FULL_2026082803';
RECOVER DATABASE '/data/dmdata/DM/dm.ini' UPDATE DB_MAGIC;

3.2 c和d上配置dmmal.ini

在c,d机器上配置如下:
MAL_CHECK_INTERVAL = 60 #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 60 #判定MAL链路断开的时间

[MAL_INST1]
MAL_INST_NAME = DM #与dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.77.16.153 #MAL系统监听TCP内部网络IP
MAL_PORT = 1141 #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.77.16.153 #实例的对外服务IP地址
MAL_INST_PORT = 5236 #与dm.ini中的PORT_NUM一致
MAL_DW_PORT = 2141 #实例对应的守护进程监听TCP端口
MAL_INST_DW_PORT = 3141 #实例监听守护进程TCP连接的端口

[MAL_INST2]
MAL_INST_NAME = DM_ST #与dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.77.16.154 #MAL系统监听TCP内部网络IP
MAL_PORT = 1141 #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.77.16.154 #实例的对外服务IP地址
MAL_INST_PORT = 5236 #与dm.ini中的PORT_NUM一致
MAL_DW_PORT = 2141
MAL_INST_DW_PORT = 3141 #实例监听守护进程TCP连接的端口

[MAL_INST3]
MAL_INST_NAME = DM1 #与dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.77.16.155 #MAL系统监听TCP内部网络IP
MAL_PORT = 1141 #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.77.16.155 #实例的对外服务IP地址
MAL_INST_PORT = 5236 #与dm.ini中的PORT_NUM一致
MAL_DW_PORT = 2141 #实例对应的守护进程监听TCP端口
MAL_INST_DW_PORT = 3141 #实例监听守护进程TCP连接的端口

[MAL_INST4]
MAL_INST_NAME = DM2 #与dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.77.16.156 #MAL系统监听TCP内部网络IP
MAL_PORT = 1141 #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.77.16.156 #实例的对外服务IP地址
MAL_INST_PORT = 5236 #与dm.ini中的PORT_NUM一致
MAL_DW_PORT = 2141
MAL_INST_DW_PORT = 3141 #实例监听守护进程TCP连接的端口

3.3 配置 dmarch.ini

c机器修改dmarch.ini,配置本地归档和即时归档。
ARCH_WAIT_APPLY = 0
ARCH_RESERVE_TIME = 21600

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /data/dmarch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 512000
ARCH_FLUSH_BUF_SIZE = 0
ARCH_HANG_FLAG = 1

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

##增加以下内容
##增加16.153的实时归档路径
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DM #实时归档目标实例名

##增加16.154的实时归档路径
[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DM_ST #实时归档目标实例名

d机器修改 dmarch.ini,配置本地归档和即时归档。
ARCH_WAIT_APPLY = 0
ARCH_RESERVE_TIME = 21600

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /data/dmarch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 512000
ARCH_FLUSH_BUF_SIZE = 0
ARCH_HANG_FLAG = 1

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

##增加以下内容
##增加16.153的实时归档路径
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DM #实时归档目标实例名

##增加16.154的实时归档路径
[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DM_ST #实时归档目标实例名

3.4 配置dmwatch.ini

c,d机器修改dmwatch.ini。
[DM]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #手动切换模式
DW_ERROR_TIME = 60 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 65 #本地实例故障认定时间
INST_OGUID = 20260819 #守护系统唯一OGUID 值
INST_INI = /data/dmdata/DM/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /data/dmdbms/bin/DmServiceDM start #服务方式启动

3.5 以mount方式启动c,d备库

/data/dmdbms/bin/DmServiceDM start

3.6 设置OGUID

启动命令行工具 DIsql,登录c,d备库设置 OGUID 值。
/data/dmdbms/bin/disql SYSDBA/DMDBA_hust4400
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS',1);
sp_set_oguid(20260819);
alter database standby;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS',0);

3.7 a,b主机动态添加MAL配置

需要分别连接a,b库,每个实例单独执行:
/data/dmdbms/bin/disql SYSDBA/DMDBA_hust4400
SF_MAL_CONFIG(1,0);
SF_MAL_INST_ADD('MAL_INST3','DM1','10.77.16.155',1141,'10.77.16.155',5236,2141,0,3141);
SF_MAL_INST_ADD('MAL_INST4','DM2','10.77.16.156',1141,'10.77.16.156',5236,2141,0,3141);
SF_MAL_CONFIG_APPLY();
SF_MAL_CONFIG(0,0);

3.8 a,b主机动态添加ARCH配置

关闭监视器
/data/dmdbms/bin/DmMonitorServiceMonitor stop
关闭a主库守护进程
/data/dmdbms/bin/DmWatcherServiceDM stop

关闭b备库守护进程
/data/dmdbms/bin/DmWatcherServiceDM stop

分别连接a,b原系统中的所有实例,动态添加dmarch.ini 中归档节点。
/data/dmdbms/bin/disql SYSDBA/DMDBA_hust4400
ALTER DATABASE ADD ARCHIVELOG 'DEST= DM1, TYPE= REALTIME';
ALTER DATABASE ADD ARCHIVELOG 'DEST= DM2, TYPE= REALTIME';

3.9 修改监视器 dmmonitor.ini

在a、b、c、d的dmmonitor.ini配置文件中增加以下内容:
MON_DW_IP=10.77.16.153:2141
MON_DW_IP=10.77.16.154:2141
MON_DW_IP=10.77.16.155:2141
MON_DW_IP=10.77.16.156:2141

3.10 启动a,b,c,d节点所有守护进程 以及监视器

分别启动主库和备库的所有守护进程,最后启动监视器。
##启动a主库守护进程
/data/dmdbms/bin/DmWatcherServiceDM start
##启动b备库守护进程
/data/dmdbms/bin/DmWatcherServiceDM start
##启动c备库守护进程
/data/dmdbms/bin/DmWatcherServiceDM start
##启动d备库守护进程
/data/dmdbms/bin/DmWatcherServiceDM start
##登录监视器,检查数据库集群状态。
/data/dmdbms/bin/dmmonitor /data/dmdata/DM/dmmonitor.ini
show命令查看集群节点状态
4个节点的FLSN和CLSN相同,说明4个节点的数据是一致的。

四、切换数据库集群

4.1 前台启动监视器

/data/dmdbms/bin/dmmonitor /data/dmdata/DM/dmmonitor.ini

4.2 执行Switchover 切换

login
username:SYSDBA
password:******
choose switchover DM
Can choose one of the following instances to do switchover:
1: DM_ST
2: DM1
3: DM2

switchover DM1
YES
show

DMDBA_hust4400

在c主库上创建测试表,插入数据。
/data/dmdbms/bin/disql SYSDBA/DMDBA_hust4400
create table test(id varchar(100),no number);
insert into test values('lxx','2001');
commit;
select * from test;

在a,b,d上查询数据
/data/dmdbms/bin/disql SYSDBA/DMDBA_hust4400
select * from test;

五、将原数据库集群剥离集群

5.1 登入监视器,分离a,b节点

/data/dmdbms/bin/dmmonitor /data/dmdata/DM/dmmonitor.ini
login
username:SYSDBA
password:******

detach database DM
detach database DM_ST

5.2 关闭监视器

/data/dmdbms/bin/DmMonitorServiceMonitor stop

注释所有节点监视器dmmonitor.ini文件中a,b节点信息
#MON_DW_IP=10.77.16.153:2141
#MON_DW_IP=10.77.16.154:2141

5.3 关闭a,b,c,d节点所有守护进程

cd /data/dmdbms/bin
关闭c主库守护进程
/data/dmdbms/bin/DmWatcherServiceDM stop
关闭a备库守护进程
/data/dmdbms/bin/DmWatcherServiceDM stop
关闭b备库守护进程
/data/dmdbms/bin/DmWatcherServiceDM stop
关闭d备库守护进程
/data/dmdbms/bin/DmWatcherServiceDM stop

5.4 修改c,d节点dmmal.ini文件,注释掉a,b实例的信息

注释掉配置文件中的内容:
#[MAL_INST1]
#MAL_INST_NAME = DM #与dm.ini中的INSTANCE_NAME一致
#MAL_HOST = 10.77.16.153 #MAL系统监听TCP内部网络IP
#MAL_PORT = 1141 #MAL系统监听TCP连接的端口
#MAL_INST_HOST = 10.77.16.153 #实例的对外服务IP地址
#MAL_INST_PORT = 5236 #与dm.ini中的PORT_NUM一致
#MAL_DW_PORT = 2141 #实例对应的守护进程监听TCP端口
#MAL_INST_DW_PORT = 3141 #实例监听守护进程TCP连接的端口

#[MAL_INST2]
#MAL_INST_NAME = DM_ST #与dm.ini中的INSTANCE_NAME一致
#MAL_HOST = 10.77.16.154 #MAL系统监听TCP内部网络IP
#MAL_PORT = 1141 #MAL系统监听TCP连接的端口
#MAL_INST_HOST = 10.77.16.153 #实例的对外服务IP地址
#MAL_INST_PORT = 5236 #与dm.ini中的PORT_NUM一致
#MAL_DW_PORT = 2141
#MAL_INST_DW_PORT = 3141 #实例监听守护进程TCP连接的端口

5.5 在c,d上分别执行,生效配置

/data/dmdbms/bin/disql SYSDBA/DMDBA_hust4400
SF_MAL_CONFIG(1,0);
SF_MAL_CONFIG_APPLY();
SF_MAL_CONFIG(0,0);

5.6 在c,d上分别执行,删除a,b节点的归档

/data/dmdbms/bin/disql SYSDBA/DMDBA_hust4400
ALTER DATABASE DELETE ARCHIVELOG 'DEST= DM, TYPE= REALTIME';
ALTER DATABASE DELETE ARCHIVELOG 'DEST= DM_ST, TYPE= REALTIME';

5.7 分别启动c,d守护进程

启动c主库守护进程
/data/dmdbms/bin/DmWatcherServiceDM start
启动d备库守护进程
/data/dmdbms/bin/DmWatcherServiceDM start

5.8 启动监视器

/data/dmdbms/bin/dmmonitor /data/dmdata/DM/dmmonitor.ini
show命令查看集群节点状态
c,d个节点的FLSN和CLSN值相同,说明2个节点的数据是一致的。
写入数据进行测试
/data/dmdbms/bin/disql SYSDBA/DMDBA_hust4400
insert into test values('lxx','3001');
commit;
select * from test;

5.9 修改c,d节点dmwatch.ini配置文件,调整为自动切换

[DM]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #手动切换模式
DW_ERROR_TIME = 60 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 65 #本地实例故障认定时间
INST_OGUID = 20260819 #守护系统唯一OGUID 值
INST_INI = /data/dmdata/DM/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /data/dmdbms/bin/DmServiceDM start #命令行方式启动

重启c,d守护进程
/data/dmdbms/bin/DmWatcherServiceDM restart

前台启动监视器
/data/dmdbms/bin/dmmonitor /data/dmdata/DM/dmmonitor.ini
List命令查看DW_MODE配置是否生效

登录c节点数据库,删除测试数据。
/data/dmdbms/bin/disql SYSDBA/DMDBA_hust4400
drop table test;
commit;
select * from test;

5.10 修改原a,b节点的OUGID

a节点
/data/dmdbms/bin/disql SYSDBA/DMDBA_hust4400
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(20260818);
ALTER DATABASE PRIMARY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

b节点
/data/dmdbms/bin/disql SYSDBA/DMDBA_hust4400
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(20260818);
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

前台启动监视器
/data/dmdbms/bin/dmmonitor /data/dmdata/DM/dmmonitor.ini

六、回退方案

6.1 恢复配置文件

在16.153、16.154上恢复dm.ini、dmmal.ini、dmmonitor.ini、dmarch.ini、dmwatcher.ini配置文件。

6.2 修改数据库模式和OUGID

a主库:10.77.16.153
/data/dmdbms/bin/DmServiceDM start
/data/dmdbms/bin/disql SYSDBA/DMDBA_hust4400@localhost:5236
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
SP_SET_OGUID(20260819);
ALTER DATABASE PRIMARY;
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);

b备库:10.77.16.154
/data/dmdbms/bin/DmServiceDM start
/data/dmdbms/bin/disql SYSDBA/DMDBA_hust4400@localhost:5236
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
SP_SET_OGUID(20260819);
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);

6.3 a,b分别启动守护进程服务

/data/dmdbms/bin/DmWatcherServiceDM start

6.4 打开集群监视器,检查节点运行状态

/data/dmdbms/bin/dmmonitor /data/dmdata/DM/dmmonitor.ini

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服