一、前言
1.1 概念
集群健康检查主要用于了解集群的运行情况,通过集群的健康检查,可以及时地发现集群存在的问题以及隐患,帮助我们更好的发现问题和解决问题,这对于保障集群正常运行具有极大的实用价值。集群的健康检查主要包含:系统健康检查、实例健康检查和集群运行状态检查。本文主要对集群运行状态检查和需要额外注意的检查项进行详细说明。达梦数据库集群健康检查分为:
- 数据守护集群健康检查
- DPC 集群健康检查
- DSC 集群健康检查
1.2 术语
集群健康检查中可能会使用到的相关术语:
- 网络:具有独立功能的计算机通过通信介质连接起来就形成了网络。
- 集群:将多台服务器联合起来组成集群来实现综合性能优于单个大型服务器的技术。
- 健康检查:检查集群的健康程度,确保集群的正常运行。
- 监视器:基于监视器接口实现的一个命令行工具,用于监控守护系统内守护进程、数据库实例信息。
1.3 适用范围
本文中所涉及内容适用于达梦数据库的集群,包括数据守护集群、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;
三、DPC 集群健康检查
3.1 集群介绍
DMDPC 是基于达梦数据库管理系统研发的一款同时支持在线分析处理和在线事务处理的新型分布式数据库系统。它既具备传统单机数据库的绝大部分功能,又提供了分布式计算集群才拥有的高可用、高扩展、高性能、高吞吐量和对用户透明等高级特性,关注和解决的是大数据、计算与存储分离、高可用、支持全部的 SQL 标准、拥有完整的事务处理能力和集群规模能够动态伸缩的业务场景。
3.2 网络环境检查
为了确保集群的稳定性,需要对网络环境进行检查,心跳网络对 mal 系统的影响非常大,如果网络丢包或者延迟较大,则会严重影响 mal 系统的处理能力,从而导致整个集群出现响应服务请求慢的情况。
服务器必须至少有一个网卡,使用 ifconfig
命令可查看网卡情况。集群环境建议有两块网卡,一个是业务 IP,一个是心跳 IP。DPC 集群要求网卡是千兆网卡以上,若带宽过低,会影响数据传输、集群 mal 通信,网卡信息可用 ethtool
命令查看。
3.3 集群节点时间检查
集群节点时间检查是为了确保节点的时间一致,若节点时间不一致,则会影响 mal 通信,从而影响集群数据同步。可使用命令 date
查看服务器节点时间是否与当前时间符合,若时间不一致,可在 root 用户下使用 date -s
命令修改服务器时间。在正式生产环境中,建议添加 NTP 服务器进行时间同步,确保系统各节点时间保持一致。
3.4 相关参数检查
DPC 集群需要检查配置文件中的相关参数设置是否合理。主要需要检查以下配置文件:dm.ini、mp.ini、dmarch.ini 等。
由于分布式集群节点较多,推荐使用 DEM 对相关参数进行检查,具体步骤如下:
登录 DEM,第 ① 步点击资源监控,第 ② 步点击数据库。第 ③ 步点击需要检查的数据库查看配置,第 ④ 步点击配置,第 ⑤ 步选择需要检查的配置文件进行检查。
1. dm.ini 配置文件
检查 MP 各个节点和 BP 各个节点的 dm.ini 配置文件中如下配置是否正确。
ARCH_INI = 1 #打开归档配置
ALTER_MODE_STATUS = 0 #不允许用户直接通过 SQL 语句修改服务器模式
2. mp.ini 配置文件
mp.ini 文件用于节点之间的通信,在 DMDPC 集群中除 MP 自身外,SP、BP 都存在和 MP 通讯的可能,因此在 SP、BP 和 MP 初始化的 PATH 相同目录下需要用 MP.INI 来写明 MP 的 IP 地址和端口号。同一集群中 SP、BP 的 MP.INI 内容完全一致。
[MP1]
mp_host = 192.168.xxx.xx ##mp 实例的 IP 地址
mp_port = 10622 ##mp 实例的监听端口号
[MP2]
mp_host = 192.168.xxx.xx
mp_port = 10623
[MP3]
mp_host = 192.168.xxx.xx
mp_port = 10624
3. dmarch.ini 配置文件
dmarch.ini 是 DM 数据库实例的归档配置文件,用于配置数据库本地归档和 RAFT 归档。
如下为当 MP 配置多副本时主节点归档文件的配置方式,其它每个 MP 副节点都需要配置对应的归档文件,在配置时对应修改 RAFT_SELF_ID,ARCH_DEST,ARCH_DEST_ID 等,详细配置方式可参考数据库安装目录的 doc 下《DM8 分布计算集群》手册。检查 DMDPC 集群 MP 各个节点的归档是否配置正确。
XMAL_HB_INTERVAL = 5 #节点通信检测间隔
RAFT_HB_INTERVAL = 150 #选举心跳间隔
RAFT_VOTE_INTERVAL = 7000 #选举超时时间,三个库设置不同以尽快选出主库
RAFT_SELF_ID = 1 #多副本自身节点 ID
[ARCHIVE_RAFT1]
ARCH_TYPE = RAFT #RAFT 归档
ARCH_DEST = MP_B#归档目标实例名
ARCH_DEST_ID = 2 #归档目标多副本节点 ID
[ARCHIVE_RAFT2]
ARCH_TYPE = RAFT #RAFT 归档
ARCH_DEST =MP_C #归档目标实例名
ARCH_DEST_ID = 3 #归档目标多副本节点 ID
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /data/DMDPC/MP_A/DAMENG/arch #本地归档文件路径
ARCH_FILE_SIZE = 2048 #本地单个归档文件最大值,单位 MB
ARCH_SPACE_LIMIT = 10240 #本地归档文件总大小,0 表示无限制
如下为当 BP 配置多副本时主节点归档文件的配置方式,其它每个 BP 副节点都需要配置对应的归档文件,在配置时对应修改 RAFT_SELF_ID,ARCH_DEST,ARCH_DEST_ID 等,详细配置方式可参考数据库安装目录的 doc 下《DM8 分布计算集群》手册。检查 DMDPC 集群 BP 各个节点的归档是否配置正确。
XMAL_HB_INTERVAL = 5 #节点通信检测间隔
RAFT_HB_INTERVAL = 150 #选举心跳间隔
RAFT_VOTE_INTERVAL = 1500 #选举超时时间,三个库设置不同以尽快选出主库
RAFT_SELF_ID = 1 #多副本自身节点 ID
[ARCHIVE_RAFT1]
ARCH_TYPE = RAFT #RAFT 归档
ARCH_DEST = BP12_B #归档目标实例名
ARCH_DEST_ID = 2 #归档目标多副本节点 ID
[ARCHIVE_RAFT2]
ARCH_TYPE = RAFT #RAFT 归档
ARCH_DEST = BP12_C #归档目标实例名
ARCH_DEST_ID = 3 #归档目标多副本节点 ID
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /data/DMDPC/BP12_A/DAMENG/arch #本地归档文件路径
ARCH_FILE_SIZE = 2048 #本地单个归档文件最大值,单位 MB
ARCH_SPACE_LIMIT =10240 #本地归档文件总大小,0 表示无限制
3.5 日志检查
DMDPC 分布式集群,是由多台数据库服务器组成的。与单实例数据库相比,需要检查 MP 日志,SP 日志和 BP 日志,且集群中每一个节点的 MP 日志,SP 日志和 BP 日志都要检查,检查方法如下:
- 检查数据库 MP 日志。
MP 为 DMDPC 集群中提供元数据服务(即字典信息服务)的节点。所有 DDL 请求都会经过 SP 转发给 MP 执行,元数据信息全部存储在 MP。
MP1 日志存放在 $DM_HOME/log 下,按月生成,一般默认命名格式为“ dm_MP 节点名_日期.log”,例如如下 MP_C 日志“dm_MP_C_20230726.log”。
可以通过“grep”命令筛选检查具有 ERROR 或者 FATAL 关键字的日志,例如过滤 dm_MP_C_20230726.log 中的 ERROR 和 FATAL 信息,可参考如下命令:
cat dm_MP_C_20230726.log|grep -E "ERROR|FATAL"
若需要过滤服务器日志中 ERROR 关键字,并将结果输出至 error.log 文件中,可参考如下命令:
cat dm_MP_C_20230726.log|grep -E "ERROR|FATAL">error.log
- 检查数据库 SP 日志。
SP 为 DMDPC 集群中对外提供数据库服务的节点,负责接收用户请求并生成计划、划分子计划、按照一定规则计算并行度并调度各个子计划,并最终将执行结果返回给用户。SP 日志检查方法可参考 MP 日志检查方法。
- 检查数据库 BP 日志。
BP 为 DMDPC 集群中数据实际存储的节点,负责存储数据和接收 SP 的子任务调度指令,执行子任务,并返回结果给 SP。SP 日志检查方法可参考 MP 日志检查方法。
若存在相关问题无法解决请及时联系达梦技术服务人员。
3.6 归档检查
备份与恢复过程都依赖归档日志,归档日志是保证数据一致性和完整性的重要保障。配有归档日志的数据库系统在出现故障时丢失数据的可能性更小。对于集群,需要对归档进行定期检查。
在多副本系统中,可通过 V$ARCH_STATUS 查询归档状态信息。归档状态是由主库记录和维护的,此视图只在主库上查询有效,备库上的查询结果没有实际意义。
SELECT * FROM V$ARCH_STATUS;
该视图的相关字段含义如下:
序号 | 列 | 数据类型 | 说明 |
---|---|---|---|
1 | ARCH_TYPE | VARCHAR(256) | 归档类型。 |
2 | ARCH_DEST | VARCHAR(256) | 归档目标,本地归档和 REMOTE 归档为归档路径,其他类型为归档目标实例名。 |
3 | ARCH_STATUS | VARCHAR(256) | 归档状态,Valid 为有效状态,Invalid 为无效状态。 |
4 | ARCH_SRC | VARCHAR(256) | 对 REMOTE 归档为源实例名,对其他归档类型为本地实例名。 |
也可以通过以下 SQL 检查 raft 组的主备归档情况。
SELECT arch_src "主机",arch_dest "备机",arch_status "归档状态" FROM v$arch_status WHERE arch_type='RAFT' ORDER BY ARCH_SRC,ARCH_DEST;
归档空间检查,可使用 df -h 命令查看当前归档空间的大小以及使用情况。
3.7 表空间检查
1.表空间使用率检查
可通过以下 SQL 对集群中表空间使用率进行检查,当发现表空间使用率即 RADIO 超过 90% 时,需进行排查是否存在业务数据未删除或服务器空间不足等情况,如需要扩展表空间建议联系达梦相关技术服务团队提供技术支持。
select
sysdate ,
a.name ,
c.ip_internal ,
cast(a.total_size*32/1024/1024 as bigint) total_size,
cast(a.used_size *32/1024/1024 as bigint) used_size ,
cast(a.used_size /total_size*100 as dec(12, 2)) radio
from
v$tablespace a ,
dpc_tablespace b,
dpc_instance c
where
a.id =b.ts_id
and b.raft_id=c.raft_id
order by
radio desc;
其中 SYSDATE 表示系统时间,NAME 表示表空间名,IP_INTERNAL 表示实例内网 IP 地址,TOTAL_SIZE 表示表空间总大小单位 G,USED_SIZE 表示表空间已使用大小单位 G,RADIO 表示表空间使用率。
2.表空间和 BP 的关系检查
可以通过以下 SQL 检查表空间与 BP 节点之间的关系。
SELECT
B.NAME TS_NAME,
C.NAME BP_NAME
FROM
DPC_TABLESPACE A,
V$TABLESPACE B ,
DPC_INSTANCE C
WHERE
A.TS_ID =B.ID
AND C.RAFT_ID=A.RAFT_ID
ORDER BY
B.NAME;
通过以上可以看出表空间 TS_001 对应的 BP 节点为 BP_1 所在组及其副本(通过检查视图 V$RLOG_RAFT_INFO 发现 BP_1A 为领导者)。
3.表空间数据文件与 RAFT 组关系检查
可以通过以下 SQL 检查表空间、数据文件与 RAFT 组之间的对应关系。
SELECT
TS.NAME,
(
SELECT NAME FROM DPC_BP_RAFT A WHERE A.RAFT_ID=TS.RAFT_ID
)
BP_NAME,
DF.PATH
FROM
DPC_TABLESPACE AS TS,
V$DATAFILE AS DF
WHERE
TS.TS_ID= DF.GROUP_ID
ORDER BY
TO_NUMBER(TRANSLATE(BP_NAME, '0123456789'
||BP_NAME, '0123456789')),
NAME;
通过以上查询结果可以看出表空间为 TS_053,对应的 BP RAFT 组为 RAFT_10,数据文件路径为:“/dmdata/dmdpc2208/BP10_A/DAMENG/TS_053.DBF” 等。
3.8 集群运行状态检查
1. 集群状态检查
(1)检查 DMDPC 集群各个节点实例状态是否正常。
ps -ef|grep dms
也可以通过 DEM 查看集群连接状态是否正常,具体步骤为:
登录 DEM,第 ① 步点击资源监控,第 ② 步点击数据库。第 ③ 步检查集群各节点连接状态是否正常。
(2)登录计算节点检查是否所有 RAFT 组中实例都能够查到。
SELECT * FROM V$instance;
(3)查询当前节点的选举状态和日志提交信息及 raft 组的同步情况。
可通过检查 V$RLOG_RAFT_INFO
视图进行相关检查,在配置成多副本系统的情况下,V$RLOG_RAFT_INFO
的值才是真实有效的。可通过 STATE 和 LEADER 字段来查看实例所处的角色,如下 MP_B,BP12_A,BP3_A 为领导者;可通过 SELF_STATUS 字段来查看当前实例状态是否有效,如下实例状态为 VALID 有效状态;可通过 SELF_STATUS 查看当前节点上一次模式切换的时间,如下 MP2 上次发生切换的时间为 2024-05-26 22:46:24 等其他信息。
SELECT * FROM V$RLOG_RAFT_INFO;
其中如果 F_SEQ_ARR 字段中三个值相同,F_LSN_ARR 字段中三个值相同则表示集群同步正常,如果不同则需要进一步排查网络是否拥堵,IO 是否遇到瓶颈等。
更多详细参数信息可参考数据库安装目录的 doc 下《DM8 分布计算集群》手册中 V$RLOG_RAFT_INFO 视图。
2. 集群会话检查
通过以下 SQL 可以查看当前集群内的会话情况。
SELECT
sf_get_ep_seqno(a.rowid) raft_id,
COUNT(*) ,
b.name ,
a.port_type
FROM
v$sessions a
left join dpc_instance b
on
sf_get_ep_seqno(a.rowid)=b.RAFT_ID
WHERE
b.SYS_MODE !='STANDBY'
GROUP BY
sf_get_ep_seqno(a.rowid),
b.name ,
a.port_type
ORDER BY
RAFT_ID ;
RAFT_ID 表示系统内部 RAFT 组号,count(*) 表示会话总数,NAME 表示节点名,PORT_TYPE (连接端口类型):2 表示 TCP 连接,12 表示端口已经关闭,13 表示 UDP 连接。
四、DSC 集群健康检查
4.1 集群介绍
DM DSC 集群是一个单数据库、多实例的集群系统。数据库部署在共享存储上,供所有节点访问。多个数据库实例可以同时访问、修改同一个数据库的数据,用户可以登录集群中的任意一个数据库实例,获得完整的数据库实例数据。具有高可用性、高性能、负载均衡等特性。
4.2 网络环境检查
为了确保集群的稳定性,需要对网络环境进行检查,心跳网络对 mal 系统的影响非常大,如果网络丢包或者延迟较大,则会严重影响 mal 系统的处理能力,从而导致整个集群出现响应服务请求慢的情况。
服务器必须至少有一个网卡,使用 ifconfig
命令可查看网卡情况。集群环境建议有两块网卡,一个是业务 IP,一个是心跳 IP。DMDSC 集群建议是万兆网卡,若带宽过低,会影响数据传输和 mal 通信,网卡信息可用 ethtool
命令查看。
4.3 集群节点时间检查
集群节点时间检查是为了确保节点的时间一致,若节点时间不一致,则会影响 mal 链接,从而影响集群数据同步。可使用命令 date
查看服务器节点时间是否与当前时间符合,若时间不一致,可在 root 用户下执行 date -s
命令修改服务器时间。在正式生产环境中,建议添加 NTP 服务器进行时间同步,确保系统各节点时间保持一致。
4.4 相关参数检查
共享存储集群涉及到的配置文件主要有:dm.ini、dmdcr_cfg.ini、dmasvrmal.ini、dmdcr.ini、dmarch.ini、dmcssm.ini、dmmal.ini 等。
其中,dm.ini 可参考 实例健康检查-数据库参数检查 章节内容。本节主要介绍 dmdcr.ini 和 dmcssm.ini 文件参数配置,其他配置文件说明可参考《DM8 共享存储集群》手册。配置文件中大部分为功能性参数,只要满足集群搭建要求即可,检查时需要重点关注的参数如下:
1. dmdcr.ini 配置文件
dmdcr.ini 为共享存储集群各个进程输入参数的配置文件,并且还记录该节点在集群中的编号,可根据实际情况选择是否配置故障自动拉起,配置了自动拉起参数,可通过监视器暂时取消自动拉起配置。需要注意参数 DMDCR_ASM_RESTART_INTERVAL,DMDCR_DB_RESTART_INTERVAL,和 DMDCR_AUTO_OPEN_CHECK,详细配置如下:
未配置故障自动拉起:
[dmdba@~]# cat dmdcr.ini
DMDCR_PATH = /dev/dm/asm-dmdcr #DCR 磁盘路径
DMDCR_MAL_PATH = /dm/dmdbms/dsc_config/DSC0/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 0 #当前节点序号
DMDCR_AUTO_OPEN_CHECK = 111 #指定时间内如果节点实例未启动,DMCSS 会自动将节点踢出集群环境,单位为秒。
DMDCR_ASM_TRACE_LEVEL = 2 #指定日志级别。1:TRACE 级别;2:WARN 级别;3:ERROR 级别;4:FATAL 级别。缺省为 1。日志级别越低(参数值越小),输出的日志越详细,建议配置为2,大量的日志信息占用磁盘空间。
DMDCR_LINK_CHECK_IP = 192.168.100.4 #可选参数,第三方确认机器的 IP,确认机器为 DMDSC 集群各节点均可访问到的、DMDSC 集群环境之外的、一台独立外网机器。用于在 DMDSC 节点故障时,各 DMSERVER节点通过联通确认机器 IP 来检测外网是否畅通。
#ASM重启参数,命令行方式启动
#DMDCR_ASM_RESTART_INTERVAL = 30
#DMDCR_ASM_STARTUP_CMD = /dm/dmdbms/dsc_config/DmAsmService_DSC0 start
#DB重启参数,命令行方式启动
#DMDCR_DB_RESTART_INTERVAL = 60
#DMDCR_DB_STARTUP_CMD = /dm/dmdbms/dsc_config/DmService_DSC0 start
参数详解如下表所示:
参数名称 | 默认值 | 参数描述及建议 | 属性 |
---|---|---|---|
DMDCR_ASM_RESTART_INTERVAL | 60 | DMCSS 认定 DMASM 节点故障重启的时间间隔(取值 0~86400 s),DMCSS 只负责和 DMDCR_SEQNO 节点号相等的 DMASM 节点的故障重启,如果配置为 0,则不会执行自动拉起操作。建议值为 60。 | 静态 |
DMDCR_DB_RESTART_INTERVAL | 60 | DMCSS 认定 DMDSC 节点故障重启的时间间隔(取值 0~86400 s),DMCSS 只负责和 DMDCR_SEQNO 节点号相等的 DMDSC 节点的故障重启,如果配置为 0,则不会执行自动拉起操作。建议值为 60。 | 静态 |
如果配置了 DMDCR_LINK_CHECK_IP, 需要为 DMSERVER 、DMASMSVR(非 DMASM 镜像)和 DMASMSVRM(DASM 镜像)赋予创建 raw socket 的权限来完成联通功能。使用 ROOT 权限执行以下语句分别进行赋权:
#DMSERVER 权限:
sudo setcap cap_net_raw,cap_net_admin=eip /opt/dmdbms/bin/dmserver
#DMASMSVR 权限:
sudo setcap cap_net_raw,cap_net_admin=eip /opt/dmdbms/bin/dmasmsvr
#DMASMSVRM 权限:
sudo setcap cap_net_raw,cap_net_admin=eip /opt/dmdbms/bin/dmasmsvrm
#其中,/opt/dmdbms/bin 为 dmserver、dmasmsvr、dmasmsvrm 所在目录
配置有故障自动拉起:
[dmdba@~]$ cat dmdcr.ini
DMDCR_PATH = /dev/dm/asm-dmdcr
DMDCR_MAL_PATH = /dm/dmdbms/dsc_config/DSC0/dmasvrmal.ini
DMDCR_SEQNO = 0 #记录当前节点序号(用来获取 ASM 登录信息)
DMDCR_AUTO_OPEN_CHECK = 111
DMDCR_ASM_TRACE_LEVEL = 2
DMDCR_LINK_CHECK_IP = 192.168.100.4
##配置故障自动拉起
DMDCR_ASM_RESTART_INTERVAL = 60 #CSS 认定 ASM 故障重启的时间
DMDCR_ASM_STARTUP_CMD = /dm/dmdbms/dsc_config/DmAsmService_DSC0 start
DMDCR_DB_RESTART_INTERVAL = 60 ##CSS 认定 DSC 故障重启的时间,设置为 0 不自动拉起
DMDCR_DB_STARTUP_CMD = /dm/dmdbms/dsc_config/DmService_DSC0 start
若配置有故障自动拉起,可以通过监视器进行取消,参考如下:
[dmdba@~]$ cd $_DM_HOME/bin
#启动监视器
./dmcssm dmcssm.ini
#可以通过监视器命令,暂时关闭 ASM 和 DSC 服务的自动拉起功能。
set group_name auto restart off #group_name 为对应的组名
#可以通过监视器 help 查看监视器命令
help
更多参数详解和 DSC 监视器使用方法可参考数据库安装目录的 doc 目录下《DM8 共享存储集群》。
2. dmcssm.ini 配置文件
dmcssm.ini 是共享存储集群监视器的配置文件,其中需要注意参数 CSSM_LOG_FILE_SIZE 和 CSSM_LOG_SPACE_LIMIT,详细配置如下:
[dmdba@~]#cat dmcssm.ini
CSSM_OGUID = 210715 #用于和 DMCSS 通信校验使用,和 DMDCR_CFG.INI 中的
DCR_OGUID 值保持一致
CSSM_CSS_IP = 10.10.10.1:11286 #集群中所有 DMCSS 所在机器的 IP 地址,以及 DMCSS 的监听端口,配置格式为“IP:PORT”的形式,其中 IP 和 PORT 分别对应 DMDCR_CFG.INI 中 DMCSS 节点的 DCR_EP_HOST 和DCR_EP_PORT。
CSSM_CSS_IP = 10.10.10.2:11286
CSSM_LOG_PATH = ../log
CSSM_LOG_FILE_SIZE = 512 #单个日志文件大小,取值范围 16~2048,单位为 MB,缺省为64MB,达到最大值后,会自动生成并切换到新的日志文件中。
CSSM_LOG_SPACE_LIMIT = 2048 #日志总空间大小,取值 0 或者 256~4096,单位为 MB。缺省为0,表示没有空间限制。如果达到设定的总空间限制,会自动删除创建时间最早的日志文件。
参数详解如下表所示:
参数名称 | 默认值 | 参数描述及建议 | 属性 |
---|---|---|---|
CSSM_LOG_FILE_SIZE | 64 | 单个日志文件大小,范围 16~2048,单位为 MB, 达到最大值后,会自动生成并切换到新的日志文件中。 建议为 64 MB。 |
静态 |
CSSM_LOG_SPACE_LIMIT | 0 | 日志总空间大小,取值 0 或者 256~4096 单位为 MB, 0 表示没有空间限制,如果达到设定的总空间限制, 会自动删除创建时间最早的日志文件。建议为 2048 MB。 |
静态 |
更多参数详解可参考数据库安装目录的 doc 目录下《DM8 共享存储集群》。
4.5 集群运行状况检查
DMCSSM 监视器具有监控集群状态、打开/关闭指定组的自动拉起、强制 OPEN 指定组、启动/退出集群、集群故障处理功能,同时,还提供了一系列命令来对集群进行管理。启动监视器需要配置 dmcssm.ini 文件,输入以下命令即可打开 DMCSSM 监视器:
./dmcssm ini_path=/dm8/config/dmcssm.ini
输入 show
命令后可以监视集群的运行状态,如下图所示,is_ok 为 OK 状态表示实例正常,active 为 true 表示实例处于活动状态,inst_status 说明了实例处于开启状态,vtd_status 说明了集群处于 working 状态。
同时也可以通过 V$DSC_EP_INFO
动态视图查询实例的信息。
select * from v$DSC_EP_INFO;
更多参数详解可参考数据库安装目录的 doc 目录下《DM8 共享存储集群》。
4.6 日志检查
共享存储集群,是由多台数据库服务器组成的。与单实例数据库相比,还需要检查 CSS 日志和 ASM 日志,且集群中每一个节点的数据库运行日志、CSS 日志和 ASM 日志都要检查。
- 数据库运行日志。集群中数据库运行日志的查看方式和单实例相同,需要检查数据库服务日志、DMAP 进程日志和数据库备份日志,具体详情请参考 实例健康检查-运行日志健康检查。
- 数据库 DMCSS 日志。DMCSS 日志是数据库集群监控进程的运行日志,该日志存放在
%DM_HOME/log
,命名格式为dm_CSS 节点名_日期.log
。 - 数据库 DMASM 日志。DMASM 日志是 DM 分布式文件系统的运行日志,其中记录了 DMASM 系统的运行信息和报错信息,该日志存放在
%DM_HOME/log
,命名格式为dm_ASM 节点名_日期.log
。
对于以上日志,可以通过滤服务器日志中 ERROR 关键字的方式来判断是否有问题。例如过滤 dm_DMSERVER_202404.log 中的 ERROR 信息,并输出到 error.log 文件中,可参考如下命令:
cat dm_DMSERVER_202404.log | grep -E "ERROR|FATAL" >error.log
4.7 备份检查
备份的主要目的是数据容灾,保证数据的安全性,在数据库发生故障时,通过还原备份集,将数据恢复到可用状态,数据库备份健康检查重点在于检查备份的合理性和有效性。对于集群,需要对数据库备份进行定期检查,备份检查请参考 实例健康检查-作业检查 的内容。
4.8 归档检查
检查数据库归档配置文件是否有配置远程归档及本地归档。一般建议 DMDSC 集群中的节点,除了配置本地归档之外,再双向配置集群中所有其他节点的远程归档。检查实例的 dmarch.ini 配置:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST =DMDATA/DSC0/arch #本地归档存放路径
ARCH_FILE_SIZE = 128 #单个归档大小,单位MB
ARCH_SPACE_LIMIT = 0 #归档上限,单位MB
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE #远程归档类型
ARCH_DEST = DSC1 #远程数据库实例名
ARCH_INCOMING_PATH =DMDATA/DSC1/arch #本地存储路径
ARCH_FILE_SIZE = 128 #单个归档大小,单位MB
ARCH_SPACE_LIMIT = 0 #归档上限,单位MB
通过 V$ARCH_STATUS
动态视图可以获取归档状态的相关信息,正常情况归档状态为 VALID。
SELECT * FROM V$ARCH_STATUS;
4.9 ASM 空间使用率检查
如果使用有 ASM 文件系统,可定期通过 V$ASMGROUP
视图查看 ASM 磁盘组信息,登录任意节点,检查执行结果是否一致。可参考如下命令查看 ASM 空间使用率:
select GROUP_NAME, round((((TOTAL_SIZE-FREE_SIZE)*1.0/TOTAL_SIZE)*100),2)||'%' as 使用率 from V$ASMGROUP;
五、参考
若以上内容无法解决您的问题,可以在 达梦技术社区 提问交流。