前言
-
背景:一套达梦单机环境,要升级成主备集群
-
目的:尽可能减少服务不可用时间
环境参数(以下值可根据实际情况批量替换)
ip1: 192.168.0.1
ip2: 192.168.0.2
用户组id :12349
安装目录: /home/dmdba/dmdbms
数据目录: /opt/dmdata/data
初始数据库名:DAMENG
归档目录: /opt/dmdata/arch
服务名: DmServicedw
ps:集群的心跳ip可与业务id一致,若不一致,需要单独调整
一、备机服务器环境参数调整
关闭numa、透明大页、selinux等参数,调整内核参数
二、备机安装数据库软件
参考单机部署安装
三、初始化数据库(备库)
在数据库安装目录下的bin目录执行,不用指定额外参数,下面会替换掉ini文件
./dminit path=/opt/dmdata/data
四、准备备库数据
将主库前一晚备份 scp 到备机,备库提前 RESTORE
scp root@192.168.0.1:/opt/dmdata/bak/备份文件名 /opt/dmdata/bak
./dmrman
RMAN> RESTORE DATABASE '/opt/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdata/bak/备份文件名';
五、配置主备库(配置文件提前配好)
在数据目录下操作
5.1 配置主库 dm.ini
拷贝主库dm.ini文件,在bak文件进行更改,停服后可直接切换
cp dm.ini dm_bak.ini
vi dm_bak.ini
INSTANCE_NAME = DW1
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
5.2 配置主库归档配置文件 dmarch.ini
vi dmarch.ini
ARCH_WAIT_APPLY = 0 #0:高性能 1:事务一致
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = DW2
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /opt/dmdata/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 102400
5.3 配置主库dmmal.ini
vi dmmal.ini
MAL_CHECK_INTERVAL = 10
MAL_CONN_FAIL_INTERVAL = 10
MAL_TEMP_PATH = /opt/dmdata/data/malpath/
MAL_BUF_SIZE = 512
MAL_SYS_BUF_SIZE = 2048
MAL_COMPRESS_LEVEL = 0
[MAL_INST1]
MAL_INST_NAME = DW1
MAL_HOST = 192.168.0.1 #心跳IP
MAL_PORT = 5336
MAL_INST_HOST = 192.168.0.1 #业务IP
MAL_INST_PORT = 5236
MAL_DW_PORT = 5436
MAL_INST_DW_PORT = 5536
[MAL_INST2]
MAL_INST_NAME = DW2
MAL_HOST = 192.168.0.2
MAL_PORT = 5336
MAL_INST_HOST = 192.168.0.2
MAL_INST_PORT = 5236
MAL_DW_PORT = 5436
MAL_INST_DW_PORT = 5536
5.4配置主库守护进程配置文件 dmwatcher.ini
vi dmwatcher.ini
[GRP_DW]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
DW_ERROR_TIME = 20 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 20 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一 OGUID 值
INST_INI = /opt/dmdata/data/DAMENG/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #修改服务名方式启动
5.5备机拷贝主库dm.ini
直接用主库dm.ini文件对备库进行替换
scp root@192.168.0.1:/opt/dmdata/data/DAMENG/dm.ini /opt/dmdata/data/DAMENG/
修改dm.ini文件中实例名
INSTANCE_NAME = DW2
5.6备机配置 dmarch.ini
vi dmarch.ini
ARCH_WAIT_APPLY = 0
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = DW1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/dmarch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 102400
5.6备机拷贝主库的dmmal.ini
所有涉及scp文件拷贝的操作结束后记得关注拷贝过来的文件的所有者权限,下同
scp root@192.168.0.1:/opt/dmdata/data/DAMENG/dmmal.ini /opt/dmdata/data/DAMENG/
5.7 备机拷贝主库的dmwatcher.ini
scp root@192.168.0.1:/opt/dmdata/data/DAMENG/dmwatcher.ini /opt/dmdata/data/DAMENG/
5.8 配置主备库的监视器
非确认监视器
vi dmmonitor_mumal.ini
MON_DW_Confirm = 0 #非确认监视器模式
MON_LOG_PATH = /home/dmdba/dmdbms/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60 s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 200 #每个日志文件最大 32 MB
MON_LOG_SPACE_LIMIT = 1024 #不限定日志文件总占用空间
[GRP_DW]
MON_INST_OGUID = 453331 #组 GRP_DW 的唯一 OGUID 值
#以下配置为监视器到组 GRP_DW 的守护进程的连接信息,以“IP:PORT”的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 192.168.0.1:5436
MON_DW_IP = 192.168.0.2:5436
确认监视器
vi dmmonitor.ini
MON_DW_Confirm = 1 #确认监视器模式
MON_LOG_PATH = /home/dmdba/dmdbms/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60 s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 200 #每个日志文件最大 32 MB
MON_LOG_SPACE_LIMIT = 1024 #不限定日志文件总占用空间
[GRP_DW]
MON_INST_OGUID = 453331 #组 GRP_DW 的唯一 OGUID 值
#以下配置为监视器到组 GRP_DW 的守护进程的连接信息,以“IP:PORT”的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 192.168.0.1:5436
MON_DW_IP = 192.168.0.2:5436
六、停服
6.1 主库停机+切换配置文件
./DmServicedw stop
mv dm.ini dm2.ini
mv dm_bak.ini dm.ini
6.2 拷贝主库上的归档,除最新归档,指定还原时间点
scp root@192.168.0.1:/opt/dmdata/arch /opt/dmdata/arch
RMAN>RECOVER DATABASE '/opt/dmdata/data/DAMENG/dm.ini' WITH ARCHIVEDIR '/opt/dmdata/arch'
RMAN>RECOVER DATABASE '/opt/dmdata/data/DAMENG/dm.ini' UPDATE DB_MAGIC
七、注册修改服务
cd /home/dmdba/dmdbms/script/root
注册主库守护dmwatcher服务
./dm_service_installer.sh -t dmwatcher -p dw -watcher_ini /opt/dmdata/data/DAMENG/dmwatcher.ini
修改主库实例dmserver服务
START_MODE=mount
注册备库守护dmwatcher服务
./dm_service_installer.sh -t dmwatcher -p dw -watcher_ini /opt/dmdata/data/DAMENG/dmwatcher.ini
注册备库实例dmserver服务
./dm_service_installer.sh -t dmserver -p dw -dm_ini /opt/dmdata/data/DAMENG/dm.ini -m mount
注册监视器服务
./dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /opt/dmdata/data/DAMENG/dmmonitor.ini
八、重启生效搭建主备集群
主库(实例服务启动为mount状态)
./DmServicedw start
disql
>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
>sp_set_oguid(453331);
>alter database primary;
>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
备库(实例服务启动为mount状态)
./DmServicedw start
disql
>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
>sp_set_oguid(453331);
>alter database standby;
>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
主备库分别启动守护进程服务
./DmWatcherServicedw start
启动监视器
./DmMonitorServiceMonitor start