Debezium MySql 连接器:Table 快照是在单个线程中拍摄的?
Debezium MySql Connector : Table snapshots are taken in a single thread?
我正在研究 Debezium MySql 连接器源代码并试图理解 table 快照逻辑。
1)
查看 class 'io.debezium.connector.mysql.SnapshotReader' execute() 方法,似乎所有 table 快照都是在单个线程中拍摄的。
这是真的?对于具有大量 table 的数据库,它不会以并行方式处理 table?
2) 此外,它似乎使用 "SELECT * from {table}" query.If 拍摄快照 快照操作失败(由于数据库连接失败,Kafka 连接器重启等)它是否从以前的位置恢复使用 Kafka Connect 偏移机制?
是的,即使是大型数据库也使用单线程进行快照。
否
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连接偏移恢复快照有很多问题。什么抵消?届时 table.
中可能会有一些修改
我正在研究 Debezium MySql 连接器源代码并试图理解 table 快照逻辑。
1) 查看 class 'io.debezium.connector.mysql.SnapshotReader' execute() 方法,似乎所有 table 快照都是在单个线程中拍摄的。 这是真的?对于具有大量 table 的数据库,它不会以并行方式处理 table?
2) 此外,它似乎使用 "SELECT * from {table}" query.If 拍摄快照 快照操作失败(由于数据库连接失败,Kafka 连接器重启等)它是否从以前的位置恢复使用 Kafka Connect 偏移机制?
是的,即使是大型数据库也使用单线程进行快照。
否
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连接偏移恢复快照有很多问题。什么抵消?届时 table.
中可能会有一些修改