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 服務需要逐步消化 Clog 才能達到最終實時的效果。
在業務壓力可控的情況下,Binlog 轉換服務的延遲通常可以維持在 1 秒以內。然而,在特殊情況下,如數據庫存在頻繁的數據定義語言(DDL)操作或大型事務,無法保證絕對的秒級轉換延遲。
Binlog 服務的功能說明
OceanBase Binlog 服務以租戶為管理單位,不支持對數據庫、表開啟 Binlog。
OceanBase Binlog 服務與 MySQL Binlog 的 Row 格式兼容。以每一行數據的變更為最小單位進行記錄。
OceanBase MySQL 模式兼容 MySQL 的大部分數據類型,詳見 OceanBase MySQL 數據類型概述。由于 OB MySQL 的 DDL 語法與 MySQL DDL 語法存在一定的差異性,即 OB MySQL 有部分特有的拓展語法,這部分 DDL 語法可能無法解析。
說明不支持 OceanBase 數據庫 MySQL 模式內部對 ENUM、SET 類型的拓展語義實現。例如,SET 類型定義數超過 64 個、支持重復、ENUM 支持插入未定義數據(例如 '')等。
VARCHAR 類型最多支持存儲 65535 個字節的數據,VARCHAR 類型的最大長度等于 Min(最大行長度,65535)。如果 VARCHAR 類型的長度大于該值,可能導致對應表數據解析異常。
OceanBase 數據庫 MySQL 模式對 LONGBLOB 類型和 LONGTEXT 最大支持 48 MB,與 MySQL 類型存在差異。
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
連接方式:通過租戶主地址連接
版本要求:OceanBase 數據庫實例版本不小于 V3.2.4
操作步驟:
OceanBase Binlog 服務默認為關閉狀態,需要先開啟 Binlog 服務,詳情參見 開通 Binlog 日志服務。
通過 MySQL Client 連接到 OceanBase 數據庫,詳細步驟請參考 通過 MySQL 客戶端連接 OceanBase 數據庫。
連接上 OceanBase 數據庫后,在已連接的客戶端執行 MySQL Binlog 相關的命令。
執行
show binary logs
語句,查看 Binlog 日志文件列表。執行
show master status
語句,查看當前正在寫入的 Binlog 文件。執行
show binlog events
語句,查看 Binlog 文件中的具體事件信息。
通過 Canal 進行訂閱,詳細步驟請參考 QuickStart。