NDB
使用一个或多个内存缓冲区的数据节点接收到的事件。有一个这样的缓冲Ndb
对象订阅表事件,这意味着通常有两个缓冲区mysqld执行二进制日志(一个缓冲模式事件,一个事件)的数据。每个缓冲区包含时代的事件。这些事件包括操作类型(插入、更新、删除)和行数据(之前和之后的图片+元数据)。
NDB
产生集群中的消息日志来描述这些缓冲区的状态。虽然这些报告出现在集群日志,他们指的是缓冲区API节点上(与大多数其他集群日志消息,所生成的数据节点)。
集群中的事件缓冲区日志报告日志使用这里所示的格式:
节点node_id:事件缓冲区状态(object_id):使用=bytes_used(percent_used% alloc) alloc =bytes_allocated(percent_alloc%的max) max =bytes_availablelatest_consumed_epoch =latest_consumed_epochlatest_buffered_epoch =latest_buffered_epochreport_reason =report_reason
字段组成这个报告列出,与描述:
node_id
:节点的ID报告源自哪里。object_id
:身份证Ndb
对象报告源自哪里。bytes_used
:所使用的缓冲区的字节数。percent_used
:比例的分配使用的字节。bytes_allocated
:分配给这个缓冲区的字节数。percent_alloc
:可用字节数的使用比例;不打印ndb_eventbuffer_max_alloc
= 0(无限)。bytes_available
:可用的字节数;这是0,如果ndb_eventbuffer_max_alloc
是0(无限)。latest_consumed_epoch
:最近消费时代完成。(在NDB API的应用程序中,这是通过调用来完成的nextEvent ()
。)latest_buffered_epoch
:时代最近缓冲缓冲区(完全)事件。report_reason
:使报告的原因。可能的原因在本节所示。
可能原因报告中描述下面的列表:
ENOUGH_FREE_EVENTBUFFER
:事件缓冲区有足够的空间。LOW_FREE_EVENTBUFFER
:事件缓冲区不足在自由空间。自由比例阈值水平触发这些报告可以通过设置调整
ndb_report_thresh_binlog_mem_usage
服务器变量。BUFFERED_EPOCHS_OVER_THRESHOLD
:是否缓冲时期的数量已经超过了阈值配置。这个数字的区别是最新的时代,已经全部收到,最近被消耗的时代(在NDB API的应用程序中,这是通过调用来完成的nextEvent ()
或nextEvent2 ()
)。报告生成的每一秒,直到缓冲时期的数量低于阈值,可以通过设置调整ndb_report_thresh_binlog_epoch_slip
服务器变量。您还可以调整阈值在NDB API应用程序中通过调用setEventBufferQueueEmptyEpoch ()
。PARTIALLY_DISCARDING
:事件缓冲区内存是精疲力竭,是100%的ndb_eventbuffer_max_alloc
已经被使用。任何部分缓冲时代缓冲完成甚至是使用超过100%,但任何新时代收到被丢弃。这意味着差距发生的事件流。COMPLETELY_DISCARDING
:没有缓冲的时代。PARTIALLY_BUFFERING
:缓冲免费比例差距已经达到阈值后,可以设置的mysql客户端使用ndb_eventbuffer_free_percent
服务器系统变量或在NDB API应用程序通过调用set_eventbuffer_free_percent ()
。新时代缓冲。时代不能完成将被丢弃的差距。COMPLETELY_BUFFERING
:所有时代收到正在缓冲,这意味着有足够的事件缓冲区内存。事件流的差距已经关闭。