CDC(Change Data Capture),即数据变更抓取,通过为源端数据源开启CDC,作业可实现数据源的实时数据同步。 本章节主要介绍如何为MySQL数据库开启Binlog模式CDC功能。

前提条件


MySQL 数据库为5.7.x 或者8.0.x 版本

操作步骤

注意:建议由数据库管理员对数据源配置进行操作。
以下配置在Linux 环境进行说明

必须配置一个对Debezium MySQL 连接监视器的所有数据库具有适当权限的MySQL用户。

  1. 创建 MySQL User:
    mysql> CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
  2. 对用户进行授权
    mysql> GRANT SELECT, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'user' IDENTIFIED BY 'password';
  3. FLUSH
    mysql> FLUSH PRIVILEGES;
  4. 开启mysql binlog
    show variables like 'log_bin';
    若变量log_bin的值为“OFF”,则说明Binlog未开启,继续执行下一步。
    若变量log_bin的值为“ON”,则说明Binlog已开启,继续执行以下SQL命令,检查相关参数的配置是否符合要求。
    show variables like '%binlog_format%';
    show variables like '%binlog_row_image%';
    变量binlog_format的值应该为“ROW”,变量binlog_row_image的值应该为“FULL”。如果满足要求,不需要再进行配置。
  5. 在配置文件中配置如下配置
    server-id = 123
    log_bin = mysql-bin
    binlog_format = row
    binlog_row_image = full
    expire_logs_days = 10
    gtid_mode = on
    enforce_gtid_consistency = on
    其中:
    server-id的值应为大于1的整数,请根据实际规划设置,并且在创建数据集成任务时设置的“Server Id”值需要此处设置的值不同。 expire_logs_days为Binlog日志文件保留时间,超过保留时间的Binlog日志会被自动删除,应保留至少2天的日志文件。 “gtid_mode = on”和“enforce_gtid_consistency = on”仅当MySQL的版本大于等于5.6.5时才需要添加,否则删除这两行内容。

增加配置后需要重启数据库