【问题标题】:Debezium MySql Connector : Table snapshots are taken in a single thread?Debezium MySql 连接器:表快照是在单个线程中拍摄的?
【发布时间】:2019-12-06 11:26:50
【问题描述】:

我正在浏览 Debezium MySql 连接器源代码并试图了解表快照逻辑。

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 偏移机制?

【问题讨论】:

    标签: mysql apache-kafka-connect debezium


    【解决方案1】:
    1. 是的,即使是大型数据库也使用单个线程进行快照。

    如果连接器出现故障、重新平衡或在快照创建之前停止 完成时,连接器将开始一个新的快照 重新启动。

    参考:https://debezium.io/docs/connectors/mysql/#snapshots

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

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

    【讨论】:

      猜你喜欢
      • 2018-12-03
      • 2022-07-20
      • 1970-01-01
      • 2013-02-14
      • 1970-01-01
      • 1970-01-01
      • 2014-04-18
      • 2010-11-07
      • 2014-12-03
      相关资源
      最近更新 更多