FlinkCDC报错解决

如果利用FlinkCDC在同步的时候报这个错误,说明server_id需要指定一个;出现的原因是因为你监听的mysql的表时,有多个相同的server_id监听同一个binlog日志。

Caused by:io.debezium.DebeziumException:A slave with the same server_uuid/server_id as this slave has connected to the master;the first event 'mysql-bin.000187' at 50065784,the last event read from './mysql-bin.000187' at 59990Hy000。

如果是flink sql可以这样指定server-id = 549001:

create table t_table
(
    id                  bigint,
    order_no            STRING,
    age                 int,
    name                timestamp(3),
    PRIMARY KEY (id) NOT ENFORCED
) WITH (
      'connector' = 'mysql-cdc',
      'hostname' = 'hostname',
      'port' = 'port',
      'username' = 'username',
      'password' = 'password',
      'database-name' = 'database',
      'table-name' = 't_table',
      'scan.startup.mode' = 'latest-offset',
      'debezium.skipped.operations' = 'd',
      'server-id' = '549001',
      'scan.incremental.snapshot.enabled'='true'
      );

如果是datastream可以这样指定:

MySqlSourceBuilder<String> sourceBuilder = MySqlSource.<String>builder()
                        .hostname(config.getHostname())
                        .port(config.getPort())
                        .username(config.getUsername())
                        .password(config.getPassword());

sourceBuilder.serverId(serverId);

如果不指定,Flink默认是给到server_id:5400-6400