首批通过分布式安全可靠测评,为关键业务系统打造
概述
更新时间:2026-05-14 14:28:04
OB Cloud 云数据库的 Binlog 服务是用于收集 OceanBase 数据库的 Clog(Commit Log)并转换为 MySQL Binlog 的服务,主要用于实时数据订阅等场景。
背景信息
MySQL Binlog 是实现主从复制和数据订阅的起点,您可以以较低的性能和消耗来开启 Binlog 日志,并支持您复用现有的 MySQL Binlog 增量解析系统来同步 OceanBase 数据库 MySQL 兼容模式租户的增量数据,无需进行二次开发或搭建一套新环境。您可以无缝地使用原本基于 MySQL 的增量数据订阅方案,切换到 OB Cloud 上来。
注意
OceanBase 提供的 Binlog 服务暂不适用于主备搭建和增量恢复等场景。
限制说明
性能限制
在业务压力可控的情况下,Binlog 转换服务的延迟通常可以维持在 1 秒以内。然而,在特殊情况下,如数据库存在频繁的数据定义语言(DDL)操作或大型事务,无法保证绝对的秒级转换延迟。
版本要求
接入 Binlog 服务对各服务的版本有以下要求:
OBServer V3.x 版本要求不低于 V3.2.4.4,V4.x 版本要求不低于 V4.1.0.1。
OBProxy 版本要求不低于 V4.2.1。
Binlog 服务版本要求高于 V2.3.0。
说明
- Binlog 服务与 OBProxy 版本之间存在协作关系。
- 通过 OBProxy 连接 OceanBase Cloud 后,才能获取 Binlog 数据。
- OBProxy 需要满足版本要求。
- 越高版本的 Binlog 服务提供的能力越多,并对以往版本的已知问题进行修复。因此,建议选择最新的 Binlog 服务版本。
SQL 兼容性
OceanBase 数据库 MySQL 兼容模式租户兼容 MySQL 的大部分数据类型,详情请参见 OceanBase MySQL 数据类型概述。由于 OceanBase 数据库 MySQL 兼容模式租户的 DDL 语法与 MySQL DDL 语法存在一定的差异性,即 OceanBase 数据库 MySQL 兼容模式租户有部分特有的拓展语法,这部分 DDL 语法可能无法解析。
数据类型
以下 OceanBase 数据库 MySQL 兼容模式租户的超集定义语义在 MySQL Binlog 协议中无法表达。
不支持 OceanBase 数据库 MySQL 兼容模式租户内部对 ENUM、SET 类型的拓展语义实现。例如,SET 类型定义数超过 64 个、支持重复、ENUM 支持插入未定义数据(例如 '')等。
VARCHAR 类型最多支持存储 65535 个字节的数据。如果 VARCHAR 类型的长度大于该值,可能导致对应表数据解析异常。
注意
字符集的配置可能影响 VARCHAR 长度的配置。例如,utf8mb4 类型的一个字符占用 4 个字节,则 VARCHAR 最多支持配置长度为 16383。
OceanBase 数据库 MySQL 兼容模式租户对 LONGBLOB 类型和 LONGTEXT 最大支持 48 MB,与 MySQL 类型存在差异。
功能说明
Binlog 服务与 MySQL Binlog 的 Row 格式兼容。以每一行数据的变更为最小单位进行记录。
当 OceanBase 数据库版本为 V4.x 时,请为生成列配置 STORED 属性。否则 Binlog 将不会转换对应的生成列数据,可能导致下游订阅解析失败或造成数据丢失的问题。
OceanBase 数据库 MySQL 兼容模式租户的 Binlog 协议与 MySQL 数据库 V5.7 基本保持一致,基础特性说明如下:
支持 filename + offset 与 GTID 两种提取模式。其中,GTID 由 OceanBase 数据库 MySQL 兼容模式租户的 Binlog 服务生成,同样具备全局唯一性。
采用 server-id 进行区分。在当前单副本架构下,server-id 保持固定;在支持集群化后,可能有不同的 server-id。
支持读取全库和全表的 Binlog 日志。OceanBase 数据库 MySQL 兼容模式租户的 Binlog 服务会以租户为单位,将全部库表的增量数据转储为 Binlog 日志进行持久化存储。
支持多个 Binlog Dump 订阅连接,指定 [最小 Binlog 日志位点,最新位点] 范围间任一位点进行订阅。
支持主流的 MySQL Binlog 解析生态工具(例如,flinkcdc、Canal、MaxWell)对接 Binlog 服务。
Binlog 具备高可用能力,发生故障时可以在分钟级别实现自动恢复,但是下游订阅方(Downstream Subscriber)需要具备失败重连的能力,以避免在发生故障时订阅断连,且无法自动恢复的问题。
存量数据同步说明
Binlog 服务只提供增量数据同步服务,但 OceanBase 数据库 MySQL 兼容模式租户的数据同步到下游,可能也会涉及到存量数据的同步。下述对存量同步阶段一些常见项进行说明:
只支持增量快照读的方式。
不支持锁表快照表、FLUSH TABLES WITH READ LOCK。
支持设置 MySQL 类型
interactive_timeout、warning_count超时时间参数。支持设置
heart.interval心跳超时参数。支持并行拉取存量数据(前提是 MySQL 同步组件具备该能力)。
获取 Binlog 日志
连接方式:通过租户主地址连接。操作步骤如下:
Binlog 服务默认为关闭状态,您需要先购买 Binlog 服务。详情请参见 购买 Binlog 服务。
通过 MySQL Client 连接到 OceanBase 数据库。详情请参见 通过 MySQL 客户端连接 OceanBase 租户。
连接上 OceanBase 数据库后,在已连接的客户端执行 MySQL Binlog 相关的命令。
执行
show binary logs命令,查看 Binlog 日志文件列表。
执行
show master status命令,查看当前正在写入的 Binlog 文件。
执行
show binlog events语句,查看 Binlog 文件中的具体事件信息。
订阅 Binlog 日志。
用户的 MySQL Binlog 生态工具通过 OBProxy 发送指定租户的 Binlog Dump 命令,转发给 Binlog 服务。
Binlog 服务接收到 Binlog Dump 命令后,在内部开启 Binlog Dump 线程读取指定租户的 Binlog 日志文件,再经由 OBProxy 转发给下游。