OceanBase Binlog 服務是用於收集 OceanBase 的交易記錄並轉換為 MySQL Binlog 的服務,主要用於即時資料訂閱等情境。
背景資訊
MySQL Binlog 是實現主從複製和資料訂閱的起點,使用者可以以較低的效能和消耗來開啟 Binlog 日誌,主要用於即時資料訂閱等情境,支援使用者複用現有的 MySQL Binlog 增量解析系統來同步 OceanBase 資料庫 MySQL 相容模式的增量資料,無需進行二次開發或搭建一套新環境。使用者可以無縫地使用原本基於 MySQL 的增量資料訂閱者案,切換到OceanBase 上來。
效能限制
Binlog 的轉換服務的效能受資源配置和 Clog 解析能力的限制。目前,Binlog 支援的 Clog 日誌解析最大效能為 25MB/s,Binlog 每秒轉換率(RPS)的上限約為 50,000。如果源業務流量超過這些限制,可能會導致 Binlog 轉換服務的延遲增加。同時,Binlog 支援的最大訂閱串連數為 50,當並發的訂閱串連數超過該值時,Binlog 會拒絕該請求。在大流量、大事務情境下,Binlog 服務需要逐步消化 Clog 才能達到最終即時的效果。
在業務壓力可控的情況下,Binlog 轉換服務的延遲通常可以維持在 1 秒以內。然而,在特殊情況下,如資料庫存在頻繁的資料定義語言 (Data Definition Language)(DDL)操作或大型事務,無法保證絕對的秒級轉換延遲。
Binlog 服務的功能說明
開啟 Binlog 服務後,如果超過 7 天無訂閱串連,該服務將自動關閉。
OceanBase Binlog 服務以租戶為管理單位,不支援對資料庫、表開啟 Binlog。
OceanBase Binlog 服務與 MySQL Binlog 的 Row 格式相容。以每一行資料的變更為最小單位進行記錄。
OceanBase 資料庫 MySQL 相容模式相容 MySQL 的大部分資料類型,詳見 OceanBase MySQL 資料類型概述。由於 OceanBase 資料庫 MySQL 相容模式的 DDL 文法與 MySQL DDL 文法存在一定的差異性,即 OceanBase 資料庫 MySQL 相容模式有部分特有的拓展文法,這部分 DDL 文法可能無法解析。
說明不支援 OceanBase 資料庫 MySQL 相容模式租戶內部對 ENUM、SET 類型的拓展語義實現。例如,SET 類型定義數超過 64 個、支援重複、ENUM 支援插入未定義資料(例如 '')等。
VARCHAR 類型最多支援儲存 65535 個位元組的資料。如果 VARCHAR 類型的長度大於該值,可能導致對應表資料解析異常。
請注意:字元集的配置可能影響 VARCHAR 長度的配置。例如,utf8mb4 類型的一個字元佔用 4 個位元組,則 VARCHAR 最多支援配置長度為 16383。
OceanBase 資料庫 MySQL 相容模式租戶對 LONGBLOB 類型和 LONGTEXT 最大支援 48 MB,與 MySQL 類型存在差異。
當 OceanBase 資料庫版本為 V4.x 時,請為產生列配置 STORED 屬性。否則 Binlog 將不會轉換對應的產生列資料,可能導致下遊訂閱解析失敗或造成資料丟失的問題。
OceanBase 資料庫 MySQL 相容模式的 Binlog 協議與 MySQL 5.7 版本基本保持一致,因此其基礎特性與 MySQL Binlog 協議相差無幾,說明如下:
支援 filename + offset 與 GTID 兩種提模數式。其中,GTID 由 OceanBase Binlog 服務產生,同樣具備全域唯一性。
支援讀取全庫和全表的 Binlog 日誌。OceanBase Binlog 服務會以租戶為單位,將全部庫表的增量資料轉儲為 Binlog 日誌進行持久化儲存。
支援多個 Binlog Dump 訂閱串連,指定 [最小 Binlog 日誌位點,最新位點] 範圍間任一位點進行訂閱。
支援定期回收 Binlog 日誌。在阿里雲上開通 OceanBase Binlog 服務後,預設儲存 18 小時和 50GB 日誌,任一條件滿足則觸發日誌回收。
支援主流的 MySQL Binlog 解析生態工具(例如,FlinkCDC、Canal、MaxWell)對接 OceanBase Binlog 服務。
Binlog 具備高可用能力,發生故障時可以在分鐘層級實現自動回復,但是下遊訂閱需要具備失敗重連的能力,以避免在發生故障時訂閱斷連,且無法自動回復的問題。
如何擷取 Binlog
串連方式:通過租戶主地址串連
版本要求:OceanBase 資料庫執行個體版本不小於 V3.2.4
操作步驟:
OceanBase Binlog 服務預設為關閉狀態,需要先開啟 Binlog 服務,詳情參見 開通 Binlog Log Service。
通過 MySQL Client 串連到 OceanBase 資料庫,詳細步驟請參考 通過 MySQL 用戶端串連 OceanBase 資料庫。
串連上 OceanBase 資料庫後,在已串連的用戶端執行 MySQL Binlog 相關的命令。
執行
show binary logs語句,查看 Binlog 記錄檔列表。
執行
show master status語句,查看當前正在寫入的 Binlog 檔案。
執行
show binlog events語句,查看 Binlog 檔案中的具體事件資訊。
通過 Canal 進行訂閱,詳細步驟請參考 QuickStart。