CLS 日志服务支持远端非侵入式订阅 MySQL 二进制日志(binlog),该日志以事件形式记录了对 MySQL 数据库执行更改的所有操作。
使用场景
该日志适用于对增量的数据库改动进行实时查询、分析与审计的需求场景。
前提条件
已创建 MySQL 数据库且开启 ROW 模式的 Binlog 功能。
操作步骤
步骤一:选择日志主题
如果您想选择新的日志主题,可执行如下操作:
1. 登录 日志服务控制台。
2. 在左侧导航栏中,单击概览,进入概览页面。
3. 在快速接入中,选择数据导入,单击 MySQL Binlog 订阅,进入订阅任务配置流程。
4. 在创建日志主题页面,根据您的实际需求,输入日志主题名称,配置日志保存时间等信息,然后点击下一步 。
如果您想选择现有的日志主题,可执行如下操作:
1. 登录 日志服务控制台。
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个字段。仅支持字母、数字、下划线和-./@,且不能以下划线开头。 |
字段类型 | 字段的数据类型,包括 text、long、double 三种类型。 text 类型支持使用通配符进行模糊检索,不支持范围比较。 long、double 类型支持范围比较,不支持模糊检索。 |
分词符 | 对字段值进行分词的字符集合,仅支持英文符号,控制台默认分词符为 @&?|#()='",;:<>[]{}/ \\n\\t\\r\\\\ 。 |
包含中文 | 字段中包含中文且需要对中文进行检索时可开启该功能。例如日志为“message:用户登录接口超时”,若未开启该功能,使用 message:"超时" 无法检索到该日志,只有使用message:"用户登录接口超时" 才能检索到该日志,开启该功能后便可使用message:"超时" 检索该日志。 |
开启统计 | 开启后可对该字段使用 SQL 进行统计分析。text 类型字段开启统计时,如果值过长,仅前32766个字符参与统计运算。 开启统计不会额外产生费用,建议您开启。 |
大小写敏感 | 检索时是否对大小写敏感,例如日志为“level:Error”,若大小写敏感,则使用 level:error 无法检索到该条日志。 |
索引相关的更多详情,请参见 索引配置。
步骤五:检索分析
其他操作
管理订阅任务
完成 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 |