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 # 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
通过检查 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="" ;