5.4. 设置 MySQL 以运行 Debezium 连接器


在安装和运行 Debezium 连接器前,需要一些 MySQL 设置任务。

详情包括在以下部分:

5.4.1. 为 Debezium 连接器创建 MySQL 用户

Debezium MySQL 连接器需要一个 MySQL 用户帐户。此 MySQL 用户必须在 Debezium MySQL 连接器捕获更改的所有数据库上具有适当的权限。

先决条件

  • MySQL 服务器。
  • SQL 命令的基础知识。

流程

  1. 创建 MySQL 用户:

    mysql> CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
  2. 授予用户所需的权限:

    mysql> GRANT SELECT, RELOAD, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'user' IDENTIFIED BY 'password';

    下表描述了权限。

    重要

    如果使用 Amazon RDS 或 Amazon Aurora 等托管选项不允许全局读取锁定,则使用表级锁定来创建 一致的快照。在这种情况下,您还需要为您创建的用户授予 LOCK TABLES 权限。如需了解更多详细信息,请参阅 快照

  3. 完成用户的权限:

    mysql> FLUSH PRIVILEGES;
表 5.20. 用户权限描述
关键字描述

选择

启用连接器从数据库中的表中选择行。这仅在执行快照时使用。

RELOAD

启用连接器使用 FLUSH 语句来清除或重新载入内部缓存、清除表或获取锁定。这仅在执行快照时使用。

显示数据库

通过发出 SHOW DATABASE 语句来启用连接器查看数据库名称。这仅在执行快照时使用。

复制从设备

启用连接器连接到和读取 MySQL 服务器 binlog。

复制客户端

启用连接器使用以下语句:

  • 显示 MASTER 状态
  • 显示从状态
  • SHOW BINARY LOGS

连接器始终需要此功能。

ON

标识权限应用到的数据库。

TO 'user'

指定要为其授予权限的用户。

IDENTIFIED BY 'password'

指定用户的 MySQL 密码。

5.4.2. 为 Debezium 启用 MySQL binlog

您必须为 MySQL 复制启用二进制日志记录。二进制日志记录复制工具的事务更新以传播更改。

先决条件

  • MySQL 服务器。
  • 适当的 MySQL 用户特权。

流程

  1. 检查 log-bin 选项是否已位于:

    // for MySql 5.x
    mysql> SELECT variable_value as "BINARY LOGGING STATUS (log-bin) ::"
    FROM information_schema.global_variables WHERE variable_name='log_bin';
    // for MySql 8.x
    mysql> SELECT variable_value as "BINARY LOGGING STATUS (log-bin) ::"
    FROM performance_schema.global_variables WHERE variable_name='log_bin';
  2. 如果它处于 OFF 状态,请使用以下属性配置 MySQL 服务器配置文件,如下表中所述:

    server-id         = 223344
    log_bin           = mysql-bin
    binlog_format     = ROW
    binlog_row_image  = FULL
    expire_logs_days  = 10
  3. 稍后检查 binlog 状态来确认您的更改:

    // for MySql 5.x
    mysql> SELECT variable_value as "BINARY LOGGING STATUS (log-bin) ::"
    FROM information_schema.global_variables WHERE variable_name='log_bin';
    // for MySql 8.x
    mysql> SELECT variable_value as "BINARY LOGGING STATUS (log-bin) ::"
    FROM performance_schema.global_variables WHERE variable_name='log_bin';
表 5.21. MySQL binlog 配置属性的描述
属性描述

server-id

server-id 的值对于 MySQL 集群中的每个服务器和复制客户端都必须是唯一的。在 MySQL 连接器设置过程中,Debezium 为连接器分配唯一的服务器 ID。

log_bin

log_bin 的值是 binlog 文件序列的基本名称。

binlog_format

binlog-format 必须设置为 ROW

binlog_row_image

binlog_row_image 必须设置为 FULLfull

expire_logs_days

这是自动删除 binlog 文件的天数。默认值为 0, 这意味着不自动删除。将值设为与您的环境需求匹配。请参阅 MySQL 清除 binlog 文件

5.4.3. 为 Debezium 启用 MySQL 全局事务标识符

全局事务标识符(GTID)唯一标识集群中服务器上出现的事务。虽然 Debezium MySQL 连接器不需要,但使用 GTID 简化了复制,并可让您更轻松地确认主和副本服务器是否一致。

在 MySQL 5.6.5 及更高版本中提供 GTID。详情请查看 MySQL 文档

先决条件

  • MySQL 服务器。
  • SQL 命令的基础知识。
  • 访问 MySQL 配置文件。

流程

  1. 启用 gtid_mode

    mysql> gtid_mode=ON
  2. 启用 enforce_gtid_consistency

    mysql> enforce_gtid_consistency=ON
  3. 确认更改:

    mysql> show global variables like '%GTID%';

结果

+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| enforce_gtid_consistency | ON    |
| gtid_mode                | ON    |
+--------------------------+-------+

表 5.22. GTID 选项的描述
选项描述

gtid_mode

指定是否启用了 MySQL 服务器的 GTID 模式的布尔值。

  • on = enabled
  • OFF = disabled

enforce_gtid_consistency

布尔值,通过允许以事务的方式记录语句来指定服务器强制实施 GTID 一致性。使用 GTID 时是必需的。

  • on = enabled
  • OFF = disabled

5.4.4. 为 Debezium 配置 MySQL 会话超时

为大型数据库进行初始一致的快照时,您建立的连接可能会在表读取期间超时。您可以通过在 MySQL 配置文件中配置 interactive_timeoutwait_timeout 来防止此行为。

先决条件

  • MySQL 服务器。
  • SQL 命令的基础知识。
  • 访问 MySQL 配置文件。

流程

  1. 配置 interactive_timeout

    mysql> interactive_timeout=<duration-in-seconds>
  2. 配置 wait_timeout

    mysql> wait_timeout=<duration-in-seconds>
表 5.23. MySQL 会话超时选项的描述
选项描述

interactive_timeout

服务器在关闭交互式连接前等待活动的秒数。如需了解更多详细信息 ,请参阅 MySQL 文档

wait_timeout

服务器在关闭前等待非互动连接中的活动的秒数。如需了解更多详细信息 ,请参阅 MySQL 文档

5.4.5. 为 Debezium MySQL 连接器启用查询日志事件

您可能希望查看每个 binlog 事件的原始 SQL 语句。在 MySQL 配置文件中启用 binlog_rows_query_log_events 选项允许您执行此操作。

这个选项在 MySQL 5.6 及更高版本中可用。

先决条件

  • MySQL 服务器。
  • SQL 命令的基础知识。
  • 访问 MySQL 配置文件。

流程

  • 启用 binlog_rows_query_log_events

    mysql> binlog_rows_query_log_events=ON

    binlog_rows_query_log_events 设置为一个值,它启用了/禁用对在 binlog 条目中包含原始 SQL 语句的支持。

    • on = enabled
    • OFF = disabled

5.4.6. 为 Debezium MySQL 连接器验证 binlog 行值选项

检查 binlog_row_value_options 变量,并确保值 没有设置为 PARTIAL_JSON,因为在这种情况下连接器可能无法消耗 UPDATE 事件。

先决条件

  • MySQL 服务器。
  • SQL 命令的基础知识。
  • 访问 MySQL 配置文件。

流程

  1. 检查当前的变量值

    mysql> show global variables where variable_name = 'binlog_row_value_options';
  2. 结果

    +--------------------------+-------+
    | Variable_name            | Value |
    +--------------------------+-------+
    | binlog_row_value_options |       |
    +--------------------------+-------+
  3. 如果值为 PARTIAL_JSON,请通过以下方法取消设置此变量:

    mysql> set @@global.binlog_row_value_options="" ;
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.