配置文件说明

与 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 维护中介绍;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。2 表示允许,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 表示无重做时间限制。
此参数只在备库重演场景中起作用
RLOG_SEND_APPLY_MON 此参数对主备库均有效。
对于主库,用于指定统计最近 N 次主库到每个备库的归档发送时间。对于备库,用于指定统计最近 N 次备库重演日志的时间。 N 为此参数设置的值,默认主备库均统计最近 64 次的时间信息。 取值范围 16~1024,静态参数,缺省为 64
MESSAGE_CHECK 是否对通信消息启用消息体校验(只有当消息的发送端和接收端都配置为 1 才启用通信体校验)。0:不启用;1:启用。缺省为 1
REDOS_PARALLEL_NUM 指定日志并行重演的线程数。取值范围 1~256,1 表示不开启日志并行重演,缺省为 11。 参数值建议和 BUFFER_POOLS 相等,或者取 BUFFER_POOLS / N(N 为整数,且 BUFFER_POOLS / N 的余数为 0)。注意,BUFFER_POOLS 可能会根据 BUFFER 的配置情况进行自动调整(确保每个 buffer pool 中至少存放 3000 个数据页),建议以 BUFFER_POOLS 内存值为准来配置 redos_parallel_num。 此参数可用在备库重演、故障重启重做 Redo 日志、DSC 故障处理以及还原后的恢复场景中
REDOS_RECV_PLL_NUM 备库在 Recovery 阶段要调整的重演并行度。取值范围 0~256,0 表示不启用,缺省为 0。参数开启后,备库在 recovery 期间取 MAX(REDOS_PARALLEL_NUM,REDOS_RECV_PLL_NUM)作为真正的重演并行度使用,recovery 结束后,并行度重新恢复为 REDOS_PARALLEL_NUM,如果备库 REDOS_ENABLE_SELECT=1 开启查询,则在 recovery 期间会强制关闭查询服务,recovery 结束后再恢复查询,以便备库能快速追赶上主库。 此参数仅对 REALTIME 和 TIMELY 备库生效
REDOS_RPKG_PARSE_NUM 表示并行解析日志包的线程数。取值范围 1~256,缺省为 16
REDOS_RPKG_FILL_NUM 表示重演任务数组中最多允许填充的日志包个数。取值范围 1~320,缺省为 64
REDOS_ENABLE_SELECT 是否允许备库执行查询操作,缺省为 1。
0:DMDPC 环境下仅允许备库查询 V​动态视图;其他环境下仅允许备库查询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,缺省为 60,允许动态修改。
主备进入异步恢复流程时,为了确保备库能够和主库的数据追平,在异步恢复的最后阶段会将主库切换为 SUSPEND。此参数开启时,会在切换 SUSPEND 之前估算剩余待同步的日志量在 DW_SUSPEND_TIME 时长范围内是否能够同步完成。如果可以,再将主库切换到 SUSPEND 状态,否则,主库仍然保持 OPEN 状态。
当此参数配置为大于 0 的值时,需要与 dmwatcher.ini 中的 DW_SUSPEND_CHECK 参数配置使用。只有在 DW_SUSPEND_CHECK 参数也配置为 1 时,守护进程才会在异步恢复切换成 SUSPEND 之前检查主库的剩余日志是否满足 DW_SUSPEND_TIME 的要求;否则只要主库累计 5 次发送归档后就会被守护进程直接切换成 SUSPEND 状态
RLOG_SYNC_MODE 设置主库的日志同步模式,缺省为 0。
0:主库向备库发送日志失败后,需要切换至 SUSPEND 状态,主库守护进程进入 Failover 故障处理流程,设置归档失效后再 OPEN;
1:主库向备库发送日志失败后,直接将备库归档失效,不再切换至 SUSPEND 状态,主库守护进程不再进入 Failover 故障处理流程。
参数取值 1 仅在非自动切换模式下有效
RLOG_PKG_SEND_TIME 当此参数配置在异步备库的源库上时,用于设置源库到异步备库的日志同步检测时间(仅检测异步备库),缺省为 0,0 表示关闭检测,取值范围 0~3600,单位秒,允许动态修改。若超出指定时间还未收到异步备库的响应消息,则源库认为通信出现异常并主动断开连接,等网络恢复正常后源库会自动重建连接并再次启动日志同步。
当此参数配置在异步备库上时,用于设置异步备库的日志接收检测时间。缺省为 0,0 表示关闭检测,取值范围 0~3600,单位秒,允许动态修改。若异步备库发现距离上一次接收到来自源库的日志包的时间间隔超过此参数配置的值,则认为通信出现异常并主动断开到源库的连接,等待网络恢复正常后源库会自动重建连接并再次启动日志同步
RLOG_PKG_SEND_ECPR_ONLY 设置主库向备库发送日志时的加密和压缩。0:同时发送原始日志数据和加密压缩后的日志到备库;1:只发送加密压缩后的日志到备库。缺省为 0
DW_ARCH_HANG_CHECK 主库是否检测本地归档磁盘空间不足,并在磁盘空间不足时主动退出。0:不检测;1:检测。缺省为 0,允许动态修改。此参数目前仅支持单节点主库的检测
ELOG_ARCH_TIMEOUT 本地归档等待处理超时时间。当归档任务处理耗时或归档发送时间超过该参数设定的值,则打印一条超时日志,单位 MS,取值范围 0~3600000;缺省值为 0,表示不检查是否超时。
此参数仅在设置 ENABLE_MONITOR=1 时才生效
ARCH_SPACE_CHECK_INTERVAL 定期检查归档磁盘空间的时间间隔。单位秒,取值范围 0~86400;缺省为 0,表示不进行该检查;允许动态修改。
与参数 ARCH_SPACE_FREE_THRESHOLD 配合使用,当检查到归档磁盘剩余空间小于归档磁盘剩余空间阈值时,打印警告日志;仅当所述两个参数均不为 0 时,此功能才开启
ARCH_SPACE_FREE_THRESHOLD 设置定期检查的归档磁盘的剩余空间阈值。单位 MB,取值范围 0 或 1024~2147483647,取值为 0 时表示不进行该检查;缺省为 0,允许动态修改。
与参数 ARCH_SPACE_CHECK_INTERVAL 配合使用,当检查到归档磁盘剩余空间小于归档磁盘剩余空间阈值时,打印警告日志;仅当所述两个参数均不为 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 链路检测时间间隔,单位秒(s),取值范围 0~1800,缺省为 30s,配置为 0 表示不进行 MAL 链路检测,数据守护环境不建议配置为 0,防止网络故障导致服务长时间阻塞
MAL_CONN_FAIL_INTERVAL 判定实例之间 MAL 链路断开的时间,取值范围 2~1800,单位秒(s),缺省为 10s。
仅当 MAL_CHECK_INTERVAL 不为 0 时有效
MAL_CHECK_TIMEOUT 单个实例的 MAL 网络最大延迟时间,单位毫秒(ms),取值范围 0~65535,缺省为 0,表示不进行 MAL 网络延迟时间检测。需要和 MAL_CHECK_IP 配合使用。
仅当 MAL_CHECK_INTERVAL 不为 0 时有效
MAL_CHECK_IP 第三方确认机器的 IP,用于检测各个实例的 MAL 网络延迟时间。需要和 MAL_CHECK_TIMEOUT 配合使用。确认机器为 MAL 链路所有实例均可访问到的独立外网机器,MAL 链路实例包括 DMSERVER、DMASMSVR(非 DMASM 镜像)和 DMASMSVRM(DMASM 镜像)。
实例每隔 MAL_CHECK_INTERVAL 时间 ping 一次 MAL_CHECK_IP,若连接耗时超过 MAL_CHECK_TIMEOUT 指定时间,则该实例主动 HALT。
开启 MAL 网络延迟时间检测后,需要为 MAL 链路所有实例赋予 ping 权限,具体方法可以参考《DM8 共享存储集群》
MAL_SEND_THRESHOLD 最大待发送邮件数,用于控制待发送邮件总数,防止发送邮件堆积。取值范围 1024~10000,缺省值 2048
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 链路配置,监听端端口配置此参数,取值范围 1024~65534,发起连接端的端口在 1024~65535 之间随机分配
MAL_INST_HOST 实例对外服务的 IP 地址。
对于 ipv4,直接使用 ip 地址即可,例如: MAL_INST_HOST = 192.168.100.109
对于 ipv6,若当前环境存在多块网卡,需要用 % 号指定具体有效的网卡序号或网卡名称;若只有一块网卡或者已配置默认网卡,则可以不指定序号或名称。例如:MAL_INST_HOST = fe80::6aa7:3f02:59b3:bcb4%3,其中,%3 为实际网卡序号
注:MAL_INST_HOST 在不同场景下的配置有不同的配置要求,具体请参看此表格后面的说明
MAL_INST_PORT MAL_INST_NAME 实例服务器监听通讯端口号,服务器配置此参数,有效值范围(1024~65534),发起连接端的端口在 1024-65535 之间随机分配 此参数的配置应与 dm.ini 中的 PORT_NUM 保持一致
MAL_DW_PORT MAL_INST_NAME 实例守护进程的监听端口,监听端配置此参数,取值范围 1024~65534,发起连接端的端口在 1024~65535 之间随机分配。缺省为 0,表示不配置端口号,无法监听
MAL_INST_DW_PORT 节点实例监听守护进程的端口,实例服务器配置此参数,取值范围 1024~65534,发起连接端的端口在 1024-65535 之间随机分配。缺省为 0,表示不配置端口号,无法监听
MAL_LINK_MAGIC MAL 链路网段标识,取值范围 0~65534,缺省为 0。设置了此参数后,对于设置的 MAL_LINK_MAGIC 值不同的实例,dmwatcher 之间和 dmserver 之间的通信使用配置的 MAL_INST_HOST;对于设置的 MAL_LINK_MAGIC 值相同的实例,dmwatcher 之间和 dmserver 之间的通信使用配置的 MAL_HOST

MAL_INST_HOST 配置说明:

MAL_INST_HOST 参数为可选项,而在一些场景下则必须配置 MAL_INST_HOST,说明如下:

  1. 需要守护进程自动检查 OPEN 主库的对外服务网卡是否正常时,必须配置 MAL_INST_HOST,并将 dmwatcher.ini 中的 INST_SERVICE_IP_CHECK 参数配置为 1,否则守护进程不具备此功能;
  2. 需要使用 REALTIME/TIMELY 归档的读写分离功能时,应将 MAL_INST_HOST 配置为对外提供数据库服务的 IP 地址,用于接口分发读操作时使用;
  3. MPP 主备环境,且可能需要对 HUGE 表进行备份还原时,MAL_INST_HOST 用作 HUGE 表还原过程中远程文件拷贝的目标地址,必须配置;
  4. 配置了 LISTEN_IP 参数时,要求 MAL_INST_HOST 与 LISTEN_IP 的参数值保持一致。

当确定不会出现上述场景时,可以不配置 MAL_INST_HOST 参数。若没有配置该参数,但配置了 MAL_INST_PORT 参数,默认 MAL_INST_HOST 的配置值与 MAL_HOST 相同。

注意

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

5.3 dmarch.ini

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

在同一个守护进程组内,所有 GLOBAL 守护类型的实例 dmarch.ini 需要配置相同的 ARCH_TYPE。

表5.3 dmarch.ini配置项
配置项 配置含义
ARCH_WAIT_APPLY 备库收到 Redo 日志后,是否需要重演完成后再响应主库。0 表示收到马上响应(高性能模式),1 表示重演完成后响应(事务一致模式)。配置为即时归档时,缺省值为 1;配置为实时归档时,缺省值为 0。
针对配置实时归档的 DMDSC 数据守护集群,不支持将 ARCH_WAIT_APPLY 配置为 1
ARCH_RESERVE_TIME 归档日志保留时间,单位分钟,取值范围 0~4294967294。只对本地归档有效。服务器每隔 5 分钟检查是否存在超过保留时间的归档并删除。缺省为 0,表示不删除归档
ARCH_LOCAL_SHARE DMDSC 集群本地归档是否共享给远程节点作为远程归档。
注:自 V8.1.3.61 版本起废弃该参数,始终共享
ARCH_LOCAL_SHARE_CHECK 是否进行 LOCAL 归档和 REMOTE 归档路径的一致性校验。
注:自 V8.1.3.61 版本起废弃该参数,始终校验
[ARCH_NAME] 配置为 1 时,会进行 LOCAL 归档和 REMOTE 归档路径的一致性校验;配置为 0 时,不进行 LOCAL 归档和 REMOTE 归档的一致性校验,由用户自己保证归档配置的正确性 Redo 日志归档名,由于“STANDBY_ARCHIVE”用于表示备库生成的归档日志,因此不允许将归档名称配置为“STANDBY_ARCHIVE”
ARCH_TYPE Redo 日志归档类型,LOCAL/REMOTE/REALTIME/TIMELY/ASYNC/SYNC/(RAFT/LEARNER),分别表示本地归档/远程归档/实时归档/即时归档/异步归档/同步归档/RAFT 归档(RAFT 归档仅用于 DPC 环境下)
ARCH_DEST 归档目标,本地归档为归档文件存放路径,其他归档方式设置为目标数据库实例名,如果目标库为 DMDSC 库,则需要写上 DMDSC 每个实例名,以’/’分隔(如 DSC01/DSC02)。需要配置在 ARCH_TYPE 之后
注: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 表示不使用归档刷盘缓存机制。缺省为 2
ARCH_HANG_FLAG 本地归档写入失败时系统是否挂起。取值范围 0~2;缺省为 1。
0:写入失败后不挂起,直接报错返回,不再尝试写入;
1:写入失败后挂起,反复尝试写入归档,直到写入成功;
2:写入失败后先删除最老的归档文件,再重新尝试写入,反复进行该过程直到归档写入成功,或者所有归档文件都已经被删除;若所有归档文件都已经被删除的情况下仍然写入失败,则直接报错返回,不再尝试写入。
需要注意的是,若当前库配置的所有本地归档 ARCH_HANG_FLAG 均为非 1 值,则写入归档失败后可能会出现归档日志缺失的情况,进而可能产生特定情况下备份还原无法正常进行等问题
ARCH_TIMER_NAME 定时器名称,仅对异步归档有效。需要配置在 ARCH_TYPE 之后
ARCH_INCOMING_PATH 指定远程归档目标 ARCH_DEST 的本地归档日志文件存放路径。需要配置在 ARCH_TYPE 之后
ARCH_SEND_DELAY 指定源库到异步备库的归档延时发送时间,单位为分钟,取值范围 0~1440,缺省为 0,表示不启用归档延时发送功能。
注:仅在异步归档类型中支持此配置项,其他归档类型不支持。如果源库是 DSC 集群,建议用户配置时保证各节点上配置的值是一致的,并保证各节点所在机器的时钟一致,避免控制节点发生切换后计算出的归档延迟发送时间不一致
WAIT_APPLY 用于表示归档目标为高性能模式或事务一致模式,仅对实时归档和即时归档生效。若归档目标未配置 WAIT_APPLY,则以全局 ARCH_WAIT_APPLY 为准;若某一个归档目标配置了 WAIT_APPLY,则对应归档目标是否是事务一致由配置的 WAIT_APPLY 为准。取值:0:表示高性能模式;1:表示事务一致模式。
针对配置实时归档的 DMDSC 数据守护集群,不支持将 WAIT_APPLY 配置为 1
ARCH_RECOVER_TIME 主库向同步备库发起异步恢复的时间间隔。单位秒,取值范围 1~86400,缺省为 1,表示主库每隔 1 秒检查一次同步备库的归档状态,若为 Invalid 且和同步备库通信正常,则发起异步恢复。
注:仅在同步归档类型中支持配置此项,其他归档类型不支持。
ARCH_STANDBY_APPLY 是否根据归档目标重演情况确定自身本地归档可删除。取值 0:否;1:是。默认值为 0。支持 REALTIME/TIMELY/SYNC/ASYNC/RAFT 归档,如果多个归档目标都配置了此字段,当前库会根据重已重演 LSN 值最小的备库重演信息确定自身本地归档是否可以删除
ARCH_SEND_POLICY 主库发送 REALTIME 归档的策略,取值 0 或 1,缺省为 0。全局参数。
0:主库发送 REALTIME 归档后立即等待备库响应消息;
1:主库发送 REALTIME 归档后不立即等待备库的响应消息,而是先将当前日志包写入联机日志文件,然后再等待备库响应消息。
当此参数配置为 1 时,日志包刷盘与等待备库响应的动作等效于并发执行,相比于配置为 0 的策略而言,能够减少主库日志刷盘线程因等待备库响应消息而阻塞的时间,降低 REALTIME 备库对主库性能的影响。
TIMELY 主备不支持此参数;DMDSC 集群中也不支持配置此参数,但允许在 DMDSC 主备中的单机库上配置此参数。
注意:如果主库将 ARCH_SEND_POLICY 配置为 1,且守护进程配置为自动接管模式,则备库自动接管可能会有集群分裂的风险,需要谨慎使用此配置方式

5.4 dmwatcher.ini

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

在同一个守护进程内,所有 GLOBAL 守护类型的实例 dmwatcher.ini 需要配置相同的 DW_TYPE、DW_MODE、DW_ERROR_TIME。

表5.4 dmwatcher.ini配置项
配置项 配置含义
[GROUP_NAME] 守护进程组名(长度不能超过 16)
DW_TYPE 守护类型,缺省为 LOCAL
LOCAL:本地守护
GLOBAL:全局守护
DW_MODE 切换模式,缺省为 MANUAL
MANUAL:故障手动切换模式
AUTO:故障自动切换模式
DW_ERROR_TIME 守护进程故障认定时间,单位秒,取值范围为 3~1800,缺省 15 秒没有收到远程守护进程消息,即认定远程守护进程故障,对本地守护无效。
另外此参数也是监视器认定守护进程的故障时间,超过设置的时间间隔仍没有收到守护进程消息,监视器认为守护进程出现故障
INST_ERROR_TIME 数据库故障认定时间,单位秒,取值范围为 3~1800,缺省 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 备库故障恢复检测时间间隔,单位秒,取值范围 3~86400,缺省每 60 秒检查一下备库状态,满足故障恢复条件时,启动历史数据同步流程。数据守护系统启动完成后、Switchover 主备切换后、Takeover 备库接管后以及强制 Open 主库后,主库守护进程 INST_RECOVER_TIME 内存值会强制设置成 3,确保尽快启动数据同步。另外,还可以通过监视器命令 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,当参数值小于等于 3 时,单位为秒;当参数值大于 3 时,单位为毫秒。配置为 0 时此监控功能关闭,缺省为 0。
此参数对主库守护进程有效,建议主备库的守护进程都进行配置,以便备库切换为主库后使用
RLOG_APPLY_THRESHOLD Windows 命令行启动:用于指定备库重演日志的时间阈值。
如果某个备库最近 N 次的平均日志重演时间大于此参数设置的值,则主库守护进程不会将其归档恢复为有效状态,N 值取备库 dm.ini 中配置的 RLOG_SEND_APPLY_MON 值和备库实际重演次数中的较小值(可通过查询 V$RAPPLY_STAT 获取实际重演次数)。
取值范围 0~600000,若参数值小于等于 10,则单位为秒;若参数值大于 10,则单位为毫秒;配置为 0 时此监控功能关闭,缺省为 0。
此参数对主库守护进程有效,建议主备库的守护进程都进行配置,以便备库切换为主库后使用
DW_RECONNECT 用于指定守护进程和实例的通信链路断开后,守护进程的处理策略。
0:在通信链路断开后,守护进程会直接认定本地实例故障并将其 kill,在需要快速启动自动接管的场景下,可以将此参数配置为 0;(取值 0 仅对单节点主库或单节点备库有效)
1:在通信链路断开后,守护进程会尝试自动重连本地实例;
2:在通信链路断开后,守护进程认为本地实例在运行过程中发生异常并需要保存异常堆栈信息,在此之后实例进程会主动退出,不需要守护进程再通知其 kill,为了快速启动备库自动接管,守护进程在链路断开后会将其认定故障,但不再主动 kill 实例进程。
缺省为 1
DW_FAILOVER_FORCE 用于在自动切换模式下,主库向备库发送日志失败后挂起,但确认监视器未启动,无法返回确认消息给主库守护进程时,主库守护进程是否强制将主库重新 Open。0:在此场景下,不支持将主库强制 Open,主库一直保持在挂起状态;1:在此场景下,主库守护进程经过 3 倍的 DW_ERROR_TIME 确认时长后,如果认定自己仍然满足重新 Open 条件,则将主库重新 Open(具体请参考 6.17 小节。缺省为 1
DW_SUSPEND_CHECK 主库执行异步恢复时,在转入 suspend 状态之前是否对剩余日志量进行检测以控制 suspend 时长,1:是,0:否,缺省为 1。 配置为 1 时需要结合 dm.ini 中的 DW_SUSPEND_TIME 参数来使用
INST_RESTART_CNT 守护进程拉起次数,守护进程连续拉起失败次数若超过该值,则不再尝试拉起。服务器拉起成功,重新统计失败次数。取值范围 0~1024,缺省为 0,表示不限制拉起次数。
监视器拉起命令不受此参数控制
DW_LOG_FLAG 守护进程日志命名方式,指定当前日志文件名是否包含时间戳。0 包含,1 不包含。缺省为 0

5.5 dmmonitor.ini

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

表5.5 dmmonitor.ini配置项
配置项 配置含义
全局配置项
MON_DW_CONFIRM 是否配置为确认模式,缺省为 0。0:监控模式 1:确认模式
MON_LOG_PATH 日志文件路径。其他请参考表后附加说明
注意:对于多实例监视器,联机日志文件初始化时参数 RAFT_FILE_PATH 设置的路径需要与 MON_LOG_PATH 保持一致(联机日志文件初始化的参数请参考表后附加说明)
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_LOG_FLAG 日志命名方式,指定当前日志文件名是否包含时间戳。0 包含,1 不包含。缺省为 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_NAME 监视器实例名,单实例监视器可以不配置该字段,多实例监视器要求必须配置此字段,长度不能超过 16。且建议与自身实例信息的[INST_NAME]相同
MON_MID 当前监视器系统的唯一标识,取值范围 1~2147483647。仅多实例确认监视器需要配置且必须配置
MON_ID 当前监视器在监视器系统中的 ID,取值范围 1~9。仅多实例确认监视器需要配置且必须配置
MON_INST_NUM 配置监视器实例的总个数,取值范围:1、3 或者 5。仅多实例确认监视器需要配置且必须配置
MON_HB_INTERVAL 各监视器之间的通信心跳校验间隔,取值范围 5~600,单位秒。仅多实例确认监视器需要配置且必须配置
MON_BRO_INTERVAL 各监视器之间的通信心跳间隔,取值范围 5~600,单位毫秒,为避免用户输入不合理的数据,内部会对该值进行一定处理,实际参数值可通过 show state 命令进行查看。仅多实例确认监视器需要配置且必须配置
MON_VOTE_INTERVAL 监视器的基础投票间隔,取值范围 10~3600000,单位毫秒,为避免用户输入不合理的数据,内部会对该值进行一定处理,实际参数值可通过 show state 命令进行查看。仅多实例确认监视器需要配置且必须配置
局部配置项 (仅配置多实例监视器时需要进行配置)
[INST_NAME] 监视器实例名,与 GROUP_NAME 形式相同,根据后续配置项决定该内容属于 GROUP_NAME 还是 INST_NAME,必须指定
MON_HOST 监视器实例在监视器系统中通信的 IP,必须指定
MON_PORT 监视器实例在监视器系统中通信的 PORT,必须指定
MON_INST_ID 监视器实例在监视器系统中的 ID,取值范围 1~9,必须指定
MON_VOTE_PRIORITY 监视器实例成为 LEADER 的优先级,范围 1~9,数字越大,优先级越高;缺省为 1。仅多实例监视器配置有效,以当前 LEADER 的配置为准

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 配置文件所在的路径作为日志文件路径。

  1. 对于初始化联机日志参数

若需要使用多实例监视器,在使用配置文件启动多实例监视器实例之前,需要先初始化联机日志文件。多实例监视器的初始化联机日志参数中的 RAFT_FILE_PATH 需要和 MON_LOG_PATH 指定的路径保持一致。初始化联机日志参数的介绍如下:

表5.6 初始化联机日志参数
参数名 说明
RAFT_FILE_PATH 监视器联机日志路径,需要与 dmmonitor.ini 中 MON_LOG_PATH 保持一致
RAFT_FILE_SIZE 监视器联机日志文件大小,取值范围 512~10240,单位 MB
MON_MAGIC 监视器联机日志文件魔数,取值范围 0~4294967294
MON_NAME 监视器实例名,需要与 dmmonitor.ini 中 MON_NAME 保持一致,长度不能超过 16
注意

只有在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.7 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 时,表示的是每隔几个星期执行,值的有效范围为 1 到 100;
当 TYPE=4 时,表示每几个月中的某一天执行,值的有效范围为 1 到 100;
当 TYPE 为 5、6、7、8 或 9 时,都表示每几个月的某一周执行,值的有效范围为 1 到 100
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_INTERVAL 和 FREQ_SUB_INTERVAL 的基础上,继续指定更为精细的频率。表示一天内每隔多少分钟执行一次。取值范围 0~1440,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 模式。缺省值为 4。

  • SWITCH_TIMES

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

  • SWITCH_INTERVAL

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

  • RW_SEPARATE

指定是否启用读写分离。取值范围:0、1、2、4。0 表示不启用读写分离;1 表示启用读写分离;2 表示启用读写分离,且备库由客户端进行选择;4 表示启用读写分离,且连接备库时仅允许连接事务一致的备库。缺省值为 0。

启用读写分离时,LOGIN_MODE 参数失效。

  • 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_TIMES=(3)
SWITCH_INTERVAL=(1000)

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

5.9 建库参数说明

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

表5.8 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。

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