达梦数据库学习之实时主备集群

时间:2024-03-19 17:11:21

       学习DM实时主备的搭建,搭建过程参考 DM8 数据守护与读写分离集群V4.0官方手册进行搭建,手册是在Windows本地安装后,在安装路径下有一个doc目录,里面是关于DM数据库的一些帮助手册。这里主要讲讲实时主备的实现原理,搭建过程中需要注意的地方以及相应的配置文件。
一、实现原理
达梦数据库学习之实时主备集群
       通过将主库(生产库)产生的 Redo日志传输到备库,备库接收并重新应用 Redo 日志,从而实现备库与主库的数据同步。通过DM数据守护进程监控数据库状态,获取主、备库数据同步情况,然后通过确认监视器获得的数据库状态信息来实现自动切换。当监视器发现正在运行的主库在一定时间内没有守护进程的消息时,判定主库出现异常,将备库状态切换为主库进行对外服务;当主库恢复没问题时,在将主库加入进来,变为备库,从而实现主备的切换。
二、实时主备的主要功能
       1.实时数据同步
       2. 主备库切换
       3. 自动故障处理
       4. 自动数据同步
       5. 备库接管
       6. 备库强制接管
三、搭建过程中的配置文件
       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 之间随机分配。
               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:启用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~99999),默认 4096。0 表示无限制。
               REDOS_BUF_SIZE 和 REDOS_BUF_NUM 同时起作用,只要达到一个条件即会触发延迟处理。此参数可用在备库重演、故障重启重做 Redo 日志、DSC 故障处理以及还原后的恢复场景中,如果是备库重演,由于新的日志被延迟加入重演队列,因此会延迟响应回主库。
               REDOS_MAX_DELAY备库重演日志缓冲区的时间限制,超过此限制则认为重演异常,服务器自动宕机,防止日志堆积、主库不能及时响应用户请求。以秒(s)为单位,取值范围(0~7200),默认 1800s。0 表示无重做时间限制。此参数只在备库重演场景中起作用。
               REDOS_PRE_LOAD重演日志时预加载的RLOG_PKG个数,在重演Redo日志的同时,根据参数设置提前解析后续若干个 RLOG_PKG 的 Redo 日志,并预加载数据页到缓存中,以加快 Redo 日志重演速度,避免高压力情况下出现日志堆积。取值范围(0~ 99999 ),默认值为 32,0 表示不开启预加载功能。此参数可用在备库重演、故障重启重做 Redo 日志、DSC 故障处理以及还原后的恢复场景中。
               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 表示采用 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 链路
              MAL_PORT MAL 监听端口,用于数据守护、DSC、MPP 等环境中各节点实例之间MAL链路配置,监听端端口配置此参数,范围1024~65534,
发起连接端的端口在 1024~65535 之间随机分配
              MAL_INST_HOST 实例对外服务的 IP 地址。若 dm.ini 中配置了 LISTEN_IP,则 MAL_INST_NAME 必须与 LISTEN_IP 保持一致
              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。设置此参数时,同一网段内的节点都设置相同,不同网段内的节点设置的值必须不一样
达梦数据库学习之实时主备集群根据需求进行配置。
       3.dmarch.ini
              dmarch.ini 是 Redo 日志归档配置文件。
              ARCH_WAIT_APPLY:备库收到 Redo 日志后,是否需要重演完成后再响应主库。0 表示收到马上响应(高性能模式),1 表示重演完成后响应(事务一致模式)。配置为即时归档的读写分离集群时,默认值为 1;配置为实时归档的读写分离集群时,默认值为 0。
              [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~4294967294M),对本地归档和远程归档有效,缺省为 0。
       注:在 DSC 环境下,该参数的空间限制表示 DSC 中每个节点的归档空间限制,而不是总的归档日志空间限制。
              ARCH_TIMER_NAME 定时器名称,仅对异步归档有效
              ARCH_INCOMING_PATH 对应远程归档目标 ARCH_DEST 在本地存放的归档路径
达梦数据库学习之实时主备集群
具体情况跟居需求进行配置。
       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_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 值和备库实际重演次数中的较小值(可通过查询 V$RAPPLY_INFO 获取实际重演次数)。取值范围(0~86400),单位为秒,配置为 0 时此监控功能关闭,默认值为 0。此参数对主库守护进程有效,建议主备库的守护进程都进行配置,以便备库切换为主库后使用。
达梦数据库学习之实时主备集群
具体情况跟居需求进行配置。
三、搭建过程(两节点实时主备)
       1.在两台机器上进行安装数据库并初始化实例。正常启停一次数据库服务。
       2.在做主库的数据库上做备份操作,在做备库的机器上进行还原操作。
       3.配置dm.ini,dmmal.ini,dmwatcher.ini,dmmonitor.ini(监视器一般在第三台机器上,我这里放在了备库上。)
       4.mount状态启动主库,设置数据库的OGUID,设置数据库模式为primary
       5.mount状态启动备库,设置数据库的OGUID,与主库的一致,设置数据库模式为standby。
       6.启动主备库的数据守护进程,也就是dmwatcher服务。该服务会将数据库由mount状态拉起到open状态。
       7.启动监视器,
达梦数据库学习之实时主备集群
通过监视器能看到主备集群是否正常。
四、注意
       1.主备库一定要做备份还原操作。
       2.配置文件中的实例名,组名不要超过16个字符。