NDB群集中生成的事件报告
在本节中,我们讨论NDB Cluster提供的事件日志的类型以及记录的事件的类型。
NDB群集提供两种类型的事件日志:
的群集日志,其包括所有群集节点生成的事件。群集日志是大多数情况下建议使用的日志,因为它在单个位置提供了整个群集的日志记录信息。
默认情况下,集群日志将保存到管理服务器的名为的文件(其中是管理服务器的节点ID)。
ndb_node_id_cluster.log
node_id
DataDir
集群日志记录信息也可以发送到,
stdout
或者syslog
作为保存到文件的补充,或者代替保存到文件,这由为DataDir
和LogDestination
配置参数设置的值确定。有关这些参数的更多信息,请参见“定义NDB群集管理服务器”。节点日志是每个节点本地的。
节点事件日志记录生成的输出将写入节点的文件中(节点的节点ID)。同时为管理节点和数据节点生成节点事件日志。
ndb_node_id_out.log
node_id
DataDir
节点日志仅在应用程序开发期间或调试应用程序代码时使用。
两种类型的事件日志都可以设置为记录不同的事件子集。
每个可报告事件可以根据三个不同的标准进行区分:
- 类别:这可以是以下值中的任何一个:
STARTUP
,SHUTDOWN
,STATISTICS
,CHECKPOINT
,NODERESTART
,CONNECTION
,ERROR
,或INFO
。 - 优先级:这是由数字中的一个表示从0至15包容性,其中0表示“最重要的”和15个“最重要的。”
- 严重级别:这可以是下列任一值:
ALERT
,CRITICAL
,ERROR
,WARNING
,INFO
,或DEBUG
。
可以在这些属性上过滤群集日志和节点日志。
集群日志中使用的格式如下所示:
2007-01-26 19:35:55 [MgmSrvr] INFO -- Node 1: Data usage is 2%(60 32K pages of total 2560) 2007-01-26 19:35:55 [MgmSrvr] INFO -- Node 1: Index usage is 1%(24 8K pages of total 2336) 2007-01-26 19:35:55 [MgmSrvr] INFO -- Node 1: Resource 0 min: 0 max: 639 curr: 0 2007-01-26 19:35:55 [MgmSrvr] INFO -- Node 2: Data usage is 2%(76 32K pages of total 2560) 2007-01-26 19:35:55 [MgmSrvr] INFO -- Node 2: Index usage is 1%(24 8K pages of total 2336) 2007-01-26 19:35:55 [MgmSrvr] INFO -- Node 2: Resource 0 min: 0 max: 639 curr: 0 2007-01-26 19:35:55 [MgmSrvr] INFO -- Node 3: Data usage is 2%(58 32K pages of total 2560) 2007-01-26 19:35:55 [MgmSrvr] INFO -- Node 3: Index usage is 1%(25 8K pages of total 2336) 2007-01-26 19:35:55 [MgmSrvr] INFO -- Node 3: Resource 0 min: 0 max: 639 curr: 0 2007-01-26 19:35:55 [MgmSrvr] INFO -- Node 4: Data usage is 2%(74 32K pages of total 2560) 2007-01-26 19:35:55 [MgmSrvr] INFO -- Node 4: Index usage is 1%(25 8K pages of total 2336) 2007-01-26 19:35:55 [MgmSrvr] INFO -- Node 4: Resource 0 min: 0 max: 639 curr: 0 2007-01-26 19:39:42 [MgmSrvr] INFO -- Node 4: Node 9 Connected 2007-01-26 19:39:42 [MgmSrvr] INFO -- Node 1: Node 9 Connected 2007-01-26 19:39:42 [MgmSrvr] INFO -- Node 1: Node 9: API 8.0.20-ndb-8.0.20 2007-01-26 19:39:42 [MgmSrvr] INFO -- Node 2: Node 9 Connected 2007-01-26 19:39:42 [MgmSrvr] INFO -- Node 2: Node 9: API 8.0.20-ndb-8.0.20 2007-01-26 19:39:42 [MgmSrvr] INFO -- Node 3: Node 9 Connected 2007-01-26 19:39:42 [MgmSrvr] INFO -- Node 3: Node 9: API 8.0.20-ndb-8.0.20 2007-01-26 19:39:42 [MgmSrvr] INFO -- Node 4: Node 9: API 8.0.20-ndb-8.0.20 2007-01-26 19:59:22 [MgmSrvr] ALERT -- Node 2: Node 7 Disconnected 2007-01-26 19:59:22 [MgmSrvr] ALERT -- Node 2: Node 7 Disconnected
群集日志中的每一行都包含以下信息:
- 格式的时间戳。
YYYY
-MM
-DD
HH
:MM
:SS
- 正在执行日志记录的节点的类型。在群集日志中,该值始终为
[MgmSrvr]
。 - 事件的严重性。
- 报告事件的节点的ID。
- 事件的描述。日志中最常见的事件类型是群集中不同节点之间的连接和断开连接,以及发生检查点的时间。在某些情况下,描述可能包含状态信息。
NDB群集日志记录管理命令
ndb_mgm支持许多与群集日志和节点日志有关的管理命令。在下面的清单中,node_id
表示存储节点ID或关键字ALL
,表示该命令应应用于所有群集的数据节点。
CLUSTERLOG ON
打开集群日志。
CLUSTERLOG OFF
关闭集群日志。
CLUSTERLOG INFO
提供有关群集日志设置的信息。
node_id CLUSTERLOG category=threshold
日志
category
优先级小于或等于事件threshold
在群集日志。CLUSTERLOG FILTER severity_level
切换指定的事件的集群记录
severity_level
。
下表描述了群集日志类别阈值的默认设置(对于所有数据节点)。如果事件的优先级值小于或等于优先级阈值,则会在群集日志中报告该事件。
注意将针对每个数据节点报告事件,并且可以在不同节点上将阈值设置为不同的值。
群集日志类别,具有默认阈值设置
类别 | 默认阈值(所有数据节点) |
---|---|
STARTUP | 7 |
SHUTDOWN | 7 |
STATISTICS | 7 |
CHECKPOINT | 7 |
NODERESTART | 7 |
CONNECTION | 7 |
ERROR | 15 |
INFO | 7 |
该STATISTICS
类别可以提供大量有用的数据。有关更多信息,请参见“在NDB群集管理客户端中使用CLUSTERLOG统计”。
阈值用于过滤每个类别中的事件。例如,STARTUP
除非将阈值STARTUP
设置为3或更高,否则不记录优先级为3 的事件。如果阈值为3,则仅发送优先级为3或更低的事件。
下表显示了事件严重性级别。
注意这些和Unix
syslog
级别相对应,除了LOG_EMERG
和之外LOG_NOTICE
,它们没有使用或映射。
事件严重性级别
严重级别值 | 严重程度 | 描述 |
---|---|---|
1个 | ALERT | 应立即纠正的情况,例如损坏的系统数据库 |
2 | CRITICAL | 紧急情况,例如设备错误或资源不足 |
3 | ERROR | 应纠正的条件,例如配置错误 |
4 | WARNING | 条件不是错误,但是可能需要特殊处理 |
5 | INFO | 信息性消息 |
6 | DEBUG | 调试用于NDBCLUSTER 开发的消息 |
可以打开或关闭事件严重性级别(使用CLUSTERLOG FILTER
—参见上文)。如果打开了严重性级别,则将记录优先级小于或等于类别阈值的所有事件。如果关闭了严重性级别,则不会记录属于该严重性级别的事件。
群集日志级别是基于每个订户的每个ndb_mgmd设置的。这意味着,在具有多个管理服务器的NDB群集中,CLUSTERLOG
在连接到一个管理服务器的ndb_mgm实例中使用命令只会影响该管理服务器生成的日志,而不会影响其他任何服务器。这也意味着,如果要重新启动其中一个管理服务器,则仅由该管理服务器生成的日志会受到重新启动引起的日志级别重置的影响。
NDB群集日志事件
事件日志中报告的事件报告具有以下格式:
datetime [string] severity -- message
例如:
09:19:30 2005-07-24 [NDB] INFO -- Node 4 Start phase 4 completed
本节讨论所有可报告事件,按类别和每个类别中的严重性级别排序。
在事件描述中,GCP和LCP分别表示“全局检查点”和“本地检查点”。
连接事件
这些事件与群集节点之间的连接相关。
与群集节点之间的连接相关的事件
事件 | 优先 | 严重等级 | 描述 |
---|---|---|---|
Connected | 8 | INFO | 数据节点已连接 |
Disconnected | 8 | ALERT | 数据节点断开 |
CommunicationClosed | 8 | INFO | SQL节点或数据节点连接已关闭 |
CommunicationOpened | 8 | INFO | SQL节点或数据节点连接已打开 |
ConnectedApiVersion | 8 | INFO | 使用API版本的连接 |
CHECKPOINT活动
此处显示的日志消息与检查点相关联。
与检查点关联的事件
事件 | 优先 | 严重等级 | 描述 |
---|---|---|---|
GlobalCheckpointStarted | 9 | INFO | GCP启动:REDO日志写入磁盘 |
GlobalCheckpointCompleted | 10 | INFO | GCP完成 |
LocalCheckpointStarted | 7 | INFO | LCP的开始:数据写入磁盘 |
LocalCheckpointCompleted | 7 | INFO | LCP正常完成 |
LCPStoppedInCalcKeepGci | 0 | ALERT | LCP停止 |
LCPFragmentCompleted | 11 | INFO | 片段上的LCP已完成 |
UndoLogBlocked | 7 | INFO | UNDO日志记录被阻止;缓冲区溢出 |
RedoStatus | 7 | INFO | 重做状态 |
启动事件
响应于节点或群集的启动及其成功或失败,将生成以下事件。它们还提供有关启动过程进度的信息,包括有关日志记录活动的信息。
与节点或集群启动有关的事件
事件 | 优先 | 严重等级 | 描述 |
---|---|---|---|
NDBStartStarted | 1个 | INFO | 数据节点启动阶段已启动(所有节点均已启动) |
NDBStartCompleted | 1个 | INFO | 开始阶段已完成,所有数据节点 |
STTORRYRecieved | 15 | INFO | 重新启动完成后收到的块 |
StartPhaseCompleted | 4 | INFO | 数据节点启动阶段X 已完成 |
CM_REGCONF | 3 | INFO | 节点已成功包含到集群中;显示节点,管理节点和动态ID |
CM_REGREF | 8 | INFO | 节点已被拒绝包含在集群中;由于配置错误,无法建立通信或其他问题而无法包含在群集中 |
FIND_NEIGHBOURS | 8 | INFO | 显示相邻的数据节点 |
NDBStopStarted | 1个 | INFO | 数据节点关闭启动 |
NDBStopCompleted | 1个 | INFO | 数据节点关闭完成 |
NDBStopForced | 1个 | ALERT | 强制关闭数据节点 |
NDBStopAborted | 1个 | INFO | 无法正常关闭数据节点 |
StartREDOLog | 4 | INFO | 新的重做日志开始;GCI保留X ,最新可恢复的GCIY |
StartLog | 10 | INFO | 新日志开始;日志部分X ,启动MB Y ,停止MB Z |
UNDORecordsExecuted | 15 | INFO | 撤消记录已执行 |
StartReport | 4 | INFO | 报告开始 |
LogFileInitStatus | 7 | INFO | 日志文件初始化状态 |
LogFileInitCompStatus | 7 | INFO | 日志文件完成状态 |
StartReadLCP | 10 | INFO | 开始读取本地检查点 |
ReadLCPComplete | 10 | INFO | 读取完成本地检查点 |
RunRedo | 8 | INFO | 运行重做日志 |
RebuildIndex | 10 | INFO | 重建索引 |
NODERESTART活动
重新启动节点时会生成以下事件,这些事件与节点重新启动过程的成功或失败有关。
与重启节点有关的事件
事件 | 优先 | 严重等级 | 描述 |
---|---|---|---|
NR_CopyDict | 7 | INFO | 完成字典信息的复制 |
NR_CopyDistr | 7 | INFO | 完成复制分发信息 |
NR_CopyFragsStarted | 7 | INFO | 开始复制片段 |
NR_CopyFragDone | 10 | INFO | 完成复制片段 |
NR_CopyFragsCompleted | 7 | INFO | 完成复制所有片段 |
NodeFailCompleted | 8 | ALERT | 节点故障阶段已完成 |
NODE_FAILREP | 8 | ALERT | 报告节点发生故障 |
ArbitState | 6 | INFO | 报告是否找到仲裁员;寻求仲裁员时有七种不同的可能结果,如下所示:
|
ArbitResult | 2 | ALERT | 报告仲裁员结果;此处列出了八种不同的仲裁尝试可能结果:
|
GCP_TakeoverStarted | 7 | INFO | GCP接管开始 |
GCP_TakeoverCompleted | 7 | INFO | GCP收购完成 |
LCP_TakeoverStarted | 7 | INFO | LCP收购开始 |
LCP_TakeoverCompleted | 7 | INFO | LCP收购完成(状态=X ) |
ConnectCheckStarted | 6 | INFO | 连接检查开始 |
ConnectCheckCompleted | 6 | INFO | 连接检查完成 |
NodeFailRejected | 6 | ALERT | 节点故障阶段失败 |
统计活动
以下事件具有统计性质。它们提供信息,例如事务处理和其他操作的数量,各个节点发送或接收的数据量以及内存使用情况。
具有统计性质的事件
事件 | 优先 | 严重等级 | 描述 |
---|---|---|---|
TransReportCounters | 8 | INFO | 报告事务统计信息,包括事务数,提交,读取,简单读取,写入,并发操作,属性信息和中止 |
OperationReportCounters | 8 | INFO | 操作次数 |
TableCreated | 7 | INFO | 报告已创建表的数量 |
JobStatistic | 9 | INFO | 平均内部作业调度统计 |
ThreadConfigLoop | 9 | INFO | 线程配置循环数 |
SendBytesStatistic | 9 | INFO | 发送到节点的平均字节数X |
ReceiveBytesStatistic | 9 | INFO | 从节点接收的平均字节数X |
MemoryUsage | 5 | INFO | 数据和索引内存使用率(80%,90%和100%) |
MTSignalStatistics | 9 | INFO | 多线程信号 |
SCHEMA活动
这些事件与NDB群集架构操作有关。
与NDB群集架构操作有关的事件
事件 | 优先 | 严重等级 | 描述 |
---|---|---|---|
CreateSchemaObject | 8 | INFO | 创建对象的架构 |
AlterSchemaObject | 8 | INFO | 模式对象已更新 |
DropSchemaObject | 8 | INFO | 架构对象已删除 |
错误事件
这些事件与群集错误和警告有关。这些中的一个或多个的存在通常表明发生了重大故障或故障。
与群集错误和警告有关的事件
事件 | 优先 | 严重等级 | 描述 |
---|---|---|---|
TransporterError | 2 | ERROR | 转运错误 |
TransporterWarning | 8 | WARNING | 运输车警告 |
MissedHeartbeat | 8 | WARNING | 节点X 错过的心跳数Y |
DeadDueToHeartbeat | 8 | ALERT | 由于缺少心跳,节点X 宣布“死机” |
WarningEvent | 2 | WARNING | 一般警告事件 |
SubscriptionStatus | 4 | WARNING | 更改订阅状态 |
INFO活动
这些事件提供有关群集状态以及与群集维护相关的活动的常规信息,例如日志记录和心跳传输。
信息事件
事件 | 优先 | 严重等级 | 描述 |
---|---|---|---|
SentHeartbeat | 12 | INFO | 发送心跳 |
CreateLogBytes | 11 | INFO | 创建日志:日志部分,日志文件,大小(MB) |
InfoEvent | 2 | INFO | 一般信息活动 |
EventBufferStatus | 7 | INFO | 事件缓冲区状态 |
EventBufferStatus2 | 7 | INFO | 改进的事件缓冲区状态信息 |
注意
SentHeartbeat
仅当VM_TRACE
启用NDB群集编译时,事件才可用。
SINGLEUSER活动
这些事件与进入和退出单用户模式相关。
与单用户模式有关的事件
事件 | 优先 | 严重等级 | 描述 |
---|---|---|---|
SingleUser | 7 | INFO | 进入或退出单用户模式 |
备份事件
这些事件提供有关正在创建或还原的备份的信息。
备份事件
事件 | 优先 | 严重等级 | 描述 |
---|---|---|---|
BackupStarted | 7 | INFO | 备份开始 |
BackupStatus | 7 | INFO | 备份状态 |
BackupCompleted | 7 | INFO | 备份完成 |
BackupFailedToStart | 7 | ALERT | 备份无法启动 |
BackupAborted | 7 | ALERT | 备份被用户中止 |
RestoreStarted | 7 | INFO | 开始从备份还原 |
RestoreMetaData | 7 | INFO | 恢复元数据 |
RestoreData | 7 | INFO | 恢复数据 |
RestoreLog | 7 | INFO | 恢复日志文件 |
RestoreCompleted | 7 | INFO | 从备份完成还原 |
SavedEvent | 7 | INFO | 活动已保存 |
在NDB群集管理客户端中使用CLUSTERLOG统计
该NDB
管理客户端的CLUSTERLOG STATISTICS
命令可以提供许多可在其输出的统计数据。事务协调器(TC)和本地查询处理程序(LQH)以5秒的报告间隔更新提供有关集群状态信息的计数器,并将其写入集群日志。
交易协调员统计信息。每个事务都有一个事务协调器,可通过以下方法之一选择事务协调器:
- 以循环方式
- 通过通讯接近
- 通过在事务开始时提供数据放置提示
注意您可以使用
ndb_optimized_node_selection
系统变量来确定从给定的SQL节点开始的事务使用哪种TC选择方法。
同一事务中的所有操作都使用同一事务协调器,该事务协调器报告以下统计信息:
反算。这是使用此TC作为事务协调器的最后间隔中开始的事务数。在报告时间间隔结束时,这些事务中的任何一个都可能已提交,已中止或保持未提交状态。
注意
事务不会在TC之间迁移。
- 提交计数。这是在上一个报告间隔中使用此TC作为事务协调器进行的事务的数量。由于在此报告间隔中提交的某些事务可能已在先前的报告间隔中开始,因此可能
Commit count
大于Trans count
。 - 读取计数。这是在最后一次报告间隔中使用此TC作为事务协调器进行的主键读取操作的数量,包括简单读取。此计数还包括作为唯一索引操作的一部分执行的读取。唯一索引读取操作会生成2个主键读取操作-1个用于隐藏的唯一索引表,而1个用于在其上进行读取的表。
- 简单读取计数。这是在上一个报告间隔中使用此TC作为事务协调器进行的简单读取操作的数量。
写计数。这是在上次报告间隔中使用此TC作为事务协调器进行的主键写入操作的数量。这包括所有插入,更新,写入和删除,以及作为唯一索引操作的一部分执行的写入。
注意
唯一索引更新操作可以在索引表和基表上生成多个PK读取和写入操作。
AttrInfoCount。这是在最后一个报告间隔中使用此TC作为事务协调器进行主键操作时接收到的32位数据字的数量。对于读取,这与请求的列数成正比。对于插入和更新,这与写入的列数及其数据大小成正比。对于删除操作,通常为零。
唯一索引操作会生成多个PK操作,因此会增加此计数。但是,此处不计入发送来描述PK操作本身的数据字和发送的密钥信息。发送来描述要读取扫描的列或描述ScanFilter的属性信息也不计入
AttrInfoCount
。并发操作。这是使用该TC作为事务协调器的主键或扫描操作的数量,这些操作在上次报告时间间隔内已开始但尚未完成。操作在启动时递增此计数器,在完成时递减。这在事务提交后发生。肮脏的读写操作以及失败的操作都会使此计数器递减。
该最大值
Concurrent Operations
可以具有是操作一个TC块可以支持的最大数量;目前,这是(2 * MaxNoOfConcurrentOperations)+ 16 + MaxNoOfConcurrentTransactions
。(有关这些配置参数的更多信息,请参见“定义NDB群集数据节点”中的“事务参数”部分。)- 中止计数。这是在上次报告间隔期间使用此TC作为事务协调器的事务数量。由于在上一个报告间隔中中止的某些事务可能已经在上一个报告间隔中开始,
Abort count
因此有时可能大于Trans count
。 - 扫描。这是在上一个报告时间间隔内使用此TC作为事务协调器进行的表扫描的次数。这不包括范围扫描(即有序索引扫描)。
- 范围扫描。这是在上一个报告间隔内使用此TC作为事务协调器进行的有序索引扫描的次数。
- 本地读取。这是在还保存记录的主副本的节点上使用事务处理协调器执行的主键读取操作的数量。该计数也可以从表中的
LOCAL_READS
计数器获得ndbinfo.counters
。 - 本地写入。这包含在还保存记录的主副本的节点上使用事务处理协调器执行的主键读取操作的数量。该计数也可以从表中的
LOCAL_WRITES
计数器获得ndbinfo.counters
。
本地查询处理程序统计信息(操作)。每个本地查询处理程序块有1个集群事件(即每个数据节点进程1个)。操作记录在LQH中,操作所基于的数据将驻留在该位置。
注意单个事务可以对存储在多个LQH块中的数据进行操作。
该Operations
统计信息提供了该LQH块在最后报告间隔中执行的本地操作的数量,并包括所有类型的读取和写入操作(插入,更新,写入和删除操作)。这也包括用于复制写入的操作。例如,在2副本群集中,对主副本的写入记录在主LQH中,而对备份的写入将记录在备份LQH中。唯一键操作可能会导致多个本地操作;然而,这并不包括如表扫描或有序索引扫描,这不被计数的结果而产生的局部操作。
进程调度程序统计信息。除了由事务协调器和本地查询处理程序报告的统计信息之外,每个ndbd进程还具有一个调度程序,该调度程序还提供与NDB群集性能有关的有用指标。该调度程序在无限循环中运行;在每个循环中,调度程序执行以下任务:
- 将来自套接字的所有传入消息读入作业缓冲区。
- 检查是否有定时消息要执行;如果是这样,请将它们也放入作业缓冲区。
- 执行(循环)作业缓冲区中的所有消息。
- 发送通过在作业缓冲区中执行消息而生成的所有分布式消息。
- 等待任何新的传入消息。
流程调度程序统计信息包括以下内容:
- 平均循环计数器。这是上一个列表中第三步执行的循环数。随着TCP / IP缓冲区利用率的提高,此统计信息的大小也会增加。您可以在添加新的数据节点进程时使用它来监视性能的变化。
- 平均发送大小和平均接收大小。这些统计信息使您能够评估节点之间的写入和读取效率。值以字节为单位。较高的值表示发送或接收的每字节成本较低;最大值为64K。
要记录所有群集日志统计信息,可以在NDB
管理客户端中使用以下命令:
ndb_mgm>ALL CLUSTERLOG STATISTICS =15
注意将阈值设置为
STATISTICS
15会导致群集日志变得非常冗长,并且大小会迅速增长,与群集节点的数量和NDB群集中的活动量成正比。
有关与日志和报告有关的NDB群集管理客户端命令的更多信息,请参见“ NDB群集日志管理命令”。