5.4. 设置 MySQL 以运行 Debezium 连接器
在安装和运行 Debezium 连接器前,需要一些 MySQL 设置任务。
详情包括在以下部分:
5.4.1. 为 Debezium 连接器创建 MySQL 用户
Debezium MySQL 连接器需要一个 MySQL 用户帐户。此 MySQL 用户必须在 Debezium MySQL 连接器捕获更改的所有数据库上具有适当的权限。
先决条件
- MySQL 服务器。
- SQL 命令的基础知识。
流程
创建 MySQL 用户:
mysql> CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
授予用户所需的权限:
mysql> GRANT SELECT, RELOAD, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'user' IDENTIFIED BY 'password';
下表描述了权限。
重要如果使用 Amazon RDS 或 Amazon Aurora 等托管选项不允许全局读取锁定,则使用表级锁定来创建 一致的快照。在这种情况下,您还需要为您创建的用户授予
LOCK TABLES
权限。如需了解更多详细信息,请参阅 快照。完成用户的权限:
mysql> FLUSH PRIVILEGES;
关键字 | 描述 |
---|---|
| 启用连接器从数据库中的表中选择行。这仅在执行快照时使用。 |
|
启用连接器使用 |
|
通过发出 |
| 启用连接器连接到和读取 MySQL 服务器 binlog。 |
| 启用连接器使用以下语句:
连接器始终需要此功能。 |
| 标识权限应用到的数据库。 |
| 指定要为其授予权限的用户。 |
| 指定用户的 MySQL 密码。 |
5.4.2. 为 Debezium 启用 MySQL binlog
您必须为 MySQL 复制启用二进制日志记录。二进制日志记录复制工具的事务更新以传播更改。
先决条件
- MySQL 服务器。
- 适当的 MySQL 用户特权。
流程
检查
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';
如果它处于
OFF
状态,请使用以下属性配置 MySQL 服务器配置文件,如下表中所述:server-id = 223344 log_bin = mysql-bin binlog_format = ROW binlog_row_image = FULL expire_logs_days = 10
稍后检查 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';
属性 | 描述 |
---|---|
|
|
|
|
|
|
|
|
|
这是自动删除 binlog 文件的天数。默认值为 |
5.4.3. 为 Debezium 启用 MySQL 全局事务标识符
全局事务标识符(GTID)唯一标识集群中服务器上出现的事务。虽然 Debezium MySQL 连接器不需要,但使用 GTID 简化了复制,并可让您更轻松地确认主和副本服务器是否一致。
在 MySQL 5.6.5 及更高版本中提供 GTID。详情请查看 MySQL 文档。
先决条件
- MySQL 服务器。
- SQL 命令的基础知识。
- 访问 MySQL 配置文件。
流程
启用
gtid_mode
:mysql> gtid_mode=ON
启用
enforce_gtid_consistency
:mysql> enforce_gtid_consistency=ON
确认更改:
mysql> show global variables like '%GTID%';
结果
+--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | enforce_gtid_consistency | ON | | gtid_mode | ON | +--------------------------+-------+
选项 | 描述 |
---|---|
| 指定是否启用了 MySQL 服务器的 GTID 模式的布尔值。
|
| 布尔值,通过允许以事务的方式记录语句来指定服务器强制实施 GTID 一致性。使用 GTID 时是必需的。
|
5.4.4. 为 Debezium 配置 MySQL 会话超时
为大型数据库进行初始一致的快照时,您建立的连接可能会在表读取期间超时。您可以通过在 MySQL 配置文件中配置 interactive_timeout
和 wait_timeout
来防止此行为。
先决条件
- MySQL 服务器。
- SQL 命令的基础知识。
- 访问 MySQL 配置文件。
流程
配置
interactive_timeout
:mysql> interactive_timeout=<duration-in-seconds>
配置
wait_timeout
:mysql> wait_timeout=<duration-in-seconds>
选项 | 描述 |
---|---|
| 服务器在关闭交互式连接前等待活动的秒数。如需了解更多详细信息 ,请参阅 MySQL 文档。 |
| 服务器在关闭前等待非互动连接中的活动的秒数。如需了解更多详细信息 ,请参阅 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 配置文件。
流程
检查当前的变量值
mysql> show global variables where variable_name = 'binlog_row_value_options';
结果
+--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | binlog_row_value_options | | +--------------------------+-------+
如果值为
PARTIAL_JSON
,请通过以下方法取消设置此变量:mysql> set @@global.binlog_row_value_options="" ;