CLS 日志服务支持远端非侵入式订阅 MySQL 二进制日志(binlog),该日志以事件形式记录了对 MySQL 数据库执行更改的所有操作。适用于对增量的数据库改动进行实时查询、分析与审计的需求场景。本文将为您介绍如何订阅 MySQL Binlog。
前提条件
已创建 MySQL 数据库且开启 ROW 模式的 Binlog 功能。
创建一个具有
REPLICATION SLAVE
、REPLICATION CLIENT
和 SELECT
权限的 MySQL 账号。操作步骤
步骤1:选择日志主题
1. 登录 日志服务控制台。
2. 在左侧导航栏中,单击概览,进入概览页面。
3. 在快速接入中,选择数据导入,单击 MySQL Binlog 数据订阅,进入订阅任务配置流程。


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


1. 登录 日志服务控制台。
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 SLAVE 、REPLICATION CLIENT 和 SELECT 。 |
密码 | 是 | 填写访问 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:检索分析
日志字段说明
固定字段
字段 | 描述 |
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 订阅任务。

