一、前言
1.1 概念
集群健康检查主要用于了解集群的运行情况,通过集群的健康检查,可以及时地发现集群存在的问题以及隐患,帮助我们更好的发现问题和解决问题,这对于保障集群正常运行具有极大的实用价值。集群的健康检查主要包含:系统健康检查、实例健康检查和集群运行状态检查。本文主要对集群运行状态检查和需要额外注意的检查项进行详细说明。达梦数据库集群健康检查分为:
- 数据守护集群健康检查
- DPC 集群健康检查
- DSC 集群健康检查
1.2 术语
集群健康检查中可能会使用到的相关术语:
- 网络:具有独立功能的计算机通过通信介质连接起来就形成了网络。
- 集群:将多台服务器联合起来组成集群来实现综合性能优于单个大型服务器的技术。
- 健康检查:检查集群的健康程度,确保集群的正常运行。
- 监视器:基于监视器接口实现的一个命令行工具,用于监控守护系统内守护进程、数据库实例信息。
1.3 适用范围
本文中所涉及内容适用于达梦数据库的集群,包括数据守护集群、DPC 集群和 DSC 集群等。
DPC 集群和 DSC 集群部分详见官网,本文略。
二、数据守护集群健康检查
2.1 集群介绍
DM 数据守护(Data Watch)是一种集成化的高可用、高性能数据库解决方案,是数据库异地容灾的首选方案。通过部署 DM 数据守护,可以在硬件故障(如磁盘损坏)、自然灾害(地震、火灾)等极端情况下,避免数据损失、丢失,保障数据安全,并且可以快速恢复数据库服务,满足用户不间断提供数据库服务的要求。
2.2 磁盘分区及 IO 检查
各节点的磁盘分区以及 IO 性能需要确保一致,磁盘分区大小不一,则会影响数据库中表空间及数据文件的正常管理,IO 性能相差较大,则会影响数据库整体性能。
2.3 网络环境检查
为了确保集群的稳定性,需要对网络环境进行检查,心跳网络对 mal 系统的影响非常大,如果网络丢包或者延迟较大,则会严重影响 mal 系统的处理能力,从而导致整个集群出现响应服务请求慢的情况。
服务器必须至少有一个网卡,使用 ifconfig
命令可查看网卡情况,集群环境建议有两块网卡,一个是业务 IP,一个是心跳 IP。如果条件允许,主备集群、读写分离集群要求网卡是千兆网卡以上,若带宽过低,则会影响数据传输、集群 mal 通信。网卡信息可用 ethtool
命令查看。
2.4 集群节点时间检查
集群节点时间检查是为了确保各节点时间一致,若节点时间不一致,则会影响 mal 通信,从而影响集群数据同步。可使用命令 date
查看服务器节点时间是否与当前时间符合。若时间不一致,可在 root 用户下使用 date -s
命令修改服务器时间。在正式生产环境中,建议添加 NTP 服务器进行时间同步,确保系统各节点时间保持一致。
2.5 相关参数检查
数据守护集群需要检查配置文件中的相关参数设置是否合理。主要需要检查以下配置文件:dm.ini、sqllog.ini、dmarch.ini、dmmal.ini、dmwatcher.ini、dmmonitor.ini。
其中,dm.ini、sqllog.ini 可参考 实例健康检查-数据库参数检查 章节内容。本节主要介绍 dmarch.ini、dmmal.ini、dmwatcher.ini 和 dmmonitor.ini 文件参数配置。配置文件中大部分为功能性参数,只要满足集群搭建要求即可,需要重点关注检查的参数如下:
1. dmarch.ini 配置文件
该配置文件主要是控制归档文件的形成。数据守护集群的架构下,由于主库需要向备库同步归档或者当备库切换为主库时也需要向原主库同步归档,因此都需要比单机的归档配置多配置一个归档类型,详细配置如下:
[dmdba@~]$ vi /opt/dmdbms/data/DAMENG/dmarch.ini
ARCH_WAIT_APPLY = 0 #0:高性能(故障手切) 1:事务一致(故障自切)
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /opt/dmdbms/data/DAMENG/arch/ #本地归档存放路径
ARCH_FILE_SIZE = 1024 #单个归档大小,单位 MB
ARCH_SPACE_LIMIT = 51200 #归档上限,单位 MB
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = GRP1_RT_02 #实时归档目标实例名
部分参数详解如下表所示:
参数名称 | 默认值 | 参数描述及建议 | 属性 |
ARCH_FILE_SIZE | 1024 | 单位 MB,本地单个归档文件最大值。建议 2048。 | 动态 |
ARCH_SPACE_LIMIT | 0 | 单位 MB,0 表示无限制,范围 1024~4294967294 MB。 建议为归档存放目录容量的 80%。 | 动态 |
2. dmmal.ini 配置文件
dmmal.ini 是集群数据库各个节点之间内部通讯的验证文件,需要各个节点配置严格保持一致,否则会影响集群的运行。详细配置如下:
[dmdba@~]$vi /opt/dmdbms/data/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL = 60 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 60 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = GRP1_RT_01 #实例名,和 dm.ini 的 INSTANCE_NAME 一致
MAL_HOST = 192.168.1.1 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5336 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 172.16.1.1 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例对外服务端口,和 dm.ini 的 PORT_NUM 一致
MAL_DW_PORT = 5436 #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 5536 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = GRP1_RT_02
MAL_HOST = 192.168.1.2
MAL_PORT = 5336
MAL_INST_HOST = 172.16.1.2
MAL_INST_PORT = 5236
MAL_DW_PORT = 5436
MAL_INST_DW_PORT = 5536
部分参数详解如下表所示:
参数名称 | 默认值 | 参数描述及建议 | 属性 |
MAL_CHECK_INTERVAL | 30 | 检测线程检测间隔,范围 (0~1800),如果配置为 0,则表示不进行链路检测。建议修改为 60s,以降低因为网络延时出现脑裂的风险。 | 静态 |
MAL_CONN_FAIL_INTERVAL | 10 | 检测线程认定链路断开的时间,默认 10s,范围 (2~1800)。建议修改为 60s,以降低因为网络延时出现脑裂的风险。 | 静态 |
3. dmwatcher.ini 配置文件
dmwatcher.ini 是集群守护进程的配置文件。其中需要注意参数 DW_MODE,INST_AUTO_RESTART,INST_INI 和 INST_STARTUP_CMD,详细配置如下:
[dmdba@~]$ vi /opt/dmdbms/data/DAMENG/dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #MANUAL:故障手切 AUTO:故障自切
DW_ERROR_TIME = 20 #远程守护进程故障认定时间
INST_ERROR_TIME = 20 #本地实例故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_OGUID = 45331 #守护系统唯一 OGUID 值
INST_INI = /opt/dmdbms/data/DAMENG/dm.ini #dm.ini 文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /opt/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
部分参数详解如下表所示:
参数名称 | 默认值 | 参数描述及建议 | 属性 |
DW_MODE | MANUAL | 主备切换模式:MANUAL 手动切换模式,AUTO 自动切换 模式。建议使用自动切换模式。 | 静态 |
INST_AUTO_RESTART | 0 | 是否自动重启实例,0:不自动重启 1:自动重启。建议为 1。 | 静态 |
INST_STARTUP_CMD | 无 | 启动数据库的命令,请写数据库进程的决定路径。 | 静态 |
4. dmmonitor.ini 配置文件
dmmonitor.ini 是守护集群监视器的配置文件,其中需要确认参数 MON_DW_CONFIRM,MON_LOG_INTERVAL,MON_LOG_FILE_SIZE 和 MON_LOG_SPACE_LIMIT,详细配置如下:
[dmdba@~]$ vi /opt/dmdbms/bin/dmmonitor.ini
MON_DW_CONFIRM = 0 #0:非确认(故障手切) 1:确认(故障自切)
MON_LOG_PATH = ../log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 512 #单个日志大小,单位 MB
MON_LOG_SPACE_LIMIT = 2048 #日志上限,单位 MB
[GRP1]
MON_INST_OGUID = 45331 #组 GRP1 的唯一 OGUID 值
MON_DW_IP = 192.168.1.1:5436 #IP对应MAL_HOST,PORT对应MAL_DW_PORT
MON_DW_IP = 192.168.1.2:5436
部分参数详解如下表所示:
参数名称 | 默认值 | 参数描述及建议 | 属性 |
MON_DW_CONFIRM | 0 | 是否配置为确认模式。0:监控模式;1:确认模式。 | 静态 |
MON_LOG_FILE_SIZE | 64 | 单个日志文件大小,范围 16~2048,单位为 MB, 达到最大值后,会自动生成并切换到新的日志文件中。 建议为 64 MB。 | 静态 |
MON_LOG_SPACE_LIMIT | 0 | 日志总空间大小,取值 0 或者 256~4096,单位为 MB, 表示没有空间限制,如果达到设定的总空间限制, 会自动删除创建时间最早的日志文件。建议为 2048 MB。 | 静态 |
更多参数详解可参考数据库安装目录的 doc 目录下《DM8 数据守护与读写分离集群》。
2.6 集群运行状况检查
通过监视器,可以监控数据守护系统的运行情况,获取主备库状态、守护进程状态、以及主备库数据同步情况等信息。同时,监视器 (dmmonitor) 还提供了一系列命令来管理数据守护系统,监视器建议配置在独立于主备所在机器之外的第三台机器上,需要配置 dmmonitor.ini。在数据库安装目录下的 bin 目录下输入以下命令即可启动监视器。
./dmmonitor dmmonitor.ini
监视器集群检查:输入 show
命令。可以查看集群的运行状态,如下图所示,WSTATUS 显示为 open 表示守护进程处于开启状态,INST_OK 为 OK 表示数据库处于正常运行状态,ISTATUS 为 open 表示数据库处于开启状态。
2.7 日志检查
数据守护集群,由至少两台数据库服务器组成,与单实例数据库相比,还需要检查守护进程日志,且集群中的每一个节点的数据库运行日志、守护进程日志都要检查。
数据守护进程日志主要记录守护进程对数据库进程运行情况的监控信息和守护集群之间的内部通讯信息。该日志存放在 %DM_HOME/log,命名方式为 dm_watcher_日期.log。可以通过过滤日志中 ERROR 关键字的方式来分析日志中的异常情况,并将结果输出至文件中。
例如过滤 dm_watcher_202404.log 中的 ERROR 信息,并输出到 error.log 文件中,可参考如下命令:
cat dm_watcher_202404.log | grep "ERROR" >error.log
2.8 切换模式检查
需要对数据守护集群切换模式进行检查,主库出现故障时,可以快速将备库切换为主库,继续提供数据库服务,确保数据库服务不中断。切换模式分为自动切换和手动切换,满足用户不同需求。其中,配置自动切换的前提是已经部署确认监视器。在提供第三方机器部署确认监视器情况下,可以配置为故障自动切换模式,主库出现故障时,系统自动将备库切换为主库对外提供数据库服务。
检查主备库 dmwatcher.ini 文件的 DW_MODE 参数。
- MANUAL:故障手动切换模式,故障时前台启动监视器进行切换。
- AUTO:故障自动切换模式,需要后台运行确认监视器。
2.9 备份检查
备份的主要目的是数据容灾,保证数据的安全性,在数据库发生故障时,通过还原备份集,将数据恢复到可用状态,数据库备份健康检查重点在于检查备份的合理性和有效性。对于集群,需要对数据库备份进行定期检查,备份检查请参考 实例健康检查-作业检查 相关内容。
2.10 归档检查
备份与恢复过程都依赖归档日志,归档日志是保证数据一致性和完整性的重要保障。配有归档日志的数据库系统在出现故障时丢失数据的可能性更小。对于集群,需要对归档进行定期检查。
通过 V$ARCH_STATUS
动态视图可以获取归档状态的相关信息。归档状态是由主库记录和维护的,此视图只在主库上查询有效,备库上的查询结果没有实际意义。
SELECT * FROM V$ARCH_STATUS;
三、参考
若以上内容无法解决您的问题,可以在 达梦技术社区 提问交流。
官方文档地址
https://eco.dameng.com/document/dm/zh-cn/ops/check-cluster-config.html