之前整理的几篇博客如下:
DM7 达梦 数据库 数据守护(Data Watch) (1) — 基本概念
https://www.cndba.cn/dave/article/3665
DM7 达梦 数据库 数据守护(Data Watch) (2) — 主备类型
https://www.cndba.cn/dave/article/3666
DM7 达梦 数据库 数据守护(Data Watch) (3) — 守护进程
https://www.cndba.cn/dave/article/3667
DM7 达梦 数据库 数据守护(Data Watch) (4) — 监视器
https://www.cndba.cn/dave/article/3669
本篇学习下DM数据守护相关的配置文件,主要包含如下:
1)数据库配置文件 dm.ini
2)数据库控制文件 dm.ctl
3)MAL 配置文件 dmmal.ini
4)Redo 日志归档配置文件 dmarch.ini
5)守护进程配置文件 dmwatcher.ini
6)守护进程控制文件 dmwatcher.ctl
7)监视器配置文件 dmmonitor.ini
8)定时器配置文件 dmtimer.ini
9)MPP 控制文件 dmmpp.ctl
各配置文件的存放路径:
1) dm.ini 存放目录没有限制,一般直接放在数据库目录中。
2) dmmal.ini 、 dmarch.ini 、 dmtimer.ini 存放目录由 dm.ini 的CONFIG_PATH 配置项指定
3) dmwatcher.ini 存放目录没有限制,一般和 dm.ini 存放同一个目录。
4) dmmonitor.ini 存放目录没有限制,一般和 dm.ini 存放同一个目录。
5) dm.ctl 存放目录由 dm.ini 的 CTL_PATH 配置项指定。
6) dmmpp.ctl 、dmwatcher.ctl 存放目录由 dm.ini 的 SYSTEM_PATH 配置项指定。
1 dm.ini
dm.ini 是数据库配置文件。
配置项 | 配置含义 |
---|---|
INSTANCE_NAME | 数据库实例名(长度不超过 16 个字符),与 dmmal.ini 中的MAL_INST_NAME 对应。配置数据守护系统时,应该保持INSTANCE_NAME 是全局唯一的。 |
PORT_NUM | 数据库实例监听端口(范围 1024~65534),与 dmmal.ini 中 的 MAL_INST_PORT 对应。 |
DW_PORT | 服务器监听守护进程连接请求的端口(范围 1024~65534) |
DW_ERROR_TIME | 服务器认定守护进程未启动的时间,有效值范围(0~1800),单位为 S,默认 60s。如果服务器距离上次收到守护进程消息的时间间隔在设定的时间范围内,则认为守护进程处于活动状态,此时,不允许手工执行修改服务器模式、状态的 SQL 语句;如果超过设定时间仍没有收到守护进程消息,则认为守护进程未启动,此时,允许手工方式执行这类 SQL 语句。 |
ALTER_MODE_STATUS | 是否允许手工修改数据库的模式和状态,1 表示允许,0 表示不允许,此参数可动态修改,默认为 1,数据守护环境下建议配置为 0,避免用户手工干预。 |
ENABLE_OFFLINE_TS | 是否允许 offline 表空间,1 表示允许,0 表示不允许,2 表示禁止备库,其他放开。守护环境下建议配置为 2。 |
SESS_FREE_IN_SUSPEND | 远程归档失败会导致系统挂起;为了防止主备库之间网络故障、备库强制接管后,应用连接一直挂住不切换到新主库,设置该参数,表示归档失败挂起后隔一段时间自动断开所有连接。默认值60s,取值范围 0-1800s,0 表示不断开。 |
MAL_INI MAL | 系统配置开关,0 表示不启用 MAL 系统,1 表示启用 MAL系统。 |
ARCH_INI | Redo 日志归档配置开关,0 表示不启动 Redo 日志归档,1 表示启用 Redo 日志归档 |
TIMER_INI | 是否启用定时器,0:不启用;1:启用 |
MPP_INI | 是否启用 MPP 系统,0:不启用;1:启用。MPP 主备环境下,MPP 主库和全局守护类型的备库都需要配置为1。 |
DW_MAX_SVR_WAIT_TIME | 数据库等待守护进程启动的最大时间(范围 0~65534s)。如果设定时间内,守护进程没有启动,数据库实例强制退出。0 代表不检测,缺省为 0。 |
HA_INST_CHECK_FLAG | 检测多个实例同时启动标记。配置为 1 时,服务器每隔 1s 解析一次 dminst.sys 文件,检查是否有多个实例进程同时启动,如果没有则递增修改一次dminst.sys 文件中记录的序列值。配置为 0 则不做检查,默认为 1。配置为 1 时,守护进程会解析 dminst.sys 文件,根据文件中记录的序列值判断实例进程是否处于活动状态。 |
REDOS_BUF_SIZE | 备库日志堆积的内存限制,堆积的日志 buf 占用内存超过此限制,则延迟响应,等待重演释放部分内存后再响应。以兆 M 为单位,有效值范围(0~65536m),默认 1024。0 表示无内存限制。redos_buf_size 和 redos_buf_num 同时起作用,只要达到一个条件即延迟响应。 |
REDOS_BUF_NUM | 备库日志 BUF 允许堆积的数目限制,超过限制则延迟响应主库,等待堆积数减少后再响应。以个数为单位,有效值范围(0~9999)。默认 4096。redos_buf_size 和 redos_buf_num 同时起作用,只要达到一个条件即延迟响应。 |
REDOS_MAX_DELAY | 备库重演日志 BUF 的时间限制,超过此限制则认为重演异常,服务器自动宕机,防止日志堆积、主库不能及时响应用户请求。秒(s)为单位,取值范围(0~7200),默认 1800s。0 表示无重做时间限制。 |
REDOS_PRE_LOAD | 备库重演日志时预加载的 RLOG_BUF 数,备库在重演 Redo 日志的同时,根据参数设置提前解析后续若干个 RLOG_BUF 的 Redo日志,并预加载数据页到缓存中,以加快备库的 Redo 日志重演速度,避免高压力情况下备库出现日志堆积。取值范围(0~4096),默认值为 32,允许动态修改,0 表示取消预加载功能。 |
RLOG_SEND_APPLY_MON | 此参数对主备库均有效。对于主库,用于指定统计最近 N 次主库到每个备库的归档发送时间。对于备库,用于指定统计最近 N 次备库重演日志的时间。N 为此参数设置的值,默认主备库均统计最近 64 次的时间信息。取值范围(16~1024),静态参数,默认值 64。 |
2 dmmal.ini
dmmal.ini 是 MAL 配置文件。需要用到 MAL 环境的实例,所有站点 dmmal.ini 需要保证严格一致。
配置项 | 配置含义 |
---|---|
MAL_CHECK_INTERVAL | MAL 链路检测时间间隔,取值范围(0s-1800s),默认 30s,配置为 0 表示不进行 MAL 链路检测,数据守护环境,不建议配置为 0,防止网络故障导致服务长时间阻塞。 |
MAL_CONN_FAIL_INTERVAL | 判定 MAL 链路断开的时间,取值范围(2s-1800s),默认 10s |
MAL_LOGIN_TIMEOUT | MPP/DBLINK 等实例间登录时的超时检测间隔(3-1800),以秒为单位,默认 15s |
MAL_BUF_SIZE | 单个 MAL 缓存大小限制,以兆为单位。当此 MAL 的缓存邮件超过此大小,则会将邮件存储到文件中。有效值范围(0~500000),默认为 100,如果配置为 0,则表示不限制单个 MAL 缓存大小。 |
MAL_SYS_BUF_SIZE | MAL 系统总内存大小限制,单位:M。有效值范围(0~500000),默认为 0,表示 MAL 系统无总内存限制。 |
MAL_VPOOL_SIZE | MAL 系统使用的内存初始化大小,以兆为单位。有效值范围( 1~500000 ), 默 认 为 128 ,此值一般要设置的比MAL_BUF_SIZE 大一些。 |
MAL_COMPRESS_LEVEL | MAL 消息压缩等级,取值范围(0-10)。默认为 0,不进行压缩;1–9 表示采用 lz 算法,从 1 到 9 表示压缩速度依次递减,压缩率依次递增;10 表示采用 quicklz 算法,压缩速度高于 lz 算法,压缩率相对低。 |
MAL_TEMP_PATH | 指定临时文件的目录。当邮件使用的内存超过mal_buf_size或者mal_sys_buf_size时,将新产生的邮件保存到临时文件中。如果缺省,则新产生的邮件保存到temp.dbf文件中。 |
[MAL_NAME] | MAL名称,同一个配置文件中MAL名称需保持唯一性。 |
MAL_INST_NAME | 数据库实例名,与 dm.ini 的 INSTANCE_NAME 配置项保持一致,MAL 系统中数据库实例名要保持唯一。 |
MAL_HOST | MAL IP 地址,使用 MAL_HOST + MAL_PORT 创建 MAL 链路 |
MAL_PORT | MAL 监听端口 |
MAL_INST_HOST | MAL_INST_NAME 实例对外服务 IP 地址 |
MAL_INST_PORT | MAL_INST_NAME 实例对外服务端口,和 dm.ini 中 的PORT_NUM 保持一致 |
MAL_DW_PORT | MAL_INST_NAME 实例守护进程监听端口,其他守护进程或监视器使用 MAL_HOST + MAL_DW_PORT 创建 TCP 连接. |
MAL_LINK_MAGIC | MAL 链路网段标识,有效值范围(0-65535),默认 0。设置此参数时,同一网段内的节点都设置相同,不同网段内的节点设置的值必须不一样. |
3 dmarch.ini
dmarch.ini 是 Redo 日志归档配置文件。
配置项 | 配置含义 |
---|---|
ARCH_WAIT_APPLY | 备库收到 Redo 日志后,是否需要重演完成后,再响应主库。0 表示收到马上响应,1 表示重演完成后响应。配置即时归档时,默认值为 1;其他归档忽略这个配置项,强制设置为 0。 |
[ARCH_NAME] | Redo 日志归档名 |
ARCH_TYPE | Redo 日志归档类型, LOCAL/ REALTIME/ TIMELY/ ASYNC。分别表示本地归档/实时归档/即时归档/异步归档。 |
ARCH_DEST | 归档目标,本地归档为归档文件存放路径,其他归档方式设置为目标数据库实例名 |
ARCH_FILE_SIZE | 单个 Redo 日志归档文件大小,取值范围(64M~2048M),仅对本地归档有效,缺省为 1024MB,即 1G。 |
ARCH_SPACE_LIMIT | Redo 日志归档空间限制,当所有本地归档文件达到限制值时,系统自动删除最早生成的归档日志文件。0 表示无空间限制,取值范围(1024M~4294967294M),仅对本地归档有效,缺省为0。 |
ARCH_TIMER_NAME | 定时器名称,仅对异步归档有效。 |
4 dmwatcher.ini
dmwatcher.ini 是守护进程配置文件。
配置项 | 配置含义 |
---|---|
[GROUP_NAME] | 守护进程组名(长度不能超过 16) |
DW_TYPE | 守护类型,默认为 LOCAL;LOCAL:本地守护;GLOBAL:全局守护 |
DW_MODE | 切换模式,默认为 MANUAL;MANUAL:故障手动切换模式;AUTO:故障自动切换模式 |
DW_ERROR_TIME | 守护进程故障认定时间,取值范围为(3s~32767s),缺省 15 秒没有收到远程守护进程消息,即认定远程守护进程故障,对本地守护无效。 另外此参数也是监视器认定守护进程的故障时间,超过设置的时间间隔仍没有收到守护进程消息,监视器认为守护进程出现故障。 |
INST_ERROR_TIME | 数据库故障认定时间,取值范围为(3s~32767s),缺省 15 秒没有收到数据库发送的状态信息,即认定其监控的数据库出现故障。 |
INST_OGUID | 数据守护唯一标识码,同一守护进程组中的所有数据库、守护进程和监视器,都必须配置相同的 OGUID 值,取值范围为0-2147483647 |
INST_INI | 监控数据库 dm.ini 路径。dmwatcher 从 dm.ini 配置文件获取DW_PORT 信息,并进一步从 dmmal.ini 中获取MAL_HOST/MAL_DW_PORT 等信息。 |
INST_AUTO_RESTART | 是否自动重启数据库实例,0:不自动重启 1:自动重启。缺省为 0。 |
INST_STARTUP_CMD | 数据库启动命令。 1.linux 命令行方式启动(不能出现带有空格的路径): INST_STARTUP_CMD = /opt/dm/bin/dmserver 2.linux 服务方式启动: INST_STARTUP_CMD = service dmserverd restart 3.. Windows 命令行启动: INST_STARTUP_CMD = c:/dm/bin/dmserver 4.Windows 服务方式启动: INST_STARTUP_CMD = net start 注册服务名(注册服务名,可通过 DM 服务查看器获取) |
INST_RECOVER_TIME | 备库故障恢复检测时间间隔,取值范围 0~86400s,缺省每 60 秒检查一下备库状态,满足故障恢复条件时,启动历史数据同步流程。 数据守护系统启动完成后、Switchover 主备切换后、Takeover备库接管后以及强制 Open 主库后,主库守护进程INST_RECOVER_TIME 内存值会强制设置成 0,确保尽快启动数据同步。 另外,还可以通过监视器命令 set recover time 修改INST_RECOVER_TIME 内存值。 |
INST_SERVICE_IP_CHECK | 守护进程是否监控实例对外服务,取值范围:0、1,默认 0。 配置为 1 时,守护进程会自动检测 Open 主库的公共网络是否故障,故障认定时间为 INST_ERROR_TIME 配置的时间值,如果认定公共网络故障,则会通知主库实例强制退出。 注意:配置为 1 时,只会对已经 Open 的主库实例进行网络故障检测,如果主库实例没有 Open 或者主库实例故障或者是备库实例,此参数无效。 |
RLOG_SEND_THRESHOLD | 用于指定主库发送日志到备库的时间阀值。如果主库守护进程检测到某个备库最近 N 次的平均日志发送时间大于此参数设置的值,则主库守护进程认为此备库出现异常,会启动异常处理,将此备库归档失效,N 值取主库 dm.ini 中配置的RLOG_SEND_APPLY_MON 值和主库实际发送归档次数中的较小值(可通过查询 V$ARCH_SEND_INFO 获取实际发送归档次数)。 取值范围(0~86400),单位为秒,配置为 0 时此监控功能关闭,默认值为 0。此参数对主库守护进程有效,建议主备库的守护进程都进行配置,以便备库切换为主库后使用。 |
RLOG_APPLY_THRESHOLD | 用于指定备库重演日志的时间阀值。如果某个备库最近 N 次的平均日志重演时间大于此参数设置的值,则主库守护进程不会将其归档恢复为有效状态,N 值取备库 dm.ini 中配置的 RLOG_SEND_APPLY_MON 值和备库实际重演次数中的较RLOG_APPLY_THRESHOLD 小值(可通过查询 V$RAPPLY_INFO 获取实际重演次数)。取值范围(0~86400),单位为秒,配置为 0 时此监控功能关闭,默认值为 0。此参数对主库守护进程有效,建议主备库的守护进程都进行配置,以便备库切换为主库后使用。 |
5 dmwatcher.ctl
除了配置为 Local 守护类型的实例外,其他实例的库目录下都需要有守护进程控制文件 dmwatcher.ctl,且初始配置时同一个守护进程组的控制文件必须相同。
该控制文件由 dmctlcvt 工具根据 dmwatcher.ini 转化生成。控制文件中有一个随机的 tguid 值,每次调用 dmctlcvt 生成的 tguid 都不同,因此初始搭建环境时,同一个组只能通过 dmctlcvt 工具生成一次,并分别拷贝到各数据库目录下,不能采用分别生成的方式。
dmwatcher.ctl 按照 dmwatcher.ini 中配置的组名分别生成到各自的目录下,同一个守护进程组需要使用同一份控制文件。同一个组使用了不同的 dmwatcher.ctl 控制文件将造成组分裂。
dmctlcvt 工具用法格式如下:
[dmdba@dm1 ~]$ dmctlcvt help
DMCTLCVT V7.6.0.95-Build(2018.09.13-97108)ENT
Format: ./dmctlcvt KEYWORD=value
Note: ctl file name must be dm.ctl or dmmpp.ctl or dmwatcher.ctl
Keyword Explanation
--------------------------------------------------------------------------------
TYPE 1 convert ctl file(dm.ctl or dmmpp.ctl) to txt file
2 convert txt file to ctl file(dm.ctl or dmmpp.ctl)
3 convert txt file to ctl file(dmwatcher.ctl), the dest_file_path not include file name
4 convert ctl file(dmwatcher.ctl) to txt file
SRC Source file
DEST Destination file
DCR_INI the path of dmdcr.ini
HELP Show this help info
Example:
./dmctlcvt TYPE=1 SRC=/opt/dmdbms/data/dameng/dm.ctl DEST=/opt/dmdbms/data/dameng/dmctl.txt
./dmctlcvt TYPE=2 SRC=/opt/dmdbms/data/dameng/dmctl.txt DEST=/opt/dmdbms/data/dameng/dm.ctl
./dmctlcvt TYPE=3 SRC=/opt/dmdbms/data/dameng/dmwatcher.txt DEST=/opt/dmdbms/data/dameng
./dmctlcvt TYPE=4 SRC=/opt/dmdbms/data/dameng/dmwatcher.ctl DEST=/opt/dmdbms/data/dameng/dmwatcher_ctl.txt
[dmdba@dm1 ~]$
生成 ctl 文件
需要指定 dmwatcher.ini 路径和文件输出路径,生成的 dmwatcher.ctl 按组名分开存放,同一组的所有实例使用同一个 ctl 文件。
参考命令如下:./dmctlcvt TYPE=3 SRC=/dm7/data/DAMENG/dmwatcher.ini DEST=/dm7/data
解析 ctl 文件
可将 dmwatcher.ctl 内容读出到 txt 文件中,方便查看内容。
参考命令如下:./dmctlcvt TYPE=4 SRC=/dm7/data/DAMENG/dmwatcher.ctl DEST=/dm7/data/DAMENG/dmwatcher.txt
6 dmmonitor.ini
dmmonitor.ini 是监视器配置文件。
配置项 | 配置含义 |
---|---|
MON_DW_CONFIRM | 是否配置为确认模式,缺省为 0。0:监控模式 1:确认模式 |
MON_LOG_PATH | 日志文件路径,日志文件命名方式为 “dmmonitor_年月日时分秒.log”,例如“dmmonitor_20150418230523.log”。如果没有配置该参数,则将 dmmonitor.ini 配置文件所在的路径作为日志文件路径。 |
MON_LOG_INTERVAL | 自动记录系统状态信息到日志文件的时间间隔,取值(0,1 或者(5~3600)),单位秒,0 表示不记录任何日志,1 表示只记录监视器正常接收到的消息,5~3600 表示除了记录监视器正常接收消息外,每隔指定的间隔另外记录系统信息到日志文件中,默认值为 1。 |
MON_LOG_FILE_SIZE | 单个日志文件大小,范围 16~2048,单位为 M,默认值为 64,达到最大值后,会自动生成并切换到新的日志文件中,如果达到设定的总空间限制,会自动删除创建时间最早的日志文件。 |
MON_LOG_SPACE_LIMIT | 日志总空间大小,取值 0 或者 256~4096,单位为 M,默认值为0,表示没有空间限制。 |
[GROUP_NAME] | 守护进程组名,与 dmwatcher.ini 中的守护进程组名保持一致。 |
MON_INST_OGUID | 数据守护唯一标识码,与 dmwatcher.ini 中的 INST_OGUID 保持一致。 |
MON_DW_IP | 守护进程 IP 地址和监听端口。配置格式为:“守护进程 IP 地址:守护进程监听端口”。其中 IP 地址和 dmmal.ini 中的 MAL_HOST 保持一致,端口和dmmal.ini 中的 MAL_DW_PORT 保持一致。 |
7 dmtimer.ini
dmtimer.ini 用于配置定时器,可记录异步备库的定时器信息。dmtimer.ini 的配置项见下表,其中项目名称就是定时器名称。表中参数与创建定时器的过程 SP_ADD_TIMER()参数用法相同。
字段 | 字段意义 |
---|---|
TYPE | 定时器调度类型: 1:执行一次 2:按日执行 3:按周执行 4:按月执行的第几天 5:按月执行的第一周 6:按月执行的第二周 7:按月执行的第三周 8:按月执行的第四周 9:按月执行的最后一周 |
FREQ_MONTH_WEEK_INTERVAL | 间隔月或周数 |
FREQ_SUB_INTERVAL | 间隔天数 |
FREQ_MINUTE_INTERVAL | 间隔分钟数 |
START_TIME | 开始时间 |
END_TIME | 结束时间 |
DURING_START_DATE | 开始时间点 |
DURING_END_DATE | 结束时间点 |
NO_END_DATE_FLAG | 是否结束标记 |
DESCRIBE | 定时器描述 |
IS_VALID | 定时器有效标记,默认为0, 0:表示关闭定时器, 1:表示启用定时器 |
例 1,配置名称为“TIMER_01”的定时器,TYPE = 1,开始时间为 2016-02-22 17:30:00,只执行一次。
[TIMER_01]
TYPE = 1
FREQ_MONTH_WEEK_INTERVAL = 0
FREQ_SUB_INTERVAL = 0
FREQ_MINUTE_INTERVAL = 0
START_TIME = 00:00:00
END_TIME = 00:00:00
DURING_START_DATE = 2016-02-22 17:30:00
DURING_END_DATE = 2016-02-22 17:30:30
NO_END_DATE_FLAG = 0
DESCRIBE = RT TIMER
IS_VALID = 1
例 2:配置名称为“TIMER_01”的定时器,TYPE = 2,每天 01:00:00 触发。
[TIMER_01]
TYPE = 2
FREQ_MONTH_WEEK_INTERVAL = 1
FREQ_SUB_INTERVAL = 0
FREQ_MINUTE_INTERVAL = 0
START_TIME = 01:00:00
END_TIME = 01:00:10
DURING_START_DATE = 2016-02-11 17:36:09
DURING_END_DATE = 9999-12-31 23:59:59
NO_END_DATE_FLAG = 1
DESCRIBE = RT TIMER
IS_VALID = 1
8 端口配置关系说明
对上述 ini 文件中的各个端口之间的对应关系说明如下。
8.1 dm.ini
dm.ini 中端口相关的有两个配置项:PORT_NUM、DW_PORT。
PORT_NUM
是数据库实例的监听端口,监听用户的连接请求,dmmal.ini中的[MAL_INST_NAME: MAL_INST_PORT]要与 dm.ini 中的[INSTANCE_NAME: PORT_NUM]保持一致。
DW_PORT
是守护系统中,数据库监听守护进程连接请求的端口,由守护进程主动建立到数据库的TCP 连接,这个端口只用于数据库和守护进程之间的消息交互使用。
例如,以主库 GRP1_RT_A,备库 GRP1_RT_B 为例,来说明如何使用 PORT_NUM、DW_PORT。
主库 GRP1_RT_A 的 dm.ini:
#这里只列举端口相关的参数
INSTANCE_NAME = GRP1_RT_A
PORT_NUM = 5236 #数据库实例监听端口
DW_PORT = 5237 #守护进程监听端口
备库 GRP1_RT_B 的 dm.ini:
#这里只列举端口相关的参数
INSTANCE_NAME = GRP1_RT_B
PORT_NUM = 6236 #数据库实例监听端口
DW_PORT = 6237 #守护进程监听端口
8.2 dmmal.ini
dmmal.ini 中每个实例都有一个单独的 mal 配置项,每个实例中有三个端口相关的配置:MAL_PORT、MAL_INST_PORT、MAL_DW_PORT。
MAL_PORT
MAL 监听端口,用于创建 MAL 链路,同一个实例的 MAL 配置项中,MAL_PORT 不能和实例 dm.ini 中的两个端口相同,避免端口绑定冲突。
MAL_INST_PORT
MAL 配置项中,MAL_INST_NAME 实例的监听端口,和实例 dm.ini 的 PORT_NUM 值相同。
MAL_DW_PORT
守护进程监听端口,其他守护进程或监视器使用 MAL_HOST + MAL_DW_PORT 创建 TCP连接。监视器配置文件 dmmonitor.ini 中,MON_DW_IP 就是一组 MAL_HOST: MAL_DW_PORT。
例如,这里以主库 GRP1_RT_A,备库 GRP1_RT_B 为例进行说明。
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = GRP1_RT_A
MAL_HOST = 192.168.0.141
MAL_PORT = 5238
MAL_INST_HOST = 192.168.1.131
MAL_INST_PORT = 5236 #数据库实例监听端口,对应 dm.ini 中的 PORT_NUM
MAL_DW_PORT = 5239 #守护进程监听端口
[MAL_INST2]
MAL_INST_NAME = GRP1_RT_B
MAL_HOST = 192.168.0.142
MAL_PORT = 6238
MAL_INST_HOST = 192.168.1.132
MAL_INST_PORT = 6236 #数据库实例监听端口,对应 dm.ini 中的 PORT_NUM
MAL_DW_PORT = 6239 #守护进程监听端口
8.3 dmwatcher.ini
守护进程启动时,需要获取远程实例对应的配置项信息,创建到远程守护进程的 TCP连接,这些信息通过 INST_INI 配置项来获取。
守护进程从 INST_INI 路径找到并读取 dm.ini、dmmal.ini、dmarch.ini,综合各个配置项得到远程守护进程的 IP、端口等信息并建立连接。
8.4 dmmonitor.ini
监视器配置项中以守护进程组为单位,通过 MON_DW_IP 配置到每组的所有守护进程的IP 和端口信息。
配置格式为:“守护进程 IP 地址:守护进程 TCP 端口”。
其中守护进程 IP 地址和 dmmal.ini 中的 MAL_HOST 保持一致,守护进程 TCP 端口和 dmmal.ini 中的 MAL_DW_PORT 保持一致。
dmmal.ini 中配置有多少个 IP 和 PORT,dmmonitor.ini 就需要配置多少个对应的 “IP:PORT”信息,否则会无法接收到消息。
例如,这里以监控主库 GRP1_RT_A,备库 GRP1_RT_B 说明:
#这里只对 IP/端口信息举例说明
[GRP1]
MON_INST_OGUID = 82379
#IP 和 PORT 信息和 dmmal.ini 中的 MAL_HOST 和 MAL_DW_PORT 配置项一致
MON_DW_IP = 192.168.0.141:5239
MON_DW_IP = 192.168.0.142:6239
9 服务名配置
配置 DM 数据守护,一般要求配置连接服务名,以实现故障自动重连。连接服务名可以在 DM 提供的 JDBC、DPI 等接口中使用,连接数据库时指定连接服务名,接口会随机选择一个 IP 进行连接,如果连接不成功或者服务器状态不正确,则顺序获取下一个 IP 进行连接,直至连接成功或者遍历了所有 IP。
可以通过编辑 dm_svc.conf 文件,配置连接服务名。dm_svc.conf 配置文件在 DM 安装时生成,Windows 平台下位于%SystemRoot%/system32 目录,Linux 平台下位于/etc 目录。
连接服务名格式:
SERVERNAME=(IP[:PORT],IP[:PORT],……)
dm_svc.conf 文件,常用配置项目说明:
SERVERNAME: 连接服务名,用户通过连接服务名访问数据库。
IP: 数据库所在的 IP 地址,如果是 IPv6 地址,为了区分端口,需要用[]封闭 IP 地址。
PORT: 数据库使用的 TCP 连接端口,可选配置,不配置则使用连接上指定的端口。
LOGIN_MODE: 服务名方式登录,始终会优先登录主库;LOGIN_MODE 表示是否仅登录主库或者备库,可以配置为 0、1 或 2。0 表示优先登录主库,没有可用主库情况下登录备库;1 表示不登录 Standby 模式的库,如果系统中只有 Standby 模式的库,登录失败并报错;2 表示仅登录 Standby 模式的库。默认值为 0。
SWITCH_TIME: 检测到数据库实例故障时,接口在服务器之间切换的次数;超过设置次数没有连接到有效数据库时,断开连接并报错。有效值范围 1~9223372036854775807,默认值为 3。
SWITCH_INTERVAL: 表示在服务器之间切换的时间间隔,单位为毫秒,有效值范围1~9223372036854775807,默认值为 200。
例如,这里我们配置一个名为 dw_svc 的连接服务名,使用 dw_svc 连接数据守护中的数据库,即可实现故障自动重连。
dw_svc=(192.168.1.131:5236,192.168.1.132:5236)
LOGIN_MODE =(1)
SWITCH_TIME=(3)
SWITCH_INTERVAL=(1000)