在达梦数据库生产落地中,单节点最大的痛点就是单点故障:服务器宕机、进程异常都会导致业务中断。而达梦数据守护集群(DW Data Watcher)是目前政企生产最主流、最稳定、零成本的高可用方案;相比传统第三方高可用组件,达梦原生主备集群内核级支持、无需额外插件、秒级自动切换、数据零丢失,完全适配政务、能源、金融、国企信创生产环境。
• 主备数据库初始化参数完全一致:页大小、字符集、大小写敏感、簇大小必须统一
• 服务器时间同步、防火墙/selinux关闭
• 三台节点均已安装DM8,配置好dmdba用户环境变量
• 全集群 OGUID 必须一致,否则集群无法联动
systemctl stop firewalld && systemctl disable firewalld
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
echo "dmdba soft nofile 65535" >> /etc/security/limits.conf
echo "dmdba hard nofile 65535" >> /etc/security/limits.conf
echo "dmdba soft nproc 65536" >> /etc/security/limits.conf
echo "dmdba hard nproc 65536" >> /etc/security/limits.conf
达梦主备集群四大核心配置:dm.ini、dmmal.ini、dmarch.ini、dmwatcher.ini,主备节点分别配置,参数严格对应。
作用:主备心跳检测、日志传输通道,主备文件内容基本一致
[MAL]
MAL_CHECK_INTERVAL = 5 MAL 心跳检测间隔
MAL_CONN_FAIL_INTERVAL = 5 连接超时判定时间
[MAL_INST1]
MAL_INST_NAME = GRP1_RT_01 # 数据库实例名,与dm.ini保持一致
MAL_HOST = 10.47.71.11 # 本节点MAL通信IP(内网心跳IP)
MAL_PORT = 61141 # 本节点MAL服务端口
MAL_INST_HOST = 10.47.70.39 # 本节点数据库监听IP(业务外网IP)
MAL_INST_PORT = 5236 # 数据库服务端口
MAL_DW_PORT = 52141 # 本节点守护进程(dmwatcher)通信端口
MAL_INST_DW_PORT = 5237 # 数据库守护监听端口
[MAL_INST2]
MAL_INST_NAME = GRP1_RT_02
MAL_HOST = 10.47.71.18
MAL_PORT = 61142
MAL_INST_HOST = 10.47.70.45
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 5237
主库归档指向备库,备库归档指向主库,开启实时归档保障数据强一致
Plain Text
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdbms/data/DAMENG/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 0
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_RT_02
ARCH_WAIT_APPLY = 1
Tips:备库配置时,ARCH_DEST 改为 GRP1_RT_01
全集群统一集群名与OGUID
[GRP1] DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 453331
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
主备分别修改对应实例名
INSTANCE_NAME = GRP1_RT_01 # 备库改 _02
PORT_NUM = 5236 ALTER_MODE_STATUS = 0 # 禁止手工改模式
ENABLE_OFFLINE_TS = 2 # 备库不许离线表空间
MAL_INI = 1 # 开启主备通信
ARCH_INI = 1 # 开启归档
DW_INI = 1 # 开启守护
Plain Text
systemctl stop DmServiceDMSERVER.service
/dmdbms/bin/dmserver /dmdbms/data/DAMENG/dm.ini mount
disql SYSDBA/SYSDBA
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);
dmrman CTLSTMT="BACKUP DATABASE FULL BACKUPSET '/dmdbms/backup/full_bak'"
dmrman CTLSTMT="RESTORE DATABASE '/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdbms/backup/full_bak'"
dmrman CTLSTMT="RECOVER DATABASE '/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdbms/backup/full_bak'"
dmrman CTLSTMT="RECOVER DATABASE '/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
dmserver /dmdbms/data/DAMENG/dm.ini mount
disql SYSDBA/SYSDBA
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);
主备节点均执行,root用户注册服务
/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /dmdbms/data/DAMENG/dm.ini -p DMSERVER
/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p WATCHER -watcher_ini /dmdbms/data/DAMENG/dmwatcher.ini
Plain Text
systemctl start DmServiceDMSERVER.service
systemctl start DmWatcherWATCHER.service
独立监视器节点无需初始化数据库,仅配置 dmmonitor.ini
[MONITOR]
MON_DW_OGUID = 453331
MON_DW_IP = 10.47.71.11: 52141, 10.47.71.18: 52142
MON_LOG_PATH = /dmdata/monitor/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 512
./dmmonitor /dmdbms/data/dmmonitor.ini
监视器界面输入 show,正常状态标准:
• 主库:Primary、Open、Normal
• 备库:Standby、Open、Normal
• MAL链路正常、归档正常、守护状态正常
SELECT * FROM V$ARCH_STATUS;
文章
阅读量
获赞
