注册
达梦数据库主备集群搭建
专栏/培训园地/ 文章详情 /

达梦数据库主备集群搭建

五毛一 2026/09/18 88 0 0
摘要

一、前置准备

以正常步骤进行安装两套数据库并创建实例

二、主库备份与备库还原

2.1 主库备份

在主库侧使用 DMRMAN 对当前数据库执行全量备份,备份集保存到指定目录。备份成功后再将备份集用于备库还原,确保主备两端的数据起点一致。
image.png

2.2 备库还原

在备库侧依次执行 RESTORE、RECOVER 和更新 DB_MAGIC 操作。还原用于恢复数据文件,恢复用于应用备份集中的必要日志信息,更新数据库魔数用于使恢复后的数据库具备独立、可用的实例标识。
image.png
image.png

三、基础参数与通信配置

主备两端需要启用与主备运行相关的参数。修改后应确认参数文件保存成功,并核对实例启动时读取的确实是当前 dm.ini。

3.1 修改 dm.ini 参数

vi dm.ini
ALTER_MODE_STATUS=0
ENABLE_OFFLINE_TS=2
MAL_INI=1
ARCH_INI=1

3.2 配置 dmmal.ini

MAL 配置用于建立主库与备库之间的内部通信链路。配置时应保证实例名与 dm.ini 一致,并正确填写主备服务器 IP、MAL 监听端口、实例服务端口及守护通信端口。两台服务器对应配置需要能够相互匹配。
image.png

3.3 配置 vi dmsrch.ini

主库实时归档目标指向备库实例,同时配置本地归档目录;备库也保留相应归档配置。归档目录必须提前创建并确保数据库运行用户具备读写权限。
主节点
image.png
备节点
image.png

四、守护进程与监视器配置

4.1 配置 dmwatcher.ini

主备两端的 dmwatcher.ini 用于定义守护组、运行模式、故障判定时间、恢复时间、OGUID、实例配置文件路径以及自动启动命令。主备两端应属于同一守护组,并使用相同 OGUID。
主节点
image.png
备节点
image.png
./dmserver /data/dmdata/DAMENG01/dm.ini mount
主节点
image.png
./dmserver /data/dmdata/DAMENG02/dm.ini mount
备节点
image.png

4.2 配置 dmmonitor.ini

监视器用于集中查看守护组和实例状态。展示普通监视器与第三台服务器上的确认监视器配置。确认监视器通常用于具备自动切换决策能力的场景,因此配置位置、MON_DW_CONFIRM 参数和连接信息需要格外核对。
普通监视器(备)
image.png
确认监视器(第三台服务器)
image.png

五、注册数据库、守护与监视器服务

将数据库实例、守护进程和监视器注册为系统服务后,可以使用统一的服务脚本进行启动、停止和状态管理。服务注册命令中的 -p 参数决定生成的服务名称后缀,-dm_ini、-watcher_ini 和 -monitor_ini 分别指定对应配置文件。
[主]
cd /home/dmdba/dmdbms/script/root/
./dm_service_installer.sh -t dmserver -p DAMENG01 -dm_ini /data/dmdata/DAMENG01/dm.ini -m mount
./dm_service_installer.sh -t dmwatcher -p DAMENG01 -watcher_ini /data/dmdata/DAMENG01/dmwatcher.ini
[备]
cd /home/dmdba/dmdbms/script/root/
./dm_service_installer.sh -t dmserver -p DAMENG02 -dm_ini /data/dmdata/DAMENG02/dm.ini -m mount
./dm_service_installer.sh -t dmwatcher -p DAMENG02 -watcher_ini /data/dmdata/DAMENG02/dmwatcher.ini
./dm_service_installer.sh -t dmmonitor -p DAMENG02 -monitor_ini /data/dmdata/DAMENG02/dmmonitor.ini
[第三台]
cd /home/dmdba/dmdbms/script/root/
./dm_service_installer.sh -t dmmonitor -p DAMENG -monitor_ini /data/dmmonitor.ini

六、设置主备角色

主库与备库均以 MOUNT 状态启动后,在数据库内部临时开启 ALTER_MODE_STATUS,设置相同的 OGUID,然后分别执行 PRIMARY 和 STANDBY 角色切换。角色设置完成后,再将 ALTER_MODE_STATUS 恢复为 0。
[主]
cd /home/dmdba/dmdbms/bin
./dmserver /data/dmdata/DAMENG01/dm.ini mount
./disql SYSDBA/’”Dameng@123”’
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
SP_SET_OGUID(453332);
ALTER DATABASE PRIMARY;
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);
exit
[备]
cd /home/dmdba/dmdbms/bin
./dmserver /data/dmdata/DAMENG02/dm.ini mount
./disql SYSDBA/’”Dameng@123”’
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
SP_SET_OGUID(453332);
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);

七、服务启动与停止顺序

开启服务 主库server 备库server 主库watcher 备库watcher 监视器
停止服务 监视器 主库watcher 备库watcher 主库server 备库server
image.png
image.png
八、异常处理:SPLIT 分裂状态
当监视器显示备库异常变为 PRIMARY,并出现 SPLIT 标记时,说明当前主备关系已经不再处于正常一致状态。处理顺序是先停止监视器和备库守护进程,再将 DAMENG02 恢复为 STANDBY,随后备份或移走 dmwatcher.ctl 控制文件,最后重新启动守护和监视器服务。执行前应确认当前主库数据仍为期望保留的数据源。
发生分裂,备库为PRIMARY,Open记录状态:SPLIT
cd /home/dmdba/dmdbms/bin
./DmMonitorServiceDAMENG stop
./DmWatcherServiceDAMENG02 stop
①把 DAMENG02 改回 STANDBY
./disql
SELECT INSTANCE_NAME, STATUS$, MODE$ FROM V$INSTANCE;
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
SP_SET_OGUID(453332);
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);
②处理 SPLIT 标记
find /data/dmdata/DAMENG02 -name "dmwatcher.ctl" -ls
应该是/data/dmdata/DAMENG02/dmwatcher.ctl
mv /data/dmdata/DAMENG02/dmwatcher.ctl
/data/dmdata/DAMENG02/dmwatcher.ctl.bak
③重启
./DmWatcherServiceDAMENG02 start
./DmMonitorServiceDAMENG start

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服