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 轉換服務的延遲通常可以維持在 1 秒以內。然而,在特殊情況下,如資料庫存在頻繁的資料定義語言 (Data Definition Language)(DDL)操作或大型事務,無法保證絕對的秒級轉換延遲。
Binlog 服務的功能說明
OceanBase Binlog 服務以租戶為管理單位,不支援對資料庫、表開啟 Binlog。
OceanBase Binlog 服務與 MySQL Binlog 的 Row 格式相容。以每一行資料的變更為最小單位進行記錄。
OceanBase MySQL 模式相容 MySQL 的大部分資料類型,詳見 OceanBase MySQL 資料類型概述。由於 OB MySQL 的 DDL 文法與 MySQL DDL 文法存在一定的差異性,即 OB MySQL 有部分特有的拓展文法,這部分 DDL 文法可能無法解析。
說明不支援 OB MySQL 針對 ENUM、SET 所實現的拓展語義,例如:SET 定義數支援超過 64 個、支援重複、ENUM 支援插入未定義資料(比如'')等。
不支援 VARCHAR(65536) 類型。
不支援 GIS 類型。
OB 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 Log Service。
通過 MySQL Client 串連到 OceanBase 資料庫,詳細步驟請參考 通過 MySQL 用戶端串連 OceanBase 資料庫。
串連上 OceanBase 資料庫後,在已串連的用戶端執行 MySQL Binlog 相關的命令。
執行
show binary logs
語句,查看 Binlog 記錄檔列表。執行
show master status
語句,查看當前正在寫入的 Binlog 檔案。執行
show binlog events
語句,查看 Binlog 檔案中的具體事件資訊。
通過 Canal 進行訂閱,詳細步驟請參考 QuickStart。