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 # Querying variable is called server_id, e.g. SELECT variable_value FROM information_schema.global_variables WHERE variable_name='server_id';
    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 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.