订阅 MySQL Binlog

最近更新时间:2025-07-08 16:43:12

我的收藏
CLS 日志服务支持远端非侵入式订阅 MySQL 二进制日志(binlog),该日志以事件形式记录了对 MySQL 数据库执行更改的所有操作。适用于对增量的数据库改动进行实时查询、分析与审计的需求场景。本文将为您介绍如何订阅 MySQL Binlog。

前提条件

已创建 MySQL 数据库且开启 ROW 模式的 Binlog 功能。
创建一个具有 REPLICATION SLAVEREPLICATION CLIENTSELECT 权限的 MySQL 账号。

操作步骤

步骤1:选择日志主题

创建新的日志主题
使用现有的日志主题
2. 在左侧导航栏中,单击概览,进入概览页面。
3. 快速接入中,选择数据导入,单击 MySQL Binlog 数据订阅,进入订阅任务配置流程。



4. 创建日志主题页面,根据您的实际需求,输入日志主题名称,配置日志保存时间等信息,然后点击下一步



2. 在左侧导航栏中,单击日志主题,选择需要投递的日志主题,单击日志主题名称,进入日志主题详情页面。
3. 选择采集配置页签,在 MySQL Binlog 订阅配置栏下单击新增,进入订阅任务配置流程。




步骤2:配置 MySQL

配置 MySQL 步骤中,配置如下参数:



参数
是否必填
说明
MySQL 类型
目标订阅的 MySQL 类型,当前支持:
自建 MySQL
MySQL 实例
若 MySQL 类型为腾讯云数据库 MySQL 腾讯云 TDSQL-C MySQL,可通过下拉选项选择需要订阅的目标云上 MySQL 实例。
注意:
当前仅支持选择与日志主题相同地域的云上 MySQL 实例,若需订阅不同地域 MySQL 实例的 Binlog,MySQL 类型请选择自建 MySQL,并通过公网订阅 Binlog。
访问方式
若 MySQL 类型为自建 MySQL,支持选择通过内网地址或公网地址访问您的 MySQL。
所属网络
若 MySQL 类型为自建 MySQL,且访问方式为通过内网地址访问,您需指定 MySQL 实例所在的 VPC 网络。
注意:
仅支持与目标日志主题所在地域相同的 VPC 网络。
网络服务类型
若 MySQL 类型为自建 MySQL,且访问方式为通过内网地址访问,需指定目标 MySQL 的网络服务类型:
若您的 MySQL 需通过 CLB 访问,请选择 CLB。
若您的 MySQL 所在服务器可直接访问,请选择 CVM。
内网/公网访问地址
若 MySQL 类型为自建 MySQL,基于您选择访问方式,填写 MySQL 的内网访问地址或公网访问地址。
MySQL 端口
若 MySQL 类型为自建 MySQL,填写 MySQL 的端口。
用户名
填写访问 MySQL 的用户名。
注意:
账号需开启以下权限:REPLICATION SLAVEREPLICATION CLIENTSELECT
密码
填写访问 MySQL 的密码。

步骤3:配置订阅规则

配置订阅规则步骤中,配置如下参数:



参数
是否必填
说明
订阅规则名称
指定当前订阅规则的名称。
起始位置
指定 Binlog 订阅的起始位置。支持通过以下3种方式定义起始位置:
最新位置:从最新位置开始采集 Binlog。
指定位置:从指定的位置开始采集 Binlog。
指定 GTID:从指定的 GTID(事务 ID)位置开始采集 Binlog。
Binlog 文件名
若起始位置选择为指定位置,需指定 Binlog 的文件名,例如:mysql-bin.000005。
开始的 Binlog 位置
若起始位置选择为指定位置,需指定在 Binlog 文件中开始采集的位置。例如:需要采集 mysql-bin.000005中的第 N 条日志的起始下标,则指定位置为第 N-1条日志的 position+size(position 是 Binlog 日志在 Binlog 文件中的起始下标,size 是该条 Binlog 日志大小)。若需要从文件的开头进行采集,指定位置为0。
注意:
请确保填写位置正好为一条 Binlog 日志的起始下标,否则可能导致订阅失败。
开始的 GTID
若起始位置选择为指定 GTID,需指定起始的 GTID(事务 ID)。
事件类型
需要采集的 Binlog 事件类型,支持以下4种事件类型:
DDL:数据定义语言
Insert:插入
Update:更新
Delete:删除
事件元数据
支持勾选以下6种 Binlog 相关元数据与日志一起上传:
log_name:Binlog 文件名
position:Binlog 日志在 Binlog 文件中的起始下标
size:Binlog 日志大小
server_id:Slave ID
gtid:事务 ID
task_id:当前订阅任务的 ID
注意:
DDL 事件的 Binlog 不支持 size 元数据。
时间戳来源
支持选择以下2种时间作为所采集 Binlog 日志的时间戳:
采集时间:Binlog 日志被采集的时间。
事件时间:Binlog 日志对应的事件发生时间。
数据库表白名单
开启后可采集指定数据库以及数据库表,关闭则代表采集所有的数据库以及数据库表。支持配置多个白名单,每个白名单需配置以下信息:
数据库名称:需要采集的 Binlog 所关联的数据库名称。
数据库表:需要采集的 Binlog 所关联的数据库表名,支持填写多个。
注意:
DDL 事件的 Binlog 日志采集不受白名单限制。
数据库黑名单
开启后可忽略不采集指定数据库以及数据库表。支持配置多个黑名单,每个黑名单需配置以下信息:
数据库名称:需要忽略不采集的 Binlog 所关联的数据库名称。
数据库表:需要忽略不采集的 Binlog 所关联的数据库表名,支持填写多个。
注意:
DDL 事件的 Binlog 日志采集不受名单限制。
平铺时间数据
若开启,会将不同的事件拆分为多条日志,并在每条日志中对被操作的字段进行平铺。例如:在数据库操作中执行了两次操作,一次更新 a 和 b 字段,一次更新 d 和 e 字段,则会生成两条日志,分别的值为 a:xxx, old_a:xxx, b:xxx, old_b:xxx 和 d:xxx, old_d:xxx, e:xxx, old_e:xxx。
若关闭,会将事件数据以数组+JSON格式集中打包到 old_data 和 data 两个字段中。例如: 在数据库操作中执行了两次操作,一次更新 a 和 b 字段,一次更新 d 和 e 字段,日志值为 old_data:[{a:xxx,b:xxx}, {d:xxx,e:xxx}], data:[{a:xxx,b:xxx}, {d:xxx,e:xxx}]。
预览 Binlog
单击后将从数据库中获取第一条符合订阅类型的 Binlog 日志,展示相应的内容。

步骤4:索引配置

1. 单击下一步,进入“索引配置”页面。
2. 在“索引配置”页面,设置如下信息。配置详情请参考 索引配置

注意:
检索必须开启索引配置,否则无法检索。

步骤5:检索分析

至此,您已完成 MySQL Binlog 订阅的配置,下一步即可开始使用日志的检索与分析,详情请参见 检索分析

日志字段说明

固定字段

字段
描述
db
数据库名称
table
表名称
query
query
type
事件类型
after
当 type 为 insert、update、delete 时,通过 json 包裹所有受到影响的字段以及结果值
before
当 type 为 update 时,通过 json 包裹所有受影响的字段以及影响产生前的值
errorCode
当 type 为 DDL 时,展示执行 errorcode
executionTime
当 type 为 DDL 时,展示执行耗时

元数据字段

说明:
需在 Binlog 订阅规则中指定后才会上传。
字段
描述
log_name
Binlog 文件名
position
Binlog 日志在 Binlog 文件中的起始下标
size
Binlog 日志大小
server_id
Slave ID
gtid
事务 ID
task_id
订阅规则任务 ID

其他操作

管理订阅任务

完成 MySQL Binlog 订阅任务配置后,您可在日志主题详情页的采集配置中查看并管理所有已创建的 MySQL Binlog 订阅任务。