Debezium日常分享系列之:临时阻塞快照Ad-hoc blocking snapshots
一、认识临时阻塞快照
增量快照于大约两年前在 Debezium 1.6 中首次引入,并且在社区中仍然非常受欢迎,用于处理各种重新快照用例。然而,在某些用例中,读取事件与创建、更新和删除的交织性质可能不太理想,甚至不受某些消费者应用程序的支持。对于这些用例,Debezium 2.4 引入了临时阻塞快照。
临时阻塞快照的工作方式与临时增量快照的工作方式类似;然而,有一个主要区别。快照仍然是通过向 Debezium 发送信号来触发;然而,当连接器处理信号时,主要区别在于,在快照进程运行时,流传输被搁置。这意味着您不会收到一系列与创建、更新或删除事件交织在一起的读取事件。这也意味着我们将以与传统快照类似的方式处理快照,因此吞吐量通常应该高于增量快照。
请注意,临时阻塞快照会在执行快照时暂停事务日志的读取。这意味着在使用这种类型的临时快照模式时,传统快照对事务日志可用性的相同要求也适用。当流恢复时,如果所需的事务日志已被删除,连接器将引发错误并停止。
二、临时阻塞快照信号格式
启动临时阻塞快照的信号与其对应的临时增量快照非常相似。下面的信号显示了对具有条件的特定表进行快照的有效负载,但这使用新的阻塞快照而不是增量快照:
bash
{
"type": "execute-snapshot",
"data": {
"data-collections": ["public.my_table"],
"type": "blocking",
"additional-condition": "last_update_date >= '2023-01-01'"
}
}
使用 blocking 而不是 INCRMENTAL 区分了两种临时快照模式。
三、临时阻塞快照效果
执行临时阻塞快照日志输出如下图所示: