Debezium MySql连接器:表快照是在单个线程中拍摄的吗?

Debezium MySql连接器:表快照是在单个线程中拍摄的吗?,mysql,apache-kafka-connect,debezium,Mysql,Apache Kafka Connect,Debezium,我正在阅读Debezium MySql连接器源代码,并试图理解表快照逻辑 (一) 查看类'io.debezium.connector.mysql.SnapshotReader'execute()方法,似乎所有表快照都是在一个线程中获取的。 这是真的吗?对于具有大量表的数据库,它不以并行方式处理表吗 2) 另外,对于快照,它似乎使用“SELECT*from{table}”查询。如果快照操作失败(由于DB连接失败、Kafka连接器重新启动..等),它是否使用Kafka连接偏移机制从以前的位置恢复

我正在阅读Debezium MySql连接器源代码,并试图理解表快照逻辑

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

2) 另外,对于快照,它似乎使用“SELECT*from{table}”查询。如果快照操作失败(由于DB连接失败、Kafka连接器重新启动..等),它是否使用Kafka连接偏移机制从以前的位置恢复

  • 是的,即使对于大型数据库,快照也使用单个线程

  • 没有

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

    参考:

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

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