配置文件说明

与 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~65534,单位 S。如果设定时间内,守护进程没有启动,数据库实例强制退出。0 代表不检测,缺省为 0
REDOS_BUF_SIZE 待重演日志堆积的内存限制,堆积的日志缓冲区占用内存超过此限制,则新的日志将会被延迟加入重演队列,等待重演释放部分内存后再加入。取值范围 0~65536,单位 MB,缺省为 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,避免在某些场景下干扰到日志重演线程,反而影响备库重演性能。 此参数可用在备库重演、故障重启重做 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 是否允许备库执行查询操作,缺省为 1。
0:仅允许备库查询 V$ 动态视图,其他所有查询操作均不支持。1:允许备库执行所有查询操作。设置为 0 时,会在一定程度上提升备库的重演性能。
DW_CONSISTENCY_CHECK 备库是否检测主库到备库的连接丢失或归档失效,并在检测到上述情况时停止提供只读服务。0:不检测;1:检测。缺省为 0
DW_ARCH_SPACE_CHECK 备库是否检测本地归档磁盘空间不足,并在磁盘空间不足时主动关闭服务,同时将本地守护进程切换为 SHUTDOWN 状态。0:不检测;1:检测。默认值为 0。
此参数目前仅支持单节点备库的检测
RLOG_PKG_SEND_NUM 主库启动异步恢复时,连续发送设定值个日志包以后需要等待备库响应。取值范围 1~200。缺省为 1,表示每发送一个日志包就要等待一次响应。如果主备库之间存在比较大的网络延迟,可以通过调大此参数以提升主库的日志发送速度
DW_SUSPEND_TIME 设置主库在 SUSPEND 状态下最多保持的时长,以秒(s)为单位,取值范围 0~86400,缺省为 0,允许动态修改。
主备进入异步恢复流程时,为了确保备库能够和主库的数据追平,在异步恢复的最后阶段会将主库切换为 SUSPEND。此参数开启时,会在切换 SUSPEND 之前估算剩余待同步的日志量在 DW_SUSPEND_TIME 时长范围内是否能够同步完成。如果可以,再将主库切换到 SUSPEND 状态,否则,主库仍然保持 OPEN 状态。
缺省为 0,表示关闭估算功能,有可能会导致主库长时间处于 SUSPEND 状态无法正常提供服务
RLOG_SYNC_MODE 设置主库的日志同步模式,缺省为 0。
0:主库向备库发送日志失败后,需要切换至 SUSPEND 状态,主库守护进程进入 Failover 故障处理流程,设置归档失效后再 OPEN;
1:主库向备库发送日志失败后,直接将备库归档失效,不再切换至 SUSPEND 状态,主库守护进程不再进入 Failover 故障处理流程。
参数取值 1 仅在非自动切换模式下有效
注意

数据守护环境下不允许修改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 链路检测时间间隔,单位秒(S),取值范围 0~1800,缺省为 30s,配置为 0 表示不进行 MAL 链路检测,数据守护环境不建议配置为 0,防止网络故障导致服务长时间阻塞
MAL_SEND_THRESHOLD 最大待发送邮件数,用于控制待发送邮件总数,防止发送邮件堆积。取值范围 1024~10000,缺省值 2048
MAL_CONN_FAIL_INTERVAL 判定 MAL 链路断开的时间,单位秒(S),取值范围 2~1800,缺省为 10s
MAL_LOGIN_TIMEOUT MPP/DBLINK 等实例间登录时的超时检测间隔,取值范围 3~1800,以秒为单位,缺省为 15s
MAL_BUF_SIZE 单个 MAL 缓存大小限制,单位 MB。当此 MAL 的缓存邮件超过此大小,则会将邮件存储到文件中。取值范围 0~500000,缺省为 100,如果配置为 0,则表示不限制单个 MAL 缓存大小
MAL_SYS_BUF_SIZE MAL 系统总内存大小限制,单位 MB。取值范围 0~500000,缺省为 0,表示 MAL 系统无总内存限制
MAL_VPOOL_SIZE MAL 系统使用的内存初始化大小,单位 MB。取值范围 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_COMBIN_BUF_SIZE 指定 MAL 消息合并发送的缓冲区大小,单位 KB。MAL 发送消息时进行合并,减少网络发送次数。取值范围 0~131072。0 表示不进行消息合并。最小缓冲区大小 128K,当设置值大于 0 小于 128 时,自动调整为 128
MAL_MESSAGE_CHECK 是否对 MAL 通信消息启用消息体校验(只有当消息的发送端和接收端都配置为 1 才启用通信体校验)。0:不启用;1:启用。缺省为 1
[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 链路配置,监听端端口配置此参数,取值范围 102465534,发起连接端的端口在 102465535 之间随机分配
MAL_INST_HOST 实例对外服务的 IP 地址。若 dm.ini 中配置了 LISTEN_IP,则 MAL_INST_HOST 必须与 LISTEN_IP 保持一致。 对于 ipv4,直接使用 ip 地址即可,例如: MAL_INST_HOST = 192.168.100.109 对于 ipv6,若当前环境存在多块网卡,需要用 % 号指定具体有效的网卡序号或网卡名称;若只有一块网卡或者已配置默认网卡,则可以不指定序号或名称。例如:MAL_INST_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 连接,监听端配置此参数,取值范围 102465534,发起连接端的端口在 102465535 之间随机分配
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] 配置为 1 时,会进行 LOCAL 归档和 REMOTE 归档路径的一致性校验;配置为 0 时,不进行 LOCAL 归档和 REMOTE 归档的一致性校验,由用户自己保证归档配置的正确性 Redo 日志归档名,由于“STANDBY_ARCHIVE”用于表示备库生成的归档日志,因此不允许将归档名称配置为“STANDBY_ARCHIVE”
ARCH_TYPE Redo 日志归档类型,LOCAL/REMOTE/REALTIME/TIMELY/ASYNC/SYNC,分别表示本地归档/远程归档/实时归档/即时归档/异步归档/同步归档
ARCH_DEST 归档目标,本地归档为归档文件存放路径,其他归档方式设置为目标数据库实例名,如果目标库为 DMDSC 库,则需要写上 DMDSC 每个实例名,以’/’分隔(如 DSC01/DSC02)。
注:REMOTE 远程归档是 DMDSC 库内部实例相互配置,归档目标都是单个实例
ARCH_FILE_SIZE 单个 Redo 日志归档文件大小,单位 MB,取值范围 64~2048,对本地归档和远程归档有效,缺省为 1024MB,即 1G
ARCH_SPACE_LIMIT Redo 日志归档空间限制,当同一节点的本地归档文件或远程归档文件达到限制值时,系统自动删除最早生成的归档日志文件。取值范围 0 或 1024~2147483647,单位 MB,对本地归档和远程归档有效,缺省为 0,表示无空间限制
ARCH_FLUSH_BUF_SIZE 归档合并刷盘缓存大小,单位 MB,取值范围 0~128,缺省为 0,表示不使用归档合并刷盘
ARCH_TIMER_NAME 定时器名称,仅对异步归档有效
ARCH_INCOMING_PATH 对应远程归档目标 ARCH_DEST 在本地存放的归档路径
ARCH_SEND_DELAY 指定源库到异步备库的归档延时发送时间,单位为分钟,取值范围 0~1440,缺省为 0,表示不启用归档延时发送功能。
注:仅在异步归档类型中支持此配置项,其他归档类型不支持。如果源库是 DSC 集群,建议用户配置时保证各节点上配置的值是一致的,并保证各节点所在机器的时钟一致,避免控制节点发生切换后计算出的归档延迟发送时间不一致
ARCH_RECOVER_TIME 主库向同步备库发起异步恢复的时间间隔。单位秒,取值范围 1~86400,缺省为 1,表示主库每隔 1 秒检查一次同步备库的归档状态,若为 Invalid 且和同步备库通信正常,则发起异步恢复。
注:仅在同步归档类型中支持配置此项,其他归档类型不支持。

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 守护进程故障认定时间,单位秒,取值范围为 3~32767,缺省 15 秒没有收到远程守护进程消息,即认定远程守护进程故障,对本地守护无效。
另外此参数也是监视器认定守护进程的故障时间,超过设置的时间间隔仍没有收到守护进程消息,监视器认为守护进程出现故障
INST_ERROR_TIME 数据库故障认定时间,单位秒,取值范围为 3~32767,缺省 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 备库故障恢复检测时间间隔,单位秒,取值范围 0~86400,缺省每 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 Windows 命令行启动:用于指定备库重演日志的时间阈值。
如果某个备库最近 N 次的平均日志重演时间大于此参数设置的值,则主库守护进程不会将其归档恢复为有效状态,N 值取备库 dm.ini 中配置的 RLOG_SEND_APPLY_MON 值和备库实际重演次数中的较小值(可通过查询 V$RAPPLY_STAT 获取实际重演次数)。 取值范围 0~86400,单位为秒,配置为 0 时此监控功能关闭,缺省为 0。
此参数对主库守护进程有效,建议主备库的守护进程都进行配置,以便备库切换为主库后使用
DW_RECONNECT 用于指定单节点主库或单节点备库在和本地守护进程的通信链路断开后,守护进程是否直接认定本地实例故障并将其 kill。0:在通信链路断开后,守护进程会直接认定本地实例故障并将其 kill,在需要快速启动自动接管的场景下,可以将此参数配置为 0;1:在通信链路断开后,守护进程会尝试自动重连本地实例。缺省为 1
DW_FAILOVER_FORCE 用于在自动切换模式下,主库向备库发送日志失败后挂起,但确认监视器未启动,无法返回确认消息给主库守护进程时,主库守护进程是否强制将主库重新 Open。0:在此场景下,不支持将主库强制 Open,主库一直保持在挂起状态;1:在此场景下,主库守护进程经过 3 倍的 DW_ERROR_TIME 确认时长后,如果认定自己仍然满足重新 Open 条件,则将主库重新 Open(具体请参考 [6.17 小节](#6.17 确认监视器未启动)。缺省为 1
DW_SUSPEND_CHECK 主库执行异步恢复时,在转入 suspend 状态之前是否对剩余日志量进行检测以控制 suspend 时长,1:是,0:否,缺省为 0。 配置为 1 时需要结合 dm.ini 中的 DW_SUSPEND_TIME 参数来使用
INST_RESTART_CNT 守护进程拉起次数,守护进程连续拉起失败次数若超过该值,则不再尝试拉起。服务器拉起成功,重新统计失败次数。取值范围 0~1024,缺省为 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,单位为 MB,缺省值为 64,达到最大值后,会自动生成并切换到新的日志文件中,如果达到设定的总空间限制,会自动删除创建时间最早的日志文件
MON_LOG_SPACE_LIMIT 日志总空间大小,取值 0 或者 256~4096,单位为 MB,缺省为 0,表示没有空间限制
MON_TAKEOVER_SHUTDOWN 主库正常退出时,备库自动接管需要等待的时间。范围 0~86400,单位为秒,缺省为 0,0 表示不启用主库正常退出,备库自动接管功能。非 0 表示主库正常退出后,超过设定的时间主库仍未重启,备库可以完成自动接管
MON_WALLET_LOCATION dmwallet.prikey 文件所在的路径(不带文件名),用于以 wallet 方式登录监视器。该参数的值必须为一个合法的路径,若参数值为空,或该路径合法但无效,监视器也可以正常启动,但在使用 wallet 方式进行登录时会报错。若在同一个文件中存在多个配置,则以最后一次的配置为准。配置方式如:MON_WALLET_LOCATION=/dm/data/wallet,此时 dmwallet.prikey 文件应处于/dm_data/wallet 路径下
[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_DW_IP = [fe80::6aa7:3f02:59b3:bcb4%3]:52184
MON_MESSAGE_CHECK 是否对 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的配置项
配置项 配置含义
[TIMER_NAME1] 定时器名称。例如,名为 RT 的定时器,名称书写方式为[RT]
TYPE 定时器调度类型:
1:执行一次。时间上只需要指定 DURING_START_DATE 即可,不需要指定 START_TIME、END_TIME 和 DURING_END_DATE
2:按日执行
3:按周执行
4:按月执行的第几天
5:按月执行的第一周
6:按月执行的第二周
7:按月执行的第三周
8:按月执行的第四周
9:按月执行的最后一周
10: 按 REPEAT_INTERVAL 指定的日历表达式的频率进行。不再需要通过 START_TIME、END_TIME、DURING_START_DATE 和 DURING_END_DATE 指定时间
FREQ_MONTH_WEEK_INTERVAL 间隔月或周数。这个列的可选值与上面的不同调度类型有关。表示执行的频率。
说明如下:
当 TYPE=1 时,这个值无效,系统不会做检查。
当 TYPE=2 时,表示每隔几天执行,值的有效范围为 1 到 100。
当 TYPE=3 时,表示的是每隔几个星期执行,值的范围没有具体的限制。
当 TYPE=4 时,表示每几个月中的某一天执行,值的范围没有具体的限制。
当 TYPE 为 5、6、7、8 或 9 时,都表示每几个月的某一周执行,值的范围也没有具体的限制
FREQ_SUB_INTERVAL 间隔天数。这个列的可选值与上面的不同调度类型有关。表示执行的频率,在 FREQ_MONTH_WEEK_INTERVAL 基础上,继续指定更为精细的频率。
说明如下:
当 TYPE=1 或 2 时,这个值无效,系统不会做检查。
当 TYPE=3 时,表示的是某一个星期的星期几执行,可以同时选中七天中的任意几天。取值范围 1~127。具体如何取值,请用户参考如下规则。因为每周有七天,所以 DM 用七位二进制来表示选中的日子。从最低位开始算起,依次表示周日、周一...周五、周六。选中周几,就将该位置 1,否则 0。例如,选中周二和周六,7 位二进制就是 1000100,转化成十进制就是 68,所以 FREQ_SUB_INTERVAL 就取值 68。
当 TYPE=4 时,表示将在一个月的第几天执行,此时这个列的有效值范围为 1 到 31
当 TYPE 为 5、6、7、8 或 9 时,都表示将在某一周内第几天执行,有效值为 1 到 7,分别表示从周一到周日
FREQ_MINUTE_INTERVAL 间隔分钟数。
当 TYPE 为 2、3、4、5、6、7、8 或 9 时,在 FREQ_MONTH_WEEK_INTERVALHE 和 FREQ_SUB_INTERVAL 的基础上,继续指定更为精细的频率。表示一天内每隔多少分钟执行一次。取值范围 0~1439,0 表示一天内执行一次
REPEAT_INTERVAL 当 TYPE 为 10 时使用,用来指定的日历表达式。语法详见《DM8 系统包使用手册》手册 DBMS_SCHEDULER 包中关于 REPEAT_INTERVAL 的介绍
START_TIME 定时器开始时间,TIME 类型。例如 20:59:59.999999
END_TIME 定时器结束时间,TIME 类型
DURING_START_DATE 指定定时器的有效日期范围的起始日期,必须是有效的日期字符串,不可以为空。TIMESTAMP 类型。例如 2021-12-15 10:00:00
DURING_END_DATE 指定定时器的有效日期范围的结束日期,可以为空。如果不为空,必须是有效的日期字符串,同时必须是在 DURING_START_DATE 日期之后。TIMESTAMP 类型
NO_END_DATE_FLAG 是否结束标记。1 是,0 否
DESCRIBE 定时器描述
IS_VALID 定时器有效标记,缺省为 0。
0:表示已关闭定时器
1:表示已启用定时器

例 1 配置名称为“TIMER_01”的定时器,TYPE = 1,开始时间为 2016-02-22 17:30:00,只执行一次。

TYPE = 1 时,只需要指定 DURING_START_DATE 即可。START_TIME、END_TIME 和 DURING_END_DATE 均不需要。

[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_02”的定时器,TYPE = 2,每天 01:00:00 触发。

[TIMER_02]
	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

例 3 配置名称为“TIMER_03”的定时器,TYPE = 10,每秒触发一次。

[TIMER_03]
TYPE= 10
FREQ_MONTH_WEEK_INTERVAL= 
FREQ_SUB_INTERVAL= 
FREQ_MINUTE_INTERVAL= 
REPEAT_INTERVAL= FREQ=SECONDLY;INTERVAL=1
START_TIME= 15:20:00
END_TIME= 
DURING_START_DATE= 2021-12-15 10:00:00
DURING_END_DATE= 2021-12-20 10:00:00
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、4;0 表示不启用读写分离;1 表示启用读写分离;4 表示连接备库时,仅允许连接事务一致的备库;缺省值为 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。

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