将 MySQL 数据库 CDC 源添加到事件流

注意

本文包含对术语 SLAVE 的引用,Microsoft 不再使用该术语。 在从软件中删除该术语后,我们会将其从本文中删除。

本文介绍如何将 Azure Database for MySQL 变更数据捕获源添加到事件流。 通过使用 Microsoft Fabric 事件流的 Azure MySQL Database 变更数据捕获 (CDC) 源连接器,你可以捕获 Azure Database for MySQL 数据库中当前数据的快照。

你可以指定要监视的表,事件流将记录对表进行的任何未来的行级更改。 在事件流中捕获更改后,可以实时处理此 CDC 数据,并将其发送到 Fabric 内的不同目的地,以进一步处理或分析。

注意

工作区容量的以下区域不支持此源:美国西部 3瑞士西部

先决条件

  • 使用参与者或更高权限在 Fabric 容量许可证模式(或)试用许可证模式下访问工作区。
  • 访问 Azure Database for MySQL - 灵活服务器的一个实例。
  • MySQL 数据库必须可供公开访问,并且不能位于防火墙后面或在虚拟网络中受到保护。
  • 如果没有事件流,请创建一个事件流

设置 MySQL DB

连接器使用 Debezium MySQL 连接器捕获 Azure Database for MySQL 数据库中的更改。 必须在消息传递连接器可以从中捕获更改的所有数据库上定义一个具有适当权限的 MySQL 用户。 可以直接使用管理员用户连接到通常具有适当权限的数据库,如下所示。 或者可以按照以下步骤创建新用户

注意

新的用户或管理员帐户以及相应的密码将用于稍后在 Eventstream 中连接到数据库。

  1. mysql 命令提示符下,创建 MySQL 用户:

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

    mysql> GRANT SELECT, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'user'@'%';
    
  3. 完成用户的权限:

    mysql> FLUSH PRIVILEGES;
    

若要确认用户或管理员是否被授予所需权限,请运行以下命令,然后应显示上述步骤 2 中所需的权限。

SHOW GRANTS FOR user;

有关向用户授予所需权限的详细信息,请参阅适用于 MySQL 的 Debezium 连接器:Debezium 文档

启用 binlog

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

  1. 在 Azure Database for MySQL 帐户的“Azure 门户”页上,在左侧导航中的“设置”选择“服务器参数”

  2. 在“服务器参数”页面上,配置以下属性,然后选择“保存”

    • 对于 binlog_row_image,请选择“已满”

    • 对于 binlog_expire_logs_seconds,请设置服务在清除二进制日志文件之前等待的秒数。 设置值以匹配环境的需求,例如 86400

    服务器参数下复制的 binlog 设置的屏幕截图。

将 Azure MySQL DB (CDC) 添加为源

如果尚未向事件流添加任何源,请选择“使用外部源”磁贴

显示选择“使用外部源”磁贴的屏幕截图。

如果要向已发布的事件流添加源,请切换到“编辑”模式,在功能区中选择“添加源”,然后选择“外部源”

显示选择“添加源”然后选择“外部源”菜单的屏幕截图。

在“选择数据源”页面上,搜索并选择“MySQL DB (CDC)”磁贴上的“连接”

显示在“获取事件”向导中选择 MySQL DB (CDC) 作为源类型的屏幕截图。

配置并连接到 Azure MySQL DB (CDC)

  1. 在“连接”屏幕上的“连接”下,选择“新建连接”以创建云连接。

    显示“连接”页面的屏幕截图。

  2. 输入 Azure MySQL DB 的以下连接设置连接凭证,然后选择“连接”

    • 服务器:Azure Database for MySQL 数据库的服务器地址,例如 my-mysql-server.mysql.database.azure.com

    • 数据库:数据库名称,例如 my_database

    • 连接名称:自动生成,你也可以为此连接输入新名称。

    • 用户名密码:输入 Azure Database for MySQL 数据库的凭证。 确保输入服务器管理员帐户使用授予的所需权限创建的用户帐户

      Azure MySQL DB (CDC) 的连接设置的屏幕截图。

  3. 输入以下信息以配置 Azure MySQL DB CDC 数据源,然后选择“下一步”

    • :输入用逗号分隔的表名列表。 每个表名必须遵循格式 <database name>.<table name>,例如 my_database.users

    • 服务器 ID:为 MySQL 群集中的每个服务器和复制客户端输入唯一值。 默认值为 1000。

    • 端口:保留默认值不变。

      选择 Azure MySQL DB (CDC) 连接的表、服务器 ID 和端口的屏幕截图。

    还可以通过在右侧的“流详细信息”部分选择“源名称”的铅笔按钮来编辑源名称

    注意

    为每个读取器设置不同的服务器 ID。 用于读取 binlog 的每个 MySQL 数据库客户端都应具有唯一的 ID,称为服务器 ID。 MySQL 服务器使用此 ID 来维护网络连接和 binlog 位置。 共享同一服务器 ID 的不同作业可能会导致从错误的 binlog 位置进行读取。 因此,建议为每个读取器设置不同的服务器 ID。

  4. 在“查看 + 连接”页上,查看 Azure MySQL DB CDC 源的摘要后,选择“添加”以完成配置

    显示“查看 + 连接”页的屏幕截图,其中选择了“添加”按钮。

注意

一个事件流的源和目标的最大数量为 11

查看更新的事件流

  1. 你会看到在编辑模式下添加到事件流的 Azure MySQL DB (CDC) 源。

    “编辑”模式下添加的 Azure MySQL DB CDC 源的屏幕截图,其中高亮显示了“发布”按钮。

  2. 选择“发布”以发布更改并开始将 Azure MySQL DB CDC 数据流式传输到事件流。

    实时模式下添加的 Azure MySQL DB CDC 源的屏幕截图。

其他连接器: