我想使用 debezium 和 jdbc sink(confluent)将数据从 mysql 同步到 postgres。
我已使用此教程将 mysql 更改更改为 kafka 主题:https://debezium.io/documentation/reference/1.5/tutorial.html#starting-mysql-command-line-client
这是 mysql debezium 连接器的配置:
{
"name": "inventory-connector",
"config": {
"connector.class": "io.debezium.connector.mysql.MySqlConnector",
"tasks.max": "1",
"database.hostname": "mysql",
"database.port": "3306",
"database.user": "debezium",
"database.password": "dbz",
"database.server.id": "184054",
"database.server.name": "dbserver1",
"database.include.list": "inventory",
"database.history.kafka.bootstrap.servers": "kafka:9092",
"database.history.kafka.topic": "schema-changes.inventory"
}
}
我已将 jdbc sink 连接器添加到 kafka:
https://www.confluent.io/hub/confluentinc/kafka-connect-jdbc
目前一切正常。
我在 IP 上运行的 Postgres docker 容器:172.17.0.4
因此,我已将此接收器配置添加到 kafka 连接器:
curl -i -X POST -H "Accept:application/json" -H "Content-Type:application/json" 172.17.0.3:8083/connectors/ -d '
{
"name": "posgres-sink",
"config": {
"connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector",
"connection.url": "jdbc:postgresql://172.17.0.4:3306/users",
"connection.user": "postgres",
"connection.password": "postgres",
"key.converter": "org.apache.kafka.connect.storage.StringConverter",
"tasks.max": "1",
"auto.create": "true",
"insert.mode": "insert",
"topics": "users.accounts",
"auto.create": "true",
"pk.mode": "record_key",
"pk.fields": "id",
"batch.size": "1"
}
}'
我使用 dbserver1.inventory.customers
作为主题,因为我正在从 tuto 运行此命令
docker run -it --rm --name watcher --link zookeeper:zookeeper --link kafka:kafka debezium/kafka:1.5 watch-topic -a -k dbserver1.inventory.customers
但是,我在 kafka 日志中没有错误,当我将数据插入 mysql 时,我在 kafka 中获得了更改日志,但在 postgres 中没有:
[2021-06-02 21:37:20,965] INFO JdbcSinkConfig values:
auto.create = false
auto.evolve = false
batch.size = 3000
connection.attempts = 3
connection.backoff.ms = 10000
connection.password = [hidden]
connection.url = jdbc:postgresql://172.17.0.7:5432/users
connection.user = postgres
db.timezone = UTC
delete.enabled = false
dialect.name =
fields.whitelist = []
insert.mode = insert
max.retries = 10
pk.fields = []
pk.mode = none
quote.sql.identifiers = ALWAYS
retry.backoff.ms = 3000
table.name.format = ${topic}
table.types = [TABLE]
(io.confluent.connect.jdbc.sink.JdbcSinkConfig:361)
[2021-06-02 21:37:20,967] INFO Initializing writer using SQL dialect: PostgreSqlDatabaseDialect (io.confluent.connect.jdbc.sink.JdbcSinkTask:67)
[2021-06-02 21:37:20,968] INFO WorkerSinkTask{id=jdbc-sink-connector-0} Sink task finished initialization and start (org.apache.kafka.connect.runtime.WorkerSinkTask:309)
[2021-06-02 21:37:20,989] INFO [Consumer clientId=connector-consumer-jdbc-sink-connector-0, groupId=connect-jdbc-sink-connector] Cluster ID: HociFKJoRFa7q6LSbTnrDA (org.apache.kafka.clients.Metadata:279)
[2021-06-02 21:37:20,991] INFO [Consumer clientId=connector-consumer-jdbc-sink-connector-0, groupId=connect-jdbc-sink-connector] Discovered group coordinator 172.17.0.3:9092 (id: 2147483646 rack: null) (org.apache.kafka.clients.consumer.internals.AbstractCoordinator:847)
[2021-06-02 21:37:20,999] INFO [Consumer clientId=connector-consumer-jdbc-sink-connector-0, groupId=connect-jdbc-sink-connector] (Re-)joining group (org.apache.kafka.clients.consumer.internals.AbstractCoordinator:540)
[2021-06-02 21:37:21,029] INFO [Consumer clientId=connector-consumer-jdbc-sink-connector-0, groupId=connect-jdbc-sink-connector] (Re-)joining group (org.apache.kafka.clients.consumer.internals.AbstractCoordinator:540)
[2021-06-02 21:37:21,041] INFO [Consumer clientId=connector-consumer-jdbc-sink-connector-0, groupId=connect-jdbc-sink-connector] Successfully joined group with generation Generation{generationId=3, memberId='connector-consumer-jdbc-sink-connector-0-23347945-6417-42e3-9c95-8aaaeef1629d', protocol='range'} (org.apache.kafka.clients.consumer.internals.AbstractCoordinator:596)
[2021-06-02 21:37:21,041] INFO [Consumer clientId=connector-consumer-jdbc-sink-connector-0, groupId=connect-jdbc-sink-connector] Finished assignment for group at generation 3: {connector-consumer-jdbc-sink-connector-0-23347945-6417-42e3-9c95-8aaaeef1629d=Assignment(partitions=[users.accounts-0])} (org.apache.kafka.clients.consumer.internals.ConsumerCoordinator:626)
[2021-06-02 21:37:21,048] INFO [Consumer clientId=connector-consumer-jdbc-sink-connector-0, groupId=connect-jdbc-sink-connector] Successfully synced group in generation Generation{generationId=3, memberId='connector-consumer-jdbc-sink-connector-0-23347945-6417-42e3-9c95-8aaaeef1629d', protocol='range'} (org.apache.kafka.clients.consumer.internals.AbstractCoordinator:756)
[2021-06-02 21:37:21,049] INFO [Consumer clientId=connector-consumer-jdbc-sink-connector-0, groupId=connect-jdbc-sink-connector] Notifying assignor about the new Assignment(partitions=[users.accounts-0]) (org.apache.kafka.clients.consumer.internals.ConsumerCoordinator:276)
[2021-06-02 21:37:21,049] INFO [Consumer clientId=connector-consumer-jdbc-sink-connector-0, groupId=connect-jdbc-sink-connector] Adding newly assigned partitions: users.accounts-0 (org.apache.kafka.clients.consumer.internals.ConsumerCoordinator:288)
[2021-06-02 21:37:21,052] INFO [Consumer clientId=connector-consumer-jdbc-sink-connector-0, groupId=connect-jdbc-sink-connector] Found no committed offset for partition users.accounts-0 (org.apache.kafka.clients.consumer.internals.ConsumerCoordinator:1354)
[2021-06-02 21:37:21,061] INFO [Consumer clientId=connector-consumer-jdbc-sink-connector-0, groupId=connect-jdbc-sink-connector] Resetting offset for partition users.accounts-0 to position FetchPosition{offset=0, offsetEpoch=Optional.empty, currentLeader=LeaderAndEpoch{leader=Optional[172.17.0.3:9092 (id: 1 rack: null)], epoch=0}}. (org.apache.kafka.clients.consumer.internals.SubscriptionState:396)
[2021-06-02 21:37:21,222] INFO WorkerSourceTask{id=users-manager-mysql-0} Committing offsets (org.apache.kafka.connect.runtime.WorkerSourceTask:478)
[2021-06-02 21:37:21,223] INFO WorkerSourceTask{id=users-manager-mysql-0} flushing 0 outstanding messages for offset commit (org.apache.kafka.connect.runtime.WorkerSourceTask:495)
[2021-06-02 21:37:31,224] INFO WorkerSourceTask{id=users-manager-mysql-0} Committing offsets (org.apache.kafka.connect.runtime.WorkerSourceTask:478)
[2021-06-02 21:37:31,224] INFO WorkerSourceTask{id=users-manager-mysql-0} flushing 0 outstanding messages for offset commit (org.apache.kafka.connect.runtime.WorkerSourceTask:495)
答案 0 :(得分:0)
使用这个例子,所有配置都可用:
[https://github.com/debezium/debezium-examples/tree/master/unwrap-smt#jdbc-sink][1]