Debezium系列之:其他关系连接器的只读增量快照设计原理
- 动机
- 目标
- PostgreSQL
-
- 高级算法
- 建议的更改。
- 限制
- MongoDB
-
- 拓扑结构
- Replica set
- Sharded cluster
- Oplog和Change Stream
- 只读增量快照是否可行?
动机
-
增量快照是在Debezium 1.6中引入的一个重要改进,旨在解决Debezium在处理捕获表时的三个关键问题。
-
首先,如果需要流式传输现有数据,则几乎不可能将其他表添加到捕获列表中。其次,长时间运行的快照进程无法终止或恢复,如果中断需要完全重新启动。第三,更改数据流被阻塞,直到快照完成。增量快照通过实现更灵活和高效的数据捕获来解决这些问题。
-
增量快照是基于Andreas Andreakis和Ioannis Papapanagiotou的论文实现的。这种方法的主要思想是连续执行更改数据流和快照。框架将低水位标记和高水位标记插入事务日志中(通过向源数据库写入),在这两个点之间读取快照表的一部分。框架记录水位标记之间的数据库更改,并在窗口期间对其进行调和,如果相同的记录被捕获和修改,则与捕获的值进行调和。
-
这意味着Debezium必须在快照期间具有对特定表的写入权限,以创建低/高水位标记。
-
这可能对一些具有不同动机的用户造成限制:
- 从只读副本捕获更改- 政策限制
- 难以获得写入权限
-
为了消除这种摩擦,允许使用GTIDs。