订阅 MySQL Binlog

最近更新时间:2024-06-24 11:35:42

我的收藏
CLS 日志服务支持远端非侵入式订阅 MySQL 二进制日志(binlog),该日志以事件形式记录了对 MySQL 数据库执行更改的所有操作。

使用场景

该日志适用于对增量的数据库改动进行实时查询、分析与审计的需求场景。

前提条件

已创建 MySQL 数据库且开启 ROW 模式的 Binlog 功能。

操作步骤

步骤:选择日志主题

如果您想选择新的日志主题,可执行如下操作:
2. 在左侧导航栏中,单击概览,进入概览页面。
3. 快速接入中,选择数据导入,单击 MySQL Binlog 订阅,进入订阅任务配置流程。



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



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




步骤二:配置 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 的用户名
密码
填写访问 MySQL 的密码

步骤三:配置订阅规则

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



参数
是否必填
说明
订阅规则名称
指定当前订阅规则的名称
起始位置
指定 Binlog 订阅的起始位置。支持通过以下3种方式定义起始位置:
最新位置:从最新位置开始采集 Binlog
指定位置:从指定的位置开始采集 Binlog
指定 GTID:从指定的 GTID (事务 ID) 位置开始采集 Binlog
Binlog 文件名
若起始位置选择为指定位置,需指定 Binlog 的文件名,例如:mysql-bin.000005
开始的 Binlog 位置
若起始位置选择为指定位置,需指定从 Binlog 文件中的那个位置开始采集, 例如:需要采集 mysql-bin.000005 中的第 N 条日志的起始下标, 则指定位置为第 N-1 条日志的 position+size 。若需要从文件的开头进行采集,指定位置为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 日志进行展示。

步骤四:索引配置

索引配置页面,设置如下信息。



索引状态:确认是否开启。
注意
若要对日志进行检索,索引状态需未开启,否则无法检索日志。
全文索引:全文索引将日志全文整体切分为多个分词进行索引构建,检索时直接通过关键词进行检索(即全文检索),例如使用error检索所有出现过 error 的日志。
配置项
功能描述
全文分词符
对原始日志进行分词的字符集合,仅支持英文符号,控制台默认分词符为@&?|#()='",;:<>[]{}/ \\n\\t\\r\\\\
大小写敏感
检索时是否对大小写敏感。例如日志为 Error,若大小写敏感,则使用 error 无法检索到该条日志。
包含中文
日志中包含中文且需要对中文进行检索时可开启该功能。例如日志为“用户登录接口超时”,若未开启该功能,搜索"超时"无法检索到该日志,只有完整地搜索"用户登录接口超时"才能检索到该日志,开启该功能后便可通过搜索"超时"检索到该日志。
键值索引:键值索引将原始日志按字段(即 key:value)分别切分为多个分词进行索引构建,检索时可基于键值方式进行检索(即键值检索),例如使用type:ddl AND db:test检索事件为 DDL 且事件关联的数据库名为 test 的日志。
配置项
功能描述
字段名称
字段名称,单个日志主题键值索引最多可添加300个字段。仅支持字母、数字、下划线和-./@,且不能以下划线开头。
Binlog 日志可配置键值索引的字段请参考 Binlog日志字段说明
字段类型
字段的数据类型,包括 text、long、double 三种类型。
text 类型支持使用通配符进行模糊检索,不支持范围比较。
long、double 类型支持范围比较,不支持模糊检索。
分词符
对字段值进行分词的字符集合,仅支持英文符号,控制台默认分词符为@&?|#()='",;:<>[]{}/ \\n\\t\\r\\\\
包含中文
字段中包含中文且需要对中文进行检索时可开启该功能。例如日志为“message:用户登录接口超时”,若未开启该功能,使用message:"超时"无法检索到该日志,只有使用message:"用户登录接口超时"才能检索到该日志,开启该功能后便可使用message:"超时"检索该日志。
开启统计
开启后可对该字段使用 SQL 进行统计分析。text 类型字段开启统计时,如果值过长,仅前32766个字符参与统计运算。
开启统计不会额外产生费用,建议您开启。
大小写敏感
检索时是否对大小写敏感,例如日志为“level:Error”,若大小写敏感,则使用level:error无法检索到该条日志。
索引相关的更多详情,请参见 索引配置

步骤五:检索分析

至此,您已完成 MySQL Binlog 订阅的配置。下一步,您可前往 日志检索页 查看日志。

其他操作

管理订阅任务

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