upset-kafka读取数据写入mysql:
代码如下:
CREATE TABLE test1_kafka_source (
`id` bigint,
`name` VARCHAR,
`create_time` TIMESTAMP,
`update_time` TIMESTAMP,
PRIMARY KEY (`id`) NOT ENFORCED
) WITH (
'connector' = 'upsert-kafka',
'topic' = 'test1',
'properties.bootstrap.servers' = '********:9092',
'key.format' = 'json',
'value.format' = 'json'
);
源数据:
目的端数据:
当把主键修改为2时:
目的端也会变为2:
当把源数据删除时:
目的端也会被删除:
当主键发生更新时,可以看到目的端数据与源数据保持同步。但如果是以kafka的方式读取,则不会保持同步,保持追加写入。
以kafka的方式读取数据,写入mysql:
代码如下:
CREATE TABLE test1_kafka_source (
`id` bigint,
`name` VARCHAR,
`create_time` TIMESTAMP,
`update_time` TIMESTAMP
) WITH (
'connector' = 'kafka',
'topic' = 'test1',
'properties.bootstrap.servers' = '192.168.7.133:9092',
'properties.group.id' = 'test1',
'scan.startup.mode' = 'latest-offset',
'value.format' = 'json'
);
源数据:
目的端数据:
当把源数据的主键进行修改时:
目的端只会追加数据,而不会删除主键为1的历史数据:
当把源数据删除时:
目的端并不会被删除:
总结:
当以upset-kafka的方式读取kafka数据写入mysql时,当主键发生更新或删除,则会保持同步。但是当以kafka的方式读取kafka数据写入mysql时,当主键发生更新或删除,则会保持追加写入。