21.5.2.3 群集日志中的事件缓冲区报告

NDB将一个或多个内存缓冲区用于从数据节点接收的事件。订阅 table 事件的每个Ndb对象都有一个这样的缓冲区,这意味着每个mysqld执行二进制日志记录通常有两个缓冲区(一个用于模式事件的缓冲区,一个用于数据事件的缓冲区)。每个缓冲区包含由事件组成的时期。这些事件包括操作类型(插入,更新,删除)和行数据(图像加元数据之前和之后)。

NDB在群集日志中生成消息以描述这些缓冲区的状态。尽管这些报告显示在群集日志中,但它们引用 API 节点上的缓冲区(与大多数其他群集日志消息不同,这些消息是由数据节点生成的)。这些消息及其基础的数据结构在 NDB 7.5.1 中进行了显着更改,增加了NDB_LE_EventBufferStatus2事件类型和ndb_logevent_EventBufferStatus2数据结构(请参见Ndb_logevent_type 类型)。本讨论的其余部分重点介绍基于NDB_LE_EventBufferStatus2的实现。

群集日志中的事件缓冲区日志记录报告使用以下格式:

Node node_id: Event buffer status (object_id):
used=bytes_used (percent_used% of alloc)
alloc=bytes_allocated (percent_alloc% of max) max=bytes_available
latest_consumed_epoch=latest_consumed_epoch
latest_buffered_epoch=latest_buffered_epoch
report_reason=report_reason

此处列出了构成此报告的字段,并提供了描述:

latest_consumed_epochlatest_buffered_epoch字段分别对应于 NDB 7.5.1 之前使用的旧式事件缓冲区日志记录消息的apply_gcilatest_gci字段。

下 table 描述了可能的报告原因:

LOW_FREE_EVENTBUFFER:事件缓冲区的可用空间不足。

可以通过设置ndb_report_thresh_binlog_mem_usage服务器变量来调整触发这些报告的无阈值百分比级别。

首页