Debezium系列之:Incremental snapshotting设计原理
动机
- Debezium是一个平台,通过处理数据库的事务日志来流式传输数据执行的更改。由于数据库中已经存在的数据通常在事务日志中不可用,因此Debezium在连接器启动时执行一致的快照。
- 快照通过将所有捕获的表的内容读入Debezium并将其传递到Kafka来执行。快照处理表时是顺序执行的,只有在完成后才会开始流式传输。根据数据库的大小,这个过程可能需要几个小时甚至几天。这个过程本身可以中断,但必须从头开始执行。
- 许多用例不需要将源数据库中已存在的数据全部一次性传递。相反,它们要求数据在未指定的时间点传递。这引出了增量快照的想法,其中快照与流式传输并行进行。结果将是流式传输从头开始执行,快照将被分批执行,这将允许在执行过程中恢复快照。
- 快照的第二个问题是在需要更新捕获表的列表时可见的。由于通常需要流式传输新添加表的内容,因此通常需要暂时暂停流式传输,执行新表的快照,然后恢复流式传输(尚未在Debezium中实现)。增量快照也将解决这种情况。
目标
- 提供可恢复快照支持
- 提供快照与流式传输并行执行的支持
- 提供过滤器配置的更新支持(包括/排除捕获表的列表)
- 提供即席快照支持(在连接器运行时触发)