使用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-如何从一个数据库复制有限数量的表,而不锁定整个数据库?
1条答案
按热度按时间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
比你现在拥有的还要多。