首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Debezium用于母线和WAL同花顺

Debezium用于母线和WAL同花顺
EN

Stack Overflow用户
提问于 2022-11-01 11:04:43
回答 1查看 26关注 0票数 0

我在容器中有Debezium,捕获PostgeSQL数据库记录的所有更改。但我无法理解关于Debezium如何工作的几件事。如果Debezium第一次启动,它将获取数据库的快照,然后根据Debezium文档启动基于WAL文件的流。

PostgreSQL通常在一段时间后清除预写日志(WAL)段.这意味着连接器没有对数据库进行的所有更改的完整历史记录。因此,当PostgreSQL连接器第一次连接到特定的PostgreSQL数据库时,它首先执行每个数据库模式的一致快照。连接器完成快照后,它将继续从快照创建的确切位置进行流更改。这样,连接器从所有数据的一致视图开始,并且不会忽略快照拍摄时所做的任何更改。该连接器具有容错能力。当连接器读取更改并生成事件时,它会记录每个事件的WAL位置。如果连接器因任何原因而停止(包括通信故障、网络问题或崩溃),则在重新启动时,连接器继续读取它上次关闭__的WAL。这包括快照。如果连接器在快照期间停止,则连接器在重新启动时开始一个新快照。

但这里有空隙,也许没有。当数据库的快照完成,然后从WAL文件中流出来时,如果连接器关闭,直到上升,WAL被清除/刷新,那么Debezium如何确保数据的完整性?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-12-01 09:10:28

由于Debezium使用PG上的复制槽,Debezium不断向PG发送它所消耗的LSN的信息,以便PG可以刷新WAL文件。现在,这些信息存储在表格 pg_replication_slots中。当Debezium再次启动时,它会从该表中读取restart_lsn,并请求在该值之前发生的更改。Debezium就是这样确保数据完整性的。这并不是说,如果由于某种原因,LSN在WAL文件中不可用,就无法获得它,这意味着数据丢失已经发生。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74274930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档