debezium 捕获mysql数据三-kafka(CDC)
前言
代码和 debezium 捕获mysql数据二
差不多,唯一不同的是使用存储引擎是用 KafkaOffsetBackingStore
只需要修改 配置就行
@Override
protected Properties getProperties() {
Properties prop = new Properties();
prop.put("name", "customer-mysql-connector");
prop.put("connector.class", "io.debezium.connector.mysql.MySqlConnector");
//偏移量文件
// 尝试提交偏移量的时间间隔。默认值为 1分钟
prop.put("offset.flush.interval.ms", "0");
prop.put("database.hostname", config.getHost());
prop.put("database.port", config.getPort());
prop.put("database.user", config.getUser());
prop.put("database.password", config.getPasswd());
prop.put("topic.prefix", "tp");
//使用kafka做存储
prop.put("offset.storage","org.apache.kafka.connect.storage.KafkaOffsetBackingStore");
prop.put("bootstrap.servers", "192.x.xx.x:9092");
prop.put("offset.storage.topic", "tp.offset.s");
prop.put("offset.storage.partitions", "1");
prop.put("offset.storage.replication.factor", "1");
prop.put("database.history.kafka.bootstrap.servers", "192.x.xx.x:9092");
prop.put("schema.history.internal.kafka.bootstrap.servers", "192.x.xx.x:9092");
prop.put("schema.history.internal.kafka.topic", "tp.his_schema");
prop.put("include.schema.changes", "false");
prop.setProperty("database.include.list", "test");//要捕获的数据库名
prop.setProperty("table.include.list", "test.t_user");//要捕获的数据表
prop.put("include.schema.changes", "false");
//server_id不要和mysql配置文件不一样,每个实例设置不一样的server_id,
//分布式环境不建议使用多个实例
prop.put("database.server.id", "2");
prop.put("database.server.name", "c_mysql_connector");
return prop;
}
可以看见kafka中创建了topic