使用kafka connect和debezium将表复制到kafka时的性能问题

vs3odd8k  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(1094)

使用debezium和kafka connect复制表时遇到性能问题。
只有在数据库的初始快照期间,才会出现缓慢的复制。我使用的一个表包含340万行,复制需要2小时才能完成。
在这个阶段,整个数据库被锁定,我无法将数据提交到当时没有同步的其他表中。
我的配置(通过curl请求部署的debezium配置):

{
  "name": "debezium-connector",  
  "config": {
    "connector.class": "io.debezium.connector.mysql.MySqlConnector",
    "tasks.max": "1",  
    "database.hostname": "redacted",  
    "database.port": "3306",
    "database.user": "redacted",
    "database.password": "redacted",
    "database.server.id": "54005",
    "database.server.name": "redacted", 
    "database.include.list": "redacted",
    "table.include.list": "redacted",
    "database.history.consumer.security.protocol":"SSL",
    "database.history.producer.security.protocol":"SSL",
    "database.history.kafka.bootstrap.servers": "redacted",  
    "database.history.kafka.topic": "schema-changes.debezium-test",
    "snapshot.mode": "when_needed",
    "max.queue.size": 81290,
    "max.batch.size": 20480
  }
}

已更改的kafka connect配置:

CONNECT_OFFSET_FLUSH_INTERVAL_MS: 10000
CONNECT_OFFSET_FLUSH_TIMEOUT_MS: 60000

问题:1-如何在数据库的初始快照期间提高性能?2-如何从一个数据库复制有限数量的表,而不锁定整个数据库?

u3r8eeie

u3r8eeie1#

如果可以确保数据库架构在快照过程中不会更改,则可以避免通过锁定数据库https://debezium.io/documentation/reference/1.3/connectors/mysql.html#mysql-属性快照锁定模式
同时检查https://debezium.io/documentation/reference/1.3/connectors/mysql.html#mysql-属性min row count to stream results选项,如果使用得当,可能还会有一些性能更改。
你也可以 max.batch.size 一起 max.queue.size 比你现在拥有的还要多。

相关问题