参数项 1号机(主节点) 2号机(备节点)
业务IP/心跳IP 192.168.10.138 192.168.10.139
数据库实例名 GRP1_RT_01 GRP1_RT_02
数据库端口 5236 5236
MAL通信端口 61141 61142
MAL_INST_DW_PORT(实例监听守护) 33141 33142
MAL_DW_PORT(守护进程监听) 52141 52142
集群角色 PRIMARY(主库) STANDBY(备库)
达梦安装路径 /home/dmdba/dmdbms /home/dmdba/dmdbms
操作系统用户 dmdba:dinstall dmdba:dinstall
数据库管理员账号 SYSDBA,密码 Dameng@123 SYSDBA,密码 Dameng@123
OGUID 453331 453331
守护组名 GRP1 GRP1
双节点修改 /etc/hosts,实现IP与主机名互解析,保证集群MAL通信正常。
192.168.10.138 dm1
192.168.10.139 dm2
EOF
集群要求双节点时间一致,防止日志同步、守护判定异常。
systemctl start chronyd
systemctl enable chronyd
chronyc tracking
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
useradd -g dinstall -m -d /home/dmdba dmdba
echo "Dameng@123" | passwd --stdin dmdba
mkdir -p /home/dmdba/dmdbms/{data,backup}
chown -R dmdba:dinstall /home/dmdba/dmdbms
/mnt/dm_iso/DMInstall.bin -i
将安装包(或 ISO)挂载后,以 dmdba 用户执行。安装完成后,以 root 执行
/home/dmdba/dmdbms/script/root/root_installer.sh。
su - dmdba
dminit PATH=/home/dmdba/dmdbms/data INSTANCE_NAME=GRP1_RT_01 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 SYSDBA_PWD=Dameng@123 SYSAUDITOR_PWD=Dameng@123
dmserver /home/dmdba/dmdbms/data/DAMENG/dm.ini
开启数据守护、MAL通信、归档同步相关参数,适配主备集群模式。
cp dm.ini dm.ini.bak
sed -i 's/^INSTANCE_NAME.*/INSTANCE_NAME = GRP1_RT_01/' dm.ini
sed -i 's/^PORT_NUM.*/PORT_NUM = 5236/' dm.ini
sed -i 's/^DW_INACTIVE_INTERVAL.*/DW_INACTIVE_INTERVAL = 60/' dm.ini
sed -i 's/^ALTER_MODE_STATUS.*/ALTER_MODE_STATUS = 0/' dm.ini
sed -i 's/^ENABLE_OFFLINE_TS.*/ENABLE_OFFLINE_TS = 2/' dm.ini
sed -i 's/^MAL_INI.*/MAL_INI = 1/' dm.ini
sed -i 's/^ARCH_INI.*/ARCH_INI = 1/' dm.ini
grep -q "^RLOG_SEND_APPLY_MON" dm.ini || echo "RLOG_SEND_APPLY_MON = 64" >> dm.ini
MAL 为达梦集群心跳通信核心配置,双节点内容必须完全一致。
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = GRP1_RT_01
MAL_HOST = 192.168.10.138
MAL_PORT = 61141
MAL_INST_HOST = 192.168.10.138
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 33141
[MAL_INST2]
MAL_INST_NAME = GRP1_RT_02
MAL_HOST = 192.168.10.139
MAL_PORT = 61142
MAL_INST_HOST = 192.168.10.139
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
EOF
配置集群组、主库角色、自动故障切换模式、守护检测参数。
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_RT_02
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dmdbms/data/DAMENG/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
EOF
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 453331
INST_INI = /home/dmdba/dmdbms/data/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
EOF
另开终端连接:
disql SYSDBA/Dameng@123@192.168.10.138:5236
执行:
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(453331);
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG 'DEST=/home/dmdba/dmdbms/data/DAMENG/arch, TYPE=LOCAL, FILE_SIZE=128, SPACE_LIMIT=0';
ALTER DATABASE ADD ARCHIVELOG 'DEST=GRP1_RT_02, TYPE=REALTIME';
ALTER DATABASE PRIMARY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
然后 exit 退出,关闭 dmserver。
通过 rman 对主库做全量备份,用于备库数据恢复,保证主备数据基线一致。
dmrman CTLSTMT="BACKUP DATABASE '/home/dmdba/dmdbms/data/DAMENG/dm.ini' FULL BACKUPSET '/home/dmdba/dmdbms/backup/BACKUP_FULL'"
scp /home/dmdba/dmdbms/data/DAMENG/dm.ini dmdba@192.168.10.139:/home/dmdba/dmdbms/data/DAMENG/
scp /home/dmdba/dmdbms/data/DAMENG/dmmal.ini dmdba@192.168.10.139:/home/dmdba/dmdbms/data/DAMENG/
scp /home/dmdba/dmdbms/data/DAMENG/dmwatcher.ini dmdba@192.168.10.139:/home/dmdba/dmdbms/data/DAMENG/
mkdir -p /home/dmdba/dmdbms/data/DAMENG
备库不初始化新实例,直接恢复主库备份,保证数据结构完全一致,并更新数据库魔数,适配备库角色。
dmrman CTLSTMT="RECOVER DATABASE '/home/dmdba/dmdbms/data/DAMENG/dm.ini' FOR STANDBY FROM BACKUPSET '/home/dmdba/dmdbms/backup/BACKUP_FULL'"
dmrman CTLSTMT="RECOVER DATABASE '/home/dmdba/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
直接拷贝主库通信配置,保证双机 MAL 参数完全一致。
仅修改角色为 STANDBY,其余参数与主库保持一致。
dmserver /home/dmdba/dmdbms/data/DAMENG/dm.ini mount
#另开终端
disql SYSDBA/Dameng@123@192.168.10.139:5236
SP_SET_OGUID(453331);
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
dmserver /home/dmdba/dmdbms/data/DAMENG/dm.ini mount &
dmserver /home/dmdba/dmdbms/data/DAMENG/dm.ini mount &
MON_DW_CONFIRM = 1
MON_LOG_PATH = /home/dmdba/dmdbms/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP1]
MON_INST_OGUID = 453331
MON_DW_IP = 192.168.10.138:52141
MON_DW_IP = 192.168.10.139:52142
EOF
dmwatcher /home/dmdba/dmdbms/data/DAMENG/dmwatcher.ini &
dmmonitor /home/dmdba/dmdbms/bin/dmmonitor.ini
在监视器执行 show,应看到主备库均为 OPEN,守护进程均为 OPEN。
在主库新建测试表并插入数据,提交事务,验证备库可实时查询同步数据。
主库执行:
INSERT INTO TEST VALUES (1, '集群搭建成功');
COMMIT;
备库查询:
SELECT * FROM TEST;
实验结论:备库成功查询主库新增数据,主备日志实时同步功能正常。
在主库终端 pkill -9 dmserver 模拟故障。监视器自动检测并执行接管流程(参见监视器日志),备库(139)自动切换为 PRIMARY 并 OPEN。验证新主库可写:
在监视器中持续观察输出,你会看到:
数据插入成功,业务接管完成。
重启原主节点数据库与守护进程,节点自动以备机身份接入集群,自动同步故障期间新主库产生的增量日志,修复数据差异。
/home/dmdba/dmdbms/bin/dmserver
/home/dmdba/dmdbms/data/DAMENG/dm.ini mount
/home/dmdba/dmdbms/bin/dmwatcher
/home/dmdba/dmdbms/data/DAMENG/dmwatcher.ini &
观察监视器状态,双节点恢复正常,数据完全一致。
监视器显示原主库自动切换为 STANDBY,并同步增量数据,最终双节点恢复正常。
在当前主库执行手动切换命令,互换主备角色,恢复初始架构。
在监视器中登录
执行手动切换:
观察切换过程
监视器执行show验证切换结果
• GRP1_RT_01(138):PRIMARY,OPEN
• GRP1_RT_02(139):STANDBY,OPEN
实验结论:手动主备切换功能正常,集群架构成功复原。
本次实验成功搭建达梦两节点自动切换数据守护集群,所有配置均基于真实环境(IP 192.168.10.138/139,实例 GRP1_RT_01/GRP1_RT_02)。通过四大核心实验验证了:
• 主备数据实时同步一致性
• 主机故障备机自动接管,业务不中断
• 故障节点增量恢复并重新加入集群
• 手动主备角色切换,集群架构可复原
实验过程完整,集群运行稳定,充分掌握了达梦数据守护集群的部署与运维技能。
文章
阅读量
获赞
