注册
达梦主备集群搭建及参数详解
培训园地/ 文章详情 /

达梦主备集群搭建及参数详解

DM_175509 2025/06/26 120 0 0

**达梦数据库(DM)主备集群是一种高可用性解决方案,旨在通过冗余机制提高数据库系统的可靠性和稳定性。主备集群为最基础的高可用架构,只有主库对外提供数据库服务,备库仅做备份,根据实际要求及网络条件,可以选择配置为自动切换或者手动切换模式。主备集群也是DCP考试中一项重要的考点,下面简要介绍搭建过程及一些重要参数的解释。

一、部署规划
数据守护节点规划:
dwp 192.168.56.103 ---主机
dws 192.168.56.104 ---备机
dwm 192.168.56.105 ---监视器

数据守护端口规划:
数据库名 实例名 PORT_NUM MAL_INST_DW_PORT MAL_HOST MAL_PORT MAL_DW_PORT
DMDB DMDB01 5236 45101 192.168.56.103 55101 65101
DMDB DMDB02 5236 45121 192.168.56.104 55121 65121

系统参数修改
cat /etc/sysctl.conf

fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
vm.swappiness=10
vm.dirty_background_ratio = 0
–vm.min_free_kbytes = 2097152

vim /etc/security/limits.conf
dmdba soft nofile 32768
dmdba hard nofile 65536

dmdba soft nice 0
dmdba hard nice 0
dmdba soft as unlimited
dmdba hard as unlimited
dmdba soft fsize unlimited
dmdba hard fsize unlimited
dmdba soft nproc 65536
dmdba hard nproc 65536
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft data unlimited
dmdba hard data unlimited
系统资源限制
vi /home/dmdba/.bash_profile

export DM_HOME=/dm/
export PATH=$PATH:$DM_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin

二、主备集群搭建
----先初始化主备库实例,dbca建库,注意名称
或者命令行初始化命令如下:
主库(IP: 192.168.56.103 实例名:DMDB):
./dminit path=/dm/data DB_NAME=DMDB INSTANCE_NAME=DMDB01 PAGE_SIZE=8 EXTENT_SIZE=16 LOG_SIZE=500 CASE_SENSITIVE=Y SYSDBA_PWD=Dameng123

备库(IP: 192.168.56.104 实例名:DMDB):
./dminit path=/dm/data DB_NAME=DMDB INSTANCE_NAME=DMDB02 PAGE_SIZE=8 EXTENT_SIZE=16 LOG_SIZE=500 CASE_SENSITIVE=Y SYSDBA_PWD=Dameng123

--注意 dbca初始化数据库,在初始化过程中会注册数据库服务。如果用命令初始化需要自己手动注册服务,命令如下:
主库:
/dm/script/root/dm_service_installer.sh -t dmserver -p DMDB01 -dm_ini /dm/data/DMDB/dm.ini
备库:
/dm/script/root/dm_service_installer.sh -t dmserver -p DMDB02 -dm_ini /dm/data/DMDB/dm.ini

--主备两台实例关掉
./DmServiceDMDB01 stop
./DmServiceDMDB02 stop

--对主机进行备份:
./dmrman CTLSTMT="BACKUP DATABASE '/dm/data/DMDB/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm/backup/BACKUP_FILE_01'"

--从主传到备
scp /dm/backup/BACKUP_FILE_01/* dmdb@192.168.56.104:/dm/backup

--在备上进行恢复
./dmrman CTLSTMT="RESTORE DATABASE '/dm/data/DMDB/dm.ini' FROM BACKUPSET '/dm/backup'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DMDB/dm.ini' FROM BACKUPSET '/dm/backup'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DMDB/dm.ini' UPDATE DB_MAGIC"

--------主库primary配置------------
dm.ini

INSTANCE_NAME = DMDB01
PORT_NUM = 5236 #数据库实例监听端口
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次的日志发送信息

dmmal.ini
配置MAL系统,各主备库的dmmal.ini配置必须完全一致

MAL_CHECK_INTERVAL = 5 #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定MAL链路断开的时间
[MAL_INST1]
MAL_INST_NAME = DMDB01 #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 192.168.56.103 #MAL系统监听TCP连接的IP地址
MAL_PORT = 55101 #MAL系统监听TCP连接的端口
MAL_INST_HOST = 192.168.56.103 #实例的对外服务IP地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 65101 #实例本地的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 45101 #实例监听守护进程TCP连接的端口
[MAL_INST2]
MAL_INST_NAME = DMDB02
MAL_HOST = 192.168.56.104
MAL_PORT = 55121
MAL_INST_HOST = 192.168.56.104
MAL_INST_PORT = 5236
MAL_DW_PORT = 65121
MAL_INST_DW_PORT = 45121


dmarch.ini (注:arch_dest备机写主机实例,主机写备机实例)

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DMDB02 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位Mb,0表示无限制,范围1024~2147483647M


dmwatcher.ini
修改dmwatcher.ini配置守护进程,配置为全局守护类型,使用自动切换模式。

[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一OGUID值
INST_INI = /dm/data/DMDB/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭

启动主库
./dmserver /dm/data/DMDB/dm.ini mount #前台启动,关闭窗口会停实例
或者
cd /dm/bin
./DmServiceDMDB mount #后台启动

修改主库的模式和设置oguid。
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(453331);
SQL>alter database primary;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

-------------------------备库standby配置----------------------
standby

dm.ini

INSTANCE_NAME = DMDB02
PORT_NUM = 5236
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64


dmmal.ini

MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DMDB01
MAL_HOST = 192.168.56.103
MAL_PORT = 55101
MAL_INST_HOST = 192.168.56.103
MAL_INST_PORT = 5236
MAL_DW_PORT = 65101
MAL_INST_DW_PORT = 45101
[MAL_INST2]
MAL_INST_NAME = DMDB02
MAL_HOST = 192.168.56.104
MAL_PORT = 55121
MAL_INST_HOST = 192.168.56.104
MAL_INST_PORT = 5236
MAL_DW_PORT = 65121
MAL_INST_DW_PORT = 45121


dmarch.ini (注:arch_dest备机写主机实例,主机写备机实例)

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DMDB01
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0


dmwatcher.ini

[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 453331
INST_INI = /dm/data/DMDB/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm/bin/dmserver
RLOG_APPLY_THRESHOLD = 0

以 Mount 方式启动备库
./dmserver /dm/data/DMDB/dm.ini mount
或者
cd /dm/bin
./DmServiceDMDB mount

设置备库模式和oguid值
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(453331);
SQL>alter database standby;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

--启主备库的守护进程
启主库守护进程
[dmdba@/dm/bin]#./dmwatcher /dm/data/DMDB/dmwatcher.ini

启备库守护进程
[dmdba@/dm/bin]#./dmwatcher /dm/data/DMDB/dmwatcher.ini

三、监视器搭建
--monitor节点配置监视器---
dmmonitor.ini
由于主库和实时备库的守护进程配置为自动切换模式,因此这里选择配置确认监视器。和普通监视器相比,确认监视器除了相同的命令支持外,在主库发生故障时,能够自动通知实时备库接管为新的主库,具有自动故障处理的功能。

MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /dm/data/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔60s定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453331 #组GRP1的唯一OGUID值
MON_DW_IP = 192.168.56.103:65101 #IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT
MON_DW_IP = 192.168.56.104:65121 #IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT

前台启动监视器
[dmdba@localhost bin]$ ./dmmonitor /dm/dmmonitor.ini
监视器提供一系列命令,支持当前守护系统状态查看及故障处理,可输入help查看。,在监视器上执行show命令,可以监控所有实例。
主备切换
1.查看集群可以切换的节点
choose switchover GRP1
Can choose one of the following instances to do switchover:
1: DMDB02
2.输入switchover DMDB02回车,集群开始进行主备切换
switchover DMDB2

后续步骤:
--在mon节点注册监视器服务(也可以不注册)
/dm/script/root/dm_service_installer.sh -t dmmonitor -p ITSM_DB -monitor_ini /dm/dmmonitor.ini

-- 注意守护进程注册服务
注册主库的守护进程
[root@~]# /dm/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dm/data/DMDB/dmwatcher.ini
注册备库的守护进程
[root@~]# /dm/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dm/data/DMDB/dmwatcher.ini

**

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服