注册
达梦数据库数据守护进程配置指南
培训园地/ 文章详情 /

达梦数据库数据守护进程配置指南

Evides 2025/06/13 270 0 0

达梦数据库数据守护进程配置指南
在当今数据至关重要的时代,数据库的高可用性和数据安全性成为了企业关注的焦点。达梦数据库的数据守护功能为我们提供了强大的保障,它能够在硬件故障、自然灾害等极端情况下,避免数据损坏、丢失,确保数据库服务的连续性。本文将详细介绍达梦数据库数据守护进程的配置方法,帮助你构建可靠的数据库环境。
一、数据守护简介
达梦数据守护是一种集成化的高可用、高性能数据库解决方案,是数据库异地容灾的首选方案。其核心原理是将主库产生的 Redo 日志传输到备库,备库接收并重做应用 Redo 日志,从而实现备库与主库的数据同步。通过这种方式,在主库出现故障时,备库能够迅速接管服务,保证业务的正常运行。
数据守护可以提供多种解决方案,如实时主备、MPP 主备、读写分离集群等,满足不同用户在系统可用性、数据安全性、性能等方面的综合需求。接下来,我们以实时主备模式为例,介绍数据守护进程的配置过程。
二、配置前准备
(一)环境要求
在配置数据守护之前,需要确保服务器环境满足一定的要求。通常需要两台或多台服务器,并且这些服务器之间能够进行可靠的网络通信。同时,每台服务器上都需要安装达梦数据库软件,并且数据库的版本要兼容数据守护功能。
(二)数据初始化与同步
在配置数据守护之前,必须先同步实例数据,确保主库和备库的数据保持完全一致。达梦提供了两种方式初始化同步实例数据:数据文件拷贝以及备份还原方式。这里我们以备份还原方式为例进行介绍:
正常关闭数据库:在主库上执行关闭数据库操作,确保数据库处于一致性状态。
进行脱机备份:使用达梦的备份工具 dmrman,执行以下命令进行脱机备份:
./dmrman CTLSTMT="BACKUP DATABASE '/dm/data/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm/data/BACKUP_FILE_01'"

拷贝备份文件到备库所在机器:将主库上生成的备份文件通过安全的方式(如 scp 命令)拷贝到备库的相应目录下。
执行脱机数据库还原与恢复:在备库上使用 dmrman 工具,依次执行以下命令进行还原与恢复:
./dmrman CTLSTMT="RESTORE DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET '/dm/data/BACKUP_FILE_01'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET '/dm/data/BACKUP_FILE_01'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' UPDATE DB_MAGIC"

(三)检测数据一致性
完成数据同步后,需要检测主库和备库的数据一致性。依次到每个实例上,切换到执行码目录 /dm/bin,以 mount 方式启动数据库:
./dmserver /dm/data/DAMENG/dm.ini mount

启动命令行工具 DIsql,分别登录各个实例查询 LSN 值,如果主库和备库的 FILE_LSN 和 CUR_LSN 值相同,可以确保数据完全一致。同时,检查实例的永久魔数是否一致:
SQL>select permanent_magic;

确保 LSN 和永久魔数都一致的情况下,正常关闭各个实例,继续配置数据守护。
三、主库配置
(一)配置 dm.ini
在主库所在机器上,找到并编辑 dm.ini 文件,进行如下参数修改:
INSTANCE_NAME = GRP1_RT_01 #实例名,建议采用“组名_守护环境_序号”的方式命名
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近64次的日志发送信息

(二)配置 dmmal.ini
配置 MAL 系统,各主备库的 dmmal.ini 配置必须完全一致。MAL_HOST 使用内部网络 IP,MAL_PORT 与 dm.ini 中 PORT_NUM 使用不同的端口值,MAL_DWPORT 是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口。配置如下:
MAL_CHECK_INTERVAL = 5 #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定MAL链路断开的时间
MAL_HOST = 主库内部网络IP #主库的内部网络IP地址
MAL_PORT = 主库MAL端口 #与dm.ini中PORT_NUM不同的端口
MAL_DWPORT = 主库守护进程通信端口

(三)配置 dmarch.ini
修改 dmarch.ini,配置本地归档和即时归档。除了本地归档外,其他归档配置项中的 ARCH_DEST 表示实例是 Primary 模式时,需要同步归档数据的目标实例名。例如:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm/data/DAMENG/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位Mb,0表示无限制,范围1024~4294967294M
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = 备库实例名 #实时归档目标实例名,如GRP1_RT_02

(四)配置 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/DAMENG/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭

(五)生成 dmwatcher.ctl
同一个守护进程组,必须使用同一份 dmwatcher.ctl。因此,只需要使用 dmctlcvt 工具生成一份 dmwatcher.ctl 文件,然后分别拷贝到各个数据库目录下即可。在配置完成 dmwatcher.ini 后,使用 dmctlcvt 工具生成 dmwatcher.ctl:
./dmctlcvt TYPE=2 SRC=/dm/data/DAMENG/dmwatcher.ini DEST=/dm/data/DAMENG/dmwatcher.ctl

拷贝生成的 dmwatcher.ctl 文件到数据文件目录 /dm/data/DAMENG。
(六)启动主库
以 mount 方式启动主库:
./dmserver /dm/data/DAMENG/dm.ini mount

启动命令行工具 DIsql,登录主库设置 OGUID 值:
SQL>sp_set_oguid(453331);

修改数据库模式为 Primary:
SQL>alter database primary;

四、备库配置
(一)配置 dm.ini
在备库所在机器上,编辑 dm.ini 文件,进行如下参数修改:
INSTANCE_NAME = GRP1_RT_02 #备库实例名
PORT_NUM = 32142 #数据库实例监听端口,与主库不同
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2 #不允许备库OFFLINE表空间
MAL_INI = 1 #打开MAL系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近64次的日志重演信息

(二)配置 dmmal.ini
配置 MAL 系统,与主库的 dmmal.ini 配置完全一致,可以直接从主库拷贝过来,然后根据备库的实际情况修改 MAL_HOST 等参数:
MAL_CHECK_INTERVAL = 5 #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定MAL链路断开的时间
MAL_HOST = 备库内部网络IP #备库的内部网络IP地址
MAL_PORT = 备库MAL端口 #与dm.ini中PORT_NUM不同的端口
MAL_DWPORT = 备库守护进程通信端口

(三)配置 dmarch.ini
配置本地归档和实时归档,与主库类似,但实时归档的 ARCH_DEST 要指向主库实例名:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm/data/DAMENG/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位Mb,0表示无限制,范围1024~4294967294M
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = 主库实例名 #实时归档目标实例名,如GRP1_RT_01

(四)配置 dmwatcher.ini
配置守护进程,与主库的 dmwatcher.ini 类似,但 INST_INI 要指向备库的 dm.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/DAMENG/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm/bin/dmserver #命令行方式启动
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭

(五)启动备库
以 mount 方式启动备库:
./dmserver /dm/data/DAMENG/dm.ini mount

启动命令行工具 DIsql,登录备库设置 OGUID 值:
SQL>sp_set_oguid(453331);

修改数据库模式为 Standby:
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>alter database standby;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

五、配置确认监视器
为了实现主库故障时备库的自动接管,我们需要配置确认监视器。在另一台机器上,编辑 dmmonitor.ini 文件:
MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /dm/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔60s定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453331 #组GRP1的唯一OGUID值
#以下配置为监视器到组GRP1的守护进程的连接信息,以“IP:PORT”的形式配置
#IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT
MON_DW_IP = 主库MAL_HOST:主库MAL_DWPORT
MON_DW_IP = 备库MAL_HOST:备库MAL_DWPORT

六、启动数据守护集群
(一)启动主备库守护进程
在主库和备库上,分别启动守护进程:
主库:./dmwatcher
备库:./dmwatcher

守护进程启动后,进入 Startup 状态,此时实例都处于 Mount 状态。守护进程开始广播自身和其监控实例的状态信息,结合自身信息和远程守护进程的广播信息,守护进程将实例 open,并切换为 open 状态。
(二)启动确认监视器
在配置好确认监视器的机器上,启动确认监视器:
./dmmonitor /dm/data/dmmonitor.ini

至此,实时主备模式的数据守护集群搭建完毕。在监视器上执行 show 命令,可以监控到所有实例都处于 Open 状态,所有守护进程也都处于 open 状态,即为正常运行状态。
通过以上步骤,我们成功配置了达梦数据库的数据守护进程,实现了数据库的高可用性和数据安全性。在实际应用中,你可以根据业务需求进一步调整和优化配置,以满足不同的场景需求。希望本文对你学习和使用达梦数据库数据守护功能有所帮助。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服