mysql - Debezium MySql 连接器 : Table snapshots are taken in a single thread?

标签 mysql apache-kafka-connect debezium

我正在浏览 Debezium MySql Connector 源代码并尝试理解表快照逻辑。

1) 查看类“io.debezium.connector.mysql.SnapshotReader”execute() 方法,似乎所有表快照都是在单个线程中获取的。 这是真的?对于具有大量表的数据库,它不以并行方式处理表吗?

https://github.com/debezium/debezium/blob/master/debezium-connector-mysql/src/main/java/io/debezium/connector/mysql/SnapshotReader.java

2)另外,似乎为了拍摄快照,它使用“SELECT * from {table}”查询。如果快照操作失败(由于数据库连接失败、Kafka连接器重新启动等),它是否使用以下命令从以前的位置恢复: Kafka Connect 偏移机制?

最佳答案

  1. 是的,即使对于大型数据库,也使用单个线程进行快照。

  2. 没有

If the connector fails, is rebalanced, or stops before the snapshot is complete, the connector will begin a new snapshot when it is restarted.

引用:https://debezium.io/docs/connectors/mysql/#snapshots

这两者的原因都是快照机制。快照是在单个事务中拍摄的。首先,事务仅限于单个数据库连接。即使使用具有单个数据库连接的多个线程也会导致线程等待其他线程释放连接。

其次,使用 Kafka 连接偏移量恢复快照存在很多问题。什么偏移?到那时,表格中可能已经发生了一些修改。

关于mysql - Debezium MySql 连接器 : Table snapshots are taken in a single thread?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57248471/

相关文章:

php - 从 MySQL 表中获取 PHP 测验结果

mysql - 一个 Mysql 数据库的多个 debezium 连接器

mysql - 删除不适用于 debezium 源连接器/jdbc-sink-connector

postgresql - 如何将表添加到 Debezium Postgres 连接器

mysql - 使用SQL计算时间

mysql 服务器版本 5.7 但如果我想从控制台访问,我很乐意帮助您解决以下错误

mysql - 如何在另一台主机上连接 MySQL 和 kafka?

jboss - 复制槽已经存在

mysql - SQL - 每个日期一条记录

apache-kafka - Kafka Connect 找不到连接器