随着业务规模不断增长,单机架构面临单点故障风险,一旦服务器宕机、硬件损坏,就会直接造成业务中断,对线上业务稳定性带来极大隐患。此时最常见的改造诉求就是:**不停业务、在线把现有单机达梦数据库,改造成主备守护集群,不需要停机重建数据库,最大程度降低业务改造窗口期。
下面案例中,原有 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 |
主库和备库初始化参数相同
主库查找初始化参数
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();
./disql SYSDBA/DMdata456
sp_set_para_value(1,'DW_INACTIVE_INTERVAL',60);
SP_SET_PARA_VALUE (1,'ENABLE_OFFLINE_TS',2);
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';
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
注册守护服务
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
参考主库初始化参数,需要修改实例名称,主备库实例名不能相同
./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
将主库的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
MAL_INI = 1
ARCH_INI = 1
ENABLE_OFFLINE_TS = 2
修改实时归档部分即可
--主库实例名
ARCH_DEST = DMSERVER
注册实例和守护服务
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
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
监视器查看
观察主备库角色,以及实例状态
查看备库数据
主库原有数据,用户也成功同步到备库中
主备切换
登录监视器
-- 查看接管的备库
choose switchover
-- 进行主备切换
switchover DMSERVER1
切换成功
改造思路:原单机库不停机在线开启 MAL、配置实时归档,在线做热备份;新服务器初始化同参数的空库,拷贝配置文件,通过备份集恢复数据,设置 mount 模式,再分别设置主库 PRIMARY 角色、备库 STANDBY 角色,启动守护进程 + 监视器完成集群构建,实现单机升级为主备集群
文章
阅读量
获赞
