文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  叢集日誌中的事件緩衝區報告

25.6.2.3 叢集日誌中的事件緩衝區報告

NDB 使用一個或多個記憶體緩衝區來儲存從資料節點接收的事件。每個訂閱表格事件的 Ndb 物件都有一個這類的緩衝區,這表示執行二進位日誌的每個 mysqld 通常會有兩個緩衝區(一個用於綱要事件,另一個用於資料事件)。每個緩衝區都包含由事件組成的 epoch。這些事件包含操作類型(插入、更新、刪除)和資料列資料(之前和之後的影像加上中繼資料)。

NDB 會在叢集日誌中產生訊息,以描述這些緩衝區的狀態。雖然這些報告會出現在叢集日誌中,但它們是指 API 節點上的緩衝區(不同於大多數其他由資料節點產生的叢集日誌訊息)。

叢集日誌中的事件緩衝區日誌報告使用這裡顯示的格式

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

以下列出組成此報告的欄位及其說明

  • node_id:報告來源的節點 ID。

  • object_id:報告來源的 Ndb 物件 ID。

  • bytes_used:緩衝區使用的位元組數。

  • percent_used:已使用配置位元組的百分比。

  • bytes_allocated:配置給此緩衝區的位元組數。

  • percent_alloc:已使用可用位元組的百分比;如果 ndb_eventbuffer_max_alloc 等於 0(無限制),則不會列印。

  • bytes_available:可用的位元組數;如果 ndb_eventbuffer_max_alloc 為 0(無限制),則此值為 0。

  • latest_consumed_epoch:最近完成使用的 epoch。(在 NDB API 應用程式中,這是透過呼叫 nextEvent() 完成的。)

  • latest_buffered_epoch:最近在事件緩衝區中緩衝(完整)的 epoch。

  • report_reason:產生報告的原因。稍後在本節中會顯示可能的原因。

以下清單中說明報告的可能原因

  • ENOUGH_FREE_EVENTBUFFER:事件緩衝區有足夠的空間。

    LOW_FREE_EVENTBUFFER:事件緩衝區的可用空間即將用盡。

    觸發這些報告的臨界值可用百分比層級可透過設定 ndb_report_thresh_binlog_mem_usage 伺服器變數來調整。

  • BUFFERED_EPOCHS_OVER_THRESHOLD:緩衝的 epoch 數是否已超過設定的臨界值。此數字是完整接收的最新 epoch 與最近使用(在 NDB API 應用程式中,這是透過呼叫 nextEvent()nextEvent2() 完成的)的 epoch 之間的差異。此報告會每秒產生一次,直到緩衝的 epoch 數低於臨界值為止,臨界值可透過設定 ndb_report_thresh_binlog_epoch_slip 伺服器變數來調整。您也可以在 NDB API 應用程式中透過呼叫 setEventBufferQueueEmptyEpoch() 來調整臨界值。

  • PARTIALLY_DISCARDING:事件緩衝區記憶體已耗盡,也就是說,已使用 100% 的 ndb_eventbuffer_max_alloc。任何部分緩衝的 epoch 都會緩衝至完成,即使使用量超過 100%,但接收到的任何新 epoch 都會被捨棄。這表示事件串流中發生間隔。

  • COMPLETELY_DISCARDING:沒有緩衝任何 epoch。

  • PARTIALLY_BUFFERING:間隔後的緩衝區可用百分比已上升至臨界值,可以使用 mysql 用戶端中的 ndb_eventbuffer_free_percent 伺服器系統變數或在 NDB API 應用程式中透過呼叫 set_eventbuffer_free_percent() 來設定此臨界值。新的 epoch 已緩衝。由於間隔而無法完成的 epoch 會被捨棄。

  • COMPLETELY_BUFFERING:所有接收到的 epoch 都正在緩衝,這表示有足夠的事件緩衝區記憶體。事件串流中的間隔已關閉。