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 秒以内。然而,在特殊情况下,如数据库存在频繁的数据定义语言(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 日志服务。
通过 MySQL Client 连接到 OceanBase 数据库,详细步骤请参考 通过 MySQL 客户端连接 OceanBase 数据库。
连接上 OceanBase 数据库后,在已连接的客户端执行 MySQL Binlog 相关的命令。
执行
show binary logs
语句,查看 Binlog 日志文件列表。执行
show master status
语句,查看当前正在写入的 Binlog 文件。执行
show binlog events
语句,查看 Binlog 文件中的具体事件信息。
通过 Canal 进行订阅,详细步骤请参考 QuickStart。