注册
单机在线改主备
培训园地/ 文章详情 /

单机在线改主备

DM_738629 2026/09/30 208 0 0

前言

随着业务规模不断增长,单机架构面临单点故障风险,一旦服务器宕机、硬件损坏,就会直接造成业务中断,对线上业务稳定性带来极大隐患。此时最常见的改造诉求就是:**不停业务、在线把现有单机达梦数据库,改造成主备守护集群,不需要停机重建数据库,最大程度降低业务改造窗口期。

下面案例中,原有 A 机器为正在运行的达梦单机主库,新增 B 机器作为备库。整个改造过程主库数据库不停止服务,在线修改参数、配置 MAL、实时归档,通过热备份初始化备库数据,最终构建达梦主备守护集群。

一、环境规划

配置项 A机器(主库) B机器(备库)
业务IP 192.168.43.4 192.168.43.5
心跳IP(MAL) 192.168.233.4 1192.168.233.5
实例名 DMSERVER DMSERVER1
实例端口 5236 5236
MAL端口 5336 5336
MAL守护进程端口 5436 5436
守护进程端口 5536 5536

二、原单机配置修改

1.确认初始化参数

主库和备库初始化参数相同

主库查找初始化参数
 history | grep dminit
-- 可通过连接数据库进行确认
./disql SYSDBA/DMdata456
SQL> SELECT SF_GET_PAGE_SIZE();
SQL> SELECT SF_GET_EXTENT_SIZE();
SQL> SELECT SF_GET_UNICODE_FLAG();
SQL> SELECT CASE_SENSITIVE();

image20260929145728697.png

2.修改主库相关配置

动态修改dm.ini

./disql SYSDBA/DMdata456
sp_set_para_value(1,'DW_INACTIVE_INTERVAL',60);
SP_SET_PARA_VALUE (1,'ENABLE_OFFLINE_TS',2);

配置 MAL

vi /dmdata/data/DAMENG/dmmal.ini

MAL_CHECK_INTERVAL      = 10
MAL_CONN_FAIL_INTERVAL  = 10
MAL_BUF_SIZE            = 512
MAL_SYS_BUF_SIZE        = 2048
MAL_COMPRESS_LEVEL      = 0

[MAL_INST1]
MAL_INST_NAME    = DMSERVER
MAL_HOST         = 192.168.233.4
MAL_PORT         = 5336
MAL_INST_HOST    = 192.168.43.4
MAL_INST_PORT    = 5236
MAL_DW_PORT      = 5436
MAL_INST_DW_PORT = 5536

# 备库实例名
[MAL_INST2]
MAL_INST_NAME    = DMSERVER1
MAL_HOST         = 192.168.233.5
MAL_PORT         = 5336
MAL_INST_HOST    = 192.168.43.5
MAL_INST_PORT    = 5236
MAL_DW_PORT      = 5436
MAL_INST_DW_PORT = 5536

主库启动mal

./disql SYSDBA/DMdata456
SP_SET_PARA_VALUE (1,'MAL_INI',1);

添加实时归档

./disql SYSDBA/DMdata456
-- 添加实时归档
ALTER DATABASE ADD ARCHIVELOG 'DEST=DMSERVER1,TYPE=REALTIME';

-- 执行在线热备份
BACKUP DATABASE BACKUPSET '/dmdata/dmbak/full_bak1';

image20260929152246772.png

配置 dmwatcher.ini

vi /dmdata/data/DAMENG/dmwatcher.ini

[GRP1]
DW_TYPE             = GLOBAL
DW_MODE             = AUTO   
DW_ERROR_TIME       = 20
INST_ERROR_TIME     = 20
INST_RECOVER_TIME   = 20
INST_OGUID          = 20260929
INST_INI            = /dmdata/data/DAMENG/dm.ini
INST_AUTO_RESTART   = 1
INST_STARTUP_CMD    = /home/dmdba/dmdbms/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD= 0

3.注册服务

注册守护服务

su - root
 ./dm_service_installer.sh  -t dmwatcher -p Watcher -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini

修改实例服务启动方式

su - dmdba
cd /home/dmdba/dmdbms/bin
vi DmService_5236 

image20260929152907360.png

三、新备库配置修改

1.初始化数据库

参考主库初始化参数,需要修改实例名称,主备库实例名不能相同

./dminit path=/dmdata/data page_size=32 extent_size=32 charset=1 case_sensitive=0 log_size=2048  INSTANCE_NAME=DMSERVER1 SYSDBA_PWD=DMdata456 SYSAUDITOR_PWD=DMdata456

2.修改备库相关配置

将主库的dmmal.ini、dmarch.ini、dmwatcher.ini、以及备份集传递到备库

scp dmmal.ini dmarch.ini dmwatcher.ini dmdba@192.168.43.5:/dmdata/data/DAMENG/
scp -r full_bak1/ dmdba@192.168.43.5:/dmdata/dmbak

修改备库dm.ini

 MAL_INI  = 1
 ARCH_INI = 1
 ENABLE_OFFLINE_TS = 2 

修改dmarch

修改实时归档部分即可

--主库实例名
ARCH_DEST            = DMSERVER

image20260929155028810.png

3.注册服务

注册实例和守护服务

su - root
cd /home/dmdba/dmdbms/script/root
 ./dm_service_installer.sh -t dmserver -p _5236 -dm_ini /dmdata/data/DAMENG/dm.ini
 ./dm_service_installer.sh  -t dmwatcher -p Watcher -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini

修好实例启动方式为mount

image20260929160646800.png

4.备库恢复数据

su - dmdba
/home/dmdba/dmdbms/bin/dmrman
restore database '/dmdata/data/DAMENG/dm.ini' from backupset '/dmdata/dmbak/full_bak1'
recover database '/dmdata/data/DAMENG/dm.ini' from backupset '/dmdata/dmbak/full_bak1'
recover database '/dmdata/data/DAMENG/dm.ini' update DB_MAGIC

四、监视器配置

监视器放在192.168.43.4服务器

cd /home/dmdba/dmdbms/bin
vi dmmonitor.ini

MON_DW_CONFIRM      = 1    # 确认监视器
MON_LOG_PATH        = ../log
MON_LOG_INTERVAL    = 60
MON_LOG_FILE_SIZE   = 512
MON_LOG_SPACE_LIMIT = 2048

[GRP1]
MON_INST_OGUID = 20260929
MON_DW_IP = 192.168.233.4:5436
MON_DW_IP = 192.168.233.5:5436

五、启动集群

192.168.43.4修改数据库角色为主库

cd /home/dmdba/dmdbms/bin
./disql SYSDBA/DMdata456
alter database mount;
sp_set_oguid(20260929);
alter database primary;

192.168.43.5修改数据库角色为备库

cd /home/dmdba/dmdbms/bin
 ./DmService_5236 start
./disql SYSDBA/DMdata456
sp_set_oguid(20260929);
alter database standby;

启动主备的守护进程

./DmWatcherServiceWatcher start

启动监视器

cd /home/dmdba/dmdbms/bin
./dmmonitor dmmonitor.ini

六、集群状态查

监视器查看

观察主备库角色,以及实例状态

image20260929161519132.png

查看备库数据

主库原有数据,用户也成功同步到备库中

image20260929161702136.png

主备切换

登录监视器
-- 查看接管的备库
choose switchover

-- 进行主备切换
switchover DMSERVER1

切换成功

image20260929162045188.png

总结

改造思路:原单机库不停机在线开启 MAL、配置实时归档,在线做热备份;新服务器初始化同参数的空库,拷贝配置文件,通过备份集恢复数据,设置 mount 模式,再分别设置主库 PRIMARY 角色、备库 STANDBY 角色,启动守护进程 + 监视器完成集群构建,实现单机升级为主备集群

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服