配置文件说明

与 DM 数据守护相关的配置文件包括:

  • 数据库配置文件 dm.ini
  • 数据库控制文件 dm.ctl
  • MAL 配置文件 dmmal.ini
  • Redo 日志归档配置文件 dmarch.ini
  • 守护进程配置文件 dmwatcher.ini
  • 监视器配置文件 dmmonitor.ini
  • 定时器配置文件 dmtimer.ini
  • MPP 控制文件 dmmpp.ctl 等等

其中,dmmpp.ctl 在[2.5.2 dmmpp.ctl](2.5.2 dmmpp.ctl)维护中介绍;dm.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 存放目录由 dm.ini 的 SYSTEM_PATH 配置项指定。

下面分别介绍各配置文件中相关配置项的含义。

5.1 dm.ini

dm.ini 是 DM 数据库配置文件,下表介绍了 dm.ini 中与数据守护相关的配置参数。

表5.1 dm.ini数据守护相关配置项
配置项 配置含义
INSTANCE_NAME 数据库实例名(长度不超过 16 个字符),与 dmmal.ini 中的 MAL_INST_NAME 对应。配置数据守护系统时,应该保持 INSTANCE_NAME 是全局唯一的。
PORT_NUM 服务器监听通讯端口号,服务器配置此参数,有效值范围(1024~65534),发起连接端的端口在 1024-65535 之间随机分配。此参数配置应与 dmmal.ini 中的 MAL_INST_PORT 对应。
DW_PORT 服务器监听守护进程连接请求的端口,服务器配置此参数,有效值范围(1024~65534),发起连接端的端口在 1024-65535 之间随机分配。 数据守护 V3.0 版本中,此参数仅作为单节点库的兼容参数保留。 对于新配置的数据守护系统,如果是单节点库,建议改用 dmmal.ini 中的 MAL_INST_DW_PORT 参数进行配置,如果是 DMDSC 集群,此参数不再有用,必须使用 dmmal.ini 中的 MAL_INST_DW_PORT 参数进行配置。
DW_INACTIVE_INTERVAL 服务器认定守护进程未启动的时间,有效值范围(0~1800),单位为 S,默认 60s。
如果服务器距离上次收到守护进程消息的时间间隔在设定的时间范围内,则认为守护进程处于活动状态,此时,不允许手工执行修改服务器模式、状态的 SQL 语句; 如果超过设定时间仍没有收到守护进程消息,则认为守护进程未启动,此时如果 ALTER_MODE_STATUS 参数设为 1,则允许手工方式执行这类 SQL 语句。
ALTER_MODE_STATUS 是否允许手工修改数据库的模式和状态以及 OGUID,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:启用 0
MPP 主备环境下,MPP 主库和全局守护类型的备库都需要配置为 1。
DW_MAX_SVR_WAIT_TIME 数据库等待守护进程启动的最大时间(范围 0~65534s)。如果设定时间内,守护进程没有启动,数据库实例强制退出。0 代表不检测,缺省为 0
REDOS_BUF_SIZE 待重演日志堆积的内存限制,堆积的日志缓冲区占用内存超过此限制,则新的日志将会被延迟加入重演队列,等待重演释放部分内存后再加入。以兆为单位,有效值范围(0~65536M),默认 1024。0 表示无内存限制。
REDOS_BUF_SIZE 和 REDOS_BUF_NUM 同时起作用,只要达到一个条件即会触发延迟处理。
此参数可用在备库重演、故障重启重做 Redo 日志、DSC 故障处理以及还原后的恢复场景中,如果是备库重演,由于新的日志被延迟加入重演队列,因此会延迟响应回主库。
REDOS_BUF_NUM 待重演日志缓冲区允许堆积的数目限制,超过限制则新的日志将会被延迟加入重演队列,等待堆积数减少后再加入。以个数为单位,有效值范围(0~9999),默认 4096。0 表示无限制。
REDOS_BUF_SIZE 和 REDOS_BUF_NUM 同时起作用,只要达到一个条件即会触发延迟处理。
此参数可用在备库重演、故障重启重做 Redo 日志、DSC 故障处理以及还原后的恢复场景中,如果是备库重演,由于新的日志被延迟加入重演队列,因此会延迟响应回主库。
REDOS_MAX_DELAY 备库重演日志缓冲区的时间限制,超过此限制则认为重演异常,服务器自动宕机,防止日志堆积、主库不能及时响应用户请求。以秒(s)为单位,取值范围(0~7200),默认 1800s。0 表示无重做时间限制。
此参数只在备库重演场景中起作用。
REDOS_PRE_LOAD 重演日志时是否开启预加载功能,在重演 Redo 日志的同时,根据参数设置提前解析 RLOG_PKG 中的 Redo 日志,并预加载数据页到缓存中。
取值(0、1),0 表示不开启,1 表示开启,默认值为 0,避免在某些场景下干扰到日志重演线程,反而影响备库重演性能。 此参数可用在备库重演、故障重启重做 Redo 日志、DSC 故障处理以及还原后的恢复场景中。
RLOG_SEND_APPLY_MON 此参数对主备库均有效。
对于主库,用于指定统计最近 N 次主库到每个备库的归档发送时间。对于备库,用于指定统计最近 N 次备库重演日志的时间。 N 为此参数设置的值,默认主备库均统计最近 64 次的时间信息。 取值范围(16~1024),静态参数,默认值 64。
MESSAGE_CHECK 是否对通信消息启用消息体校验(只有当消息的发送端和接收端都配置为 1 才启用通信体校验)。0:不启用;1:启用。默认值 1。
REDOS_PARALLEL_NUM 指定日志并行重演的线程数,取值范围(1~64),1 表示不开启日志并行重演,默认值为 1。此参数可用在备库重演、故障重启重做 Redo 日志、DSC 故障处理以及还原后的恢复场景中。
REDOS_ENABLE_SELECT 是否允许备库执行查询操作,取值(0、1),默认值为 1。
0:仅允许备库查询 V$ 动态视图,其他所有查询操作均不支持。1:允许备库执行所有查询操作。设置为 0 时,会在一定程度上提升备库的重演性能。
注意

数据守护环境下不允许修改TS_MAX_ID和TS_FIL_MAX_ID参数。

5.2 dmmal.ini

dmmal.ini 是 MAL 配置文件。需要用到 MAL 环境的实例,所有站点 dmmal.ini 需要保证严格一致。

表5.2 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 表示采用 snappy 算法,压缩速度高于 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 链路。
对于 ipv4,直接使用 ip 地址即可,例如:MAL_HOST = 192.168.100.109
对于 ipv6,若当前环境存在多块网卡,需要用 % 号指定具体有效的网卡序号;若只有一块网卡或者已配置默认网卡,则可以不指序号。例如:MAL_HOST = fe80::6aa7:3f02:59b3:bcb4%3
其中,%3 为实际网卡序号
MAL_PORT MAL 监听端口,用于数据守护、DSC、MPP 等环境中各节点实例之间 MAL 链路配置,监听端端口配置此参数,范围 1024~65534,发起连接端的端口在 1024~65535 之间随机分配
MAL_INST_HOST 实例对外服务的 IP 地址。若 dm.ini 中配置了 LISTEN_IP,则 MAL_INST_HOST 必须与 LISTEN_IP 保持一致。
对于 ipv4,直接使用 ip 地址即可,例如:MAL_HOST = 192.168.100.109
对于 ipv6,若当前环境存在多块网卡,需要用 % 号指定具体有效的网卡序号;若只有一块网卡或者已配置默认网卡,则可以不指序号。例如:MAL_HOST = fe80::6aa7:3f02:59b3:bcb4%3
其中,%3 为实际网卡序号
MAL_INST_PORT MAL_INST_NAME 实例服务器监听通讯端口号,服务器配置此参数,有效值范围(1024~65534),发起连接端的端口在 1024-65535 之间随机分配 此参数的配置应与 dm.ini 中的 PORT_NUM 保持一致
MAL_DW_PORT MAL_INST_NAME 实例守护进程的监听端口,其他守护进程或监视器使用 MAL_HOST + MAL_DW_PORT 创建与该实例守护进程的 TCP 连接,监听端配置此参数,有效值范围(1024~65534),发起连接端的端口在 1024-65535 之间随机分配
MAL_INST_DW_PORT 节点实例监听守护进程的端口,同一个库上的各实例的守护进程使用 MAL_HOST + MAL_INST_DW_PORT 和各实例创建 TCP 连接,实例服务器配置此参数,有效值范围(1024~65534),发起连接端的端口在 1024-65535 之间随机分配
MAL_LINK_MAGIC MAL 链路网段标识,有效值范围(0-65535),默认 0。设置此参数时,同一网段内的节点都设置相同,不同网段内的节点设置的值必须不一样
MAL_MESSAGE_CHECK 是否对 MAL 通信消息启用消息体校验(只有当消息的发送端和接收端都配置为 1 才启用通信体校验)。0:不启用;1:启用。默认为 1
注意

所有站点的MAL配置参数MAL_COMPRESS_LEVEL必须要一致,否则节点间将不能建立链路,导致系统无法运行(在服务器log日志中可看到打印提示信息)。另外配置不为0时,需要保证每个节点都能加载到对应的动态压缩库文件(snappy或zlib),如果未加载成功,则默认变成0,也可能会导致链路建立不成功。

5.3 dmarch.ini

dmarch.ini 是 Redo 日志归档配置文件。

表5.3 dmarch.ini配置项
配置项 配置含义
ARCH_WAIT_APPLY 备库收到 Redo 日志后,是否需要重演完成后再响应主库。0 表示收到马上响应(高性能模式),1 表示重演完成后响应(事务一致模式)。配置为即时归档的读写分离集群时,默认值为 1;配置为实时归档的读写分离集群时,默认值为 0
ARCH_RESERVE_TIME 归档日志保留时间,单位分钟,取值范围(0~4294967294)。只对远程归档和本地归档有效。服务器每隔 5 分钟检查是否存在超过保留时间的归档并删除。默认为 0,表示不删除归档
ARCH_LOCAL_SHARE DMDSC 集群本地归档是否共享给远程节点作为远程归档。0 表示不共享,1 表示共享,默认值为 0。此参数值在 DMDSC 集群各个节点的配置文件中需保持一致。 配置为 1 时,本地归档路径和远程归档路径均需配置在 ASM 或共享磁盘上,并且 dmarch.ini 中 ARCH_INCOMING_PATH 为对应节点的本地归档路径; 配置为 0 时,remote 归档路径与对应节点 local 归档路径不能指向共享存储的同一个目录
[ARCH_NAME] Redo 日志归档名,由于“STANDBY_ARCHIVE”用于表示备库生成的归档日志,因此不允许将归档名称配置为“STANDBY_ARCHIVE”
ARCH_TYPE Redo 日志归档类型,LOCAL/REMOTE/REALTIME/TIMELY/ASYNC、分别表示本地归档/远程归档/实时归档/即时归档/异步归档
ARCH_DEST 归档目标,本地归档为归档文件存放路径,其他归档方式设置为目标数据库实例名,如果目标库为 DMDSC 库,则需要写上 DMDSC 每个实例名,以’/’分隔(如 DSC01/DSC02)。 注:REMOTE 远程归档是 DMDSC 库内部实例相互配置,归档目标都是单个实例
ARCH_FILE_SIZE 单个 Redo 日志归档文件大小,取值范围(64M~2048M),对本地归档和远程归档有效,缺省为 1024MB,即 1G
ARCH_SPACE_LIMIT Redo 日志归档空间限制,当同一节点的本地归档文件或远程归档文件达到限制值时,系统自动删除最早生成的归档日志文件。0 表示无空间限制,取值范围(1024M~2147483647M),对本地归档和远程归档有效,缺省为 0
ARCH_FLUSH_BUF_SIZE 归档合并刷盘缓存大小,单位 MB,取值范围(0-128),缺省为 0,表示不使用归档合并刷盘
ARCH_TIMER_NAME 定时器名称,仅对异步归档有效
ARCH_INCOMING_PATH 对应远程归档目标 ARCH_DEST 在本地存放的归档路径
ARCH_SEND_DELAY 指定源库到异步备库的归档延时发送时间,单位为分钟,取值范围(0~1440),缺省为 0,表示不启用归档延时发送功能。
注:仅在异步归档类型中支持此配置项,其他归档类型不支持。如果源库是 DSC 集群,建议用户配置时保证各节点上配置的值是一致的,并保证各节点所在机器的时钟一致,避免控制节点发生切换后计算出的归档延迟发送时间不一致

5.4 dmwatcher.ini

dmwatcher.ini 是守护进程配置文件。

表5.4 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 等信息
DCR_INI dmdcr.ini 文件路径。只有 DMDSC 集群的数据守护环境下才需要配置此参数。守护进程启动时从 DCR 磁盘上获取 DMCSS 和 DMASMSVR 的 IP/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 INST_STARTUP_CMD = /opt/dm/bin/dmserver 备库故障恢复检测时间间隔,取值范围 0~86400s,缺省每 60 秒检查一下备库状态,满足故障恢复条件时,启动历史数据同步流程。数据守护系统启动完成后、Switchover 主备切换后、Takeover 备库接管后以及强制 Open 主库后,主库守护进程 INST_RECOVER_TIME 内存值会强制设置成 0,确保尽快启动数据同步。另外,还可以通过监视器命令 set recover time 修改 INST_RECOVER_TIME 内存值
INST_SERVICE_IP_CHECK linux 服务方式启动:守护进程是否监控实例对外服务,取值范围:0、1,默认为 0。 配置为 1 时,守护进程会自动检测 Open 主库的公共网络是否故障,故障认定时间为 INST_ERROR_TIME 配置的时间值,如果认定公共网络故障,则会通知主库实例强制退出。
注意:配置为 1 时,只会对已经 Open 的主库实例进行网络故障检测,如果主库实例没有 Open 或者主库实例故障或者是备库实例,此参数无效
RLOG_SEND_THRESHOLD INST_STARTUP_CMD = service dmserverd restart 用于指定主库发送日志到备库的时间阈值。
如果主库守护进程检测到某个备库最近 N 次的平均日志发送时间大于此参数设置的值,则主库守护进程认为此备库出现异常,会启动异常处理,将此备库归档失效,N 值取主库 dm.ini 中配置的 RLOG_SEND_APPLY_MON 值和主库实际发送归档次数中的较小值(可通过查询 V$ARCH_SEND_INFO 获取实际发送归档次数)。 取值范围(0~86400),单位为秒,配置为 0 时此监控功能关闭,默认值为 0。
此参数对主库守护进程有效,建议主备库的守护进程都进行配置,以便备库切换为主库后使用
RLOG_APPLY_THRESHOLD Windows 命令行启动:用于指定备库重演日志的时间阈值。
如果某个备库最近 N 次的平均日志重演时间大于此参数设置的值,则主库守护进程不会将其归档恢复为有效状态,N 值取备库 dm.ini 中配置的 RLOG_SEND_APPLY_MON 值和备库实际重演次数中的较小值(可通过查询 V$RAPPLY_INFO 获取实际重演次数)。 取值范围(0~86400),单位为秒,配置为 0 时此监控功能关闭,默认值为 0。
此参数对主库守护进程有效,建议主备库的守护进程都进行配置,以便备库切换为主库后使用

5.5 dmmonitor.ini

dmmonitor.ini 是监视器配置文件。

表5.5 dmmonitor.ini配置项
配置项 配置含义
MON_DW_CONFIRM 是否配置为确认模式,缺省为 0。0:监控模式 1:确认模式
MON_LOG_PATH 日志文件路径,日志文件命名方式为“dmmonitor_年月日时分秒.log”,例如“dmmonitor_20150418230523.log”。 其他请参考表后附加说明
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,表示没有空间限制
MON_TAKEOVER_SHUTDOWN 主库正常退出时,备库自动接管需要等待的时间。范围 0~86400,单位为秒,默认值为 0,0 表示不启用主库正常退出,备库自动接管功能。非 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 保持一致。
如果需要监控的是 DMDSC 集群,作为一个整体的库,将 DMDSC 集群中所有守护进程的“IP:PORT”配置为一个 MON_DW_IP 项,每个守护进程的“IP:PORT”以“/”分隔。比如: MON_DW_IP=192.168.0.73:9236/192.168.0.73:9237。 如果使用 IPV6 地址,为了区分端口,需要用[]封闭 IP 地址。
对于 IPV6,若当前环境存在多块网卡,需要用 % 号指定具体有效的网卡序号;若只有一块网卡或者已配置默认网卡,则可以不指序号。
MON_MESSAGE_CHECK MON_DW_IP = [fe80::6aa7:3f02:59b3:bcb4%3]:52184 是否对 MON 通信消息启用消息体校验(只有当消息的发送端和接收端都配置为 1 才启用通信体校验)。0:不启用;1:启用。默认为 1
MON_INST_ID 监视器实例在监视器系统中的 ID,取值(1~2147483647)
MON_MID 当前监视器系统的唯一标识(监视器系统中若只有一个确认监视器则可以不配置该项),取值(1~2147483647)
MON_ID 当前监视器在监视器系统中的 ID,取值(1~2147483647)
MON_HOST 监视器实例在监视器系统中通信的 IP
MON_PORT 监视器实例在监视器系统中通信的 PORT
MON_INST_NUM 配置监视器实例的总个数,取值(1、3 或者 5)
MON_HB_INTERVAL 各监视器之间的通信心跳校验间隔,取值(5~600),单位秒
MON_BRO_INTERVAL 各监视器之间的通信心跳间隔,取值(5~600),单位毫秒,为避免用户输入不合理的数据,内部会对该值进行一定处理,实际参数值可通过 show state 命令进行查看
MON_VOTE_INTERVAL 监视器的基础投票间隔,取值(5~600),单位毫秒,为避免用户输入不合理的数据,内部会对该值进行一定处理,实际参数值可通过 show state 命令进行查看
[INST_NAME] 监视器实例名,与 GROUP_NAME 形式相同,根据后续配置项决定该内容属于 GROUP_NAME 还是 INST_NAME

MON_LOG_PATH 配置说明:

  1. 对于 dmmonitor 命令行工具

如果 dmmonitor.ini 中配置有 MON_LOG_PATH 路径,则将 MON_LOG_PATH 作为日志文件路径;如果没有配置,则将 dmmonitor.ini 配置文件所在的路径作为日志文件路径。

  1. 对于 dwmon_init 接口

接口说明可参考附录部分。

对于通过调用接口方式监控守护系统的情况,如果调用 dwmon_init 接口时指定有 log_path 参数,则将指定的 log_path 作为日志文件路径;如果没有指定 log_path 参数,则将 dmmonitor.ini 中配置的 MON_LOG_PATH 作为日志文件路径。如果 dmmonitor.ini 中没有配置 MON_LOG_PATH,则将 dmmonitor.ini 配置文件所在的路径作为日志文件路径。

注意

只有在MON_LOG_INTERVAL配置大于0的情况下才会产生日志信息,并写入到日志文件中,日志文件路径请参考上述说明。 在有日志写入操作时,如果日志路径下没有日志文件,会自动创建一个新的日志文件,如果已经有日志文件,则根据设定的单个日志文件大小(MON_LOG_FILE_SIZE)决定继续写入已有的日志文件或者创建新的日志文件写入。
创建新的日志文件时,根据设定的日志总空间大小(MON_LOG_SPACE_LIMIT)决定是否删除创建时间最早的日志文件。

5.6 dmtimer.ini

dmtimer.ini 用于配置定时器,可记录异步备库的定时器信息,具体使用请见异步备库配置章节。dmtimer.ini 的配置项见下表,其中项目名称就是定时器名称。表中参数与创建定时器的过程 SP_ADD_TIMER()参数用法相同,更为详细的参数介绍,请参考《DM8_SQL 语言使用手册》中 SP_ADD_TIMER()中参数介绍。

表5.6 dmtimer.ini的配置项
&##39033;&##30446;
&##39033;&##30446;&##24847;&##20041; &##23383;&##27573; &##23383;&##27573;&##24847;&##20041;
[TIMER_NAME1] &##23450;&##26102;&##22120;&##20449;&##24687; TYPE &##23450;&##26102;&##22120;&##35843;&##24230;&##31867;&##22411;&##65306;
1&##65306;&##25191;&##34892;&##19968;&##27425;
2&##65306;&##25353;&##26085;&##25191;&##34892;
3&##65306;&##25353;&##21608;&##25191;&##34892;
4&##65306;&##25353;&##26376;&##25191;&##34892;&##30340;&##31532;&##20960;&##22825;
5&##65306;&##25353;&##26376;&##25191;&##34892;&##30340;&##31532;&##19968;&##21608;
6&##65306;&##25353;&##26376;&##25191;&##34892;&##30340;&##31532;&##20108;&##21608;
7&##65306;&##25353;&##26376;&##25191;&##34892;&##30340;&##31532;&##19977;&##21608;
8&##65306;&##25353;&##26376;&##25191;&##34892;&##30340;&##31532;&##22235;&##21608;
9&##65306;&##25353;&##26376;&##25191;&##34892;&##30340;&##26368;&##21518;&##19968;&##21608;
FREQ_MONTH_WEEK_INTERVAL &##38388;&##38548;&##26376;&##25110;&##21608;&##25968;
FREQ_SUB_INTERVAL &##38388;&##38548;&##22825;&##25968;
FREQ_MINUTE_INTERVAL &##38388;&##38548;&##20998;&##38047;&##25968;
START_TIME &##24320;&##22987;&##26102;&##38388;
END_TIME &##32467;&##26463;&##26102;&##38388;
DURING_START_DATE &##24320;&##22987;&##26102;&##38388;&##28857;
DURING_END_DATE &##32467;&##26463;&##26102;&##38388;&##28857;
NO_END_DATE_FLAG &##26159;&##21542;&##32467;&##26463;&##26631;&##35760;
DESCRIBE &##23450;&##26102;&##22120;&##25551;&##36848;
IS_Valid &##23450;&##26102;&##22120;&##26377;&##25928;&##26631;&##35760;&##65292;&##40664;&##35748;&##20026;0
0&##65306;&##34920;&##31034;&##20851;&##38381;&##23450;&##26102;&##22120;
1&##65306;&##34920;&##31034;&##21551;&##29992;&##23450;&##26102;&##22120;

例 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

5.7 端口配置关系说明

对上述 ini 文件中的各个端口之间的对应关系说明如下。

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 连接,这个端口只用于数据库和守护进程之间的消息交互使用。

DM8 版本支持 DMDSC 数据守护后,该参数转移到 dmmal.ini 的 MAL_INST_DW_PORT,dm.ini 中无需设置。此处保留是为了单节点库的向下兼容,对 DMDSC 集群,此参数不再起作用。

对于单节点库,如果同时配置了 DW_PORT 和 MAL_INST_DW_PORT,则要求两个配置值相同,如果只配置了其中一个配置项,则使用此配置项的值作为有效值。

对于新配置的数据守护系统,如果是单节点库,建议改用 dmmal.ini 中的 MAL_INST_DW_PORT 进行配置,不需要再配置 dm.ini 中的 DW_PORT。如果是 DMDSC 集群,则 dm.ini 中的 DW_PORT 不再有用,必须在 dmmal.ini 中配置 MAL_INST_DW_PORT。

例如,以主库 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 ##守护进程监听端口

2. dmmal.ini

dmmal.ini 中每个实例都有一个单独的 mal 配置项,每个实例中有以下几个端口相关的配置:MAL_PORT、MAL_INST_PORT、MAL_DW_PORT、MAL_INST_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。

  • MAL_INST_DW_PORT

实例对守护进程的监听端口,守护进程使用 MAL_HOST +MAL_INST_DW_PORT 创建到实例的 TCP 连接。

例如,这里以主库 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_INST_DW_PORT = 5237

[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  		 ##守护进程监听端口

	MAL_INST_DW_PORT = 6237

3. dmwatcher.ini

守护进程启动时,需要获取远程实例对应的配置项信息,创建到远程守护进程的 TCP 连接,这些信息通过 INST_INI 配置项来获取。

守护进程从 INST_INI 路径找到并读取 dm.ini、dmmal.ini、dmarch.ini,综合各个配置项得到远程守护进程的 IP、端口等信息并建立连接。

DMDSC 集群的守护进程启动后,需要连接到所有的 dmcss,如果 DMDSC 集群使用有 asm 文件系统,守护进程也需要连接到 asmsvr,守护进程根据 DCR_INI 路径从 DCR 磁盘获取到 dmcss 和 asmsvr 的 IP、端口等信息并建立连接。

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”信息,否则会无法接收到消息。

dmmonitor.ini 中的 MON_HOST 和 MON_PORT 是监视器实例在监视器系统中的监听端口,其他监视器向该 IP:PORT 发送相应消息,所有监视器的监视器实例部分的配置内容应该一致,其中 IP 和 PORT 不允许出现冲突。

对 DMDSC 集群的所有守护进程,作为一个整体配置在同一个 MON_DW_IP 项中,每个守护进程的“IP:PORT”以“/”分隔开。

这里以监控主库 GRP1_RT_A,备库 GRP1_RT_B 进行举例说明,假如 GRP1_RT_A 是单机,GRP1_RT_B 是 DMDSC 集群:

##这里只对IP/端口信息举例说明,其他配置参数请参考后面的配置举例

[GRP1]

	MON_INST_OGUID = 82379

	##IP和PORT信息和dmmal.ini中的MAL_HOST和MAL_DW_PORT配置项一致

	MON_DW_IP = 192.168.0.141:5239 ##GRP1_RT_A

	MON_DW_IP = 192.168.0.142:6239/192.168.0.142:7239 ##GRP1_RT_B

5.8 服务名配置

配置 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

指定优先登录的服务器模式。0:优先连接 Primary 模式的库,Normal 模式次之,最后选择 Stantby 模式;1:只连接主库;2:只连接备库;3:优先连接 Standby 模式的库,Primary 模式次之,最后选择 Normal 模式;4:优先连接 Normal 模式的库,Primary 模式次之,最后选择 Standby 模式。默认值为 0。

  • SWITCH_TIME

检测到数据库实例故障时,接口在服务器之间切换的次数;超过设置次数没有连接到有效数据库时,断开连接并报错。有效值范围 1~9223372036854775807,默认值为 3。

  • SWITCH_INTERVAL

表示在服务器之间切换的时间间隔,单位为毫秒,有效值范围 1~9223372036854775807,默认值为 200。

  • RW_SEPARATE

指定是否启用读写分离。0 表示不启用读写分离;1 表示启用读写分离,默认值为 0。

  • RW_PERCENT

启用读写分离时,读写分离的分发比例,有效值范围 0~100,默认值为 25。

例如,配置一个名为 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)

关于 dm_svc.conf 的详细设置,请参考《DM8 系统管理员手册》2.1.1.4 dm_svc.conf 章节。

5.9 建库参数说明

数据守护 V4.0 支持 Huge 表的主备数据同步,需要结合下面两个建库参数使用:

表5.7 dminit建库参数
配置项 配置含义
HUGE_WITH_DELTA 是否仅允许创建事务型 HUGE 表。取值:1 是,0 否。默认值为 1。
RLOG_GEN_FOR_HUGE 是否生成 HUGE 表 REDO 日志。取值:1 是,0 否。默认值为 0。

如果要搭建支持 Huge 表的数据守护系统,需要将建库参数 HUGE_WITH_DELTA 和 RLOG_GEN_FOR_HUGE 都配置为 1。

微信扫码
分享文档
扫一扫
联系客服