当前位置: 首页 > 知识库问答 >
问题:

筛选Debezium中的读取访问事件

柏阳炎
2023-03-14

我们正在使用Debezium+PostgreSQL。

注意,我们得到了用于创建、读取、更新和删除的4种类型的事件-c、r、u和D。

事件的读取类型未用于我们的应用程序。实际上,我想不出'r'事件的用例,除非我们正在审计或镜像事务的活动。

我从一个贡献者那里得到了使用snapshot.mode的线索。我想当Debezium创建一个快照时必须要做的事情。我不知道怎么做。

共有1个答案

向实
2023-03-14

很可能您的数据库已经存在了一段时间,并且包含已从逻辑解码日志中清除的数据和更改。然后,如果您开始使用Debezium PostgreSQL连接器来捕获对Kafka的更改,那么问题就变成了Kafka中事件的使用者应该能够看到什么。

一种情况是,使用者应该能够看到数据库中所有行的事件,甚至是CDC启动之前存在的那些行。例如,这允许使用者完全再现/复制所有现有数据,并使这些数据随时间保持同步。要实现这一点,Debezium PostgreSQL连接器启动时可以先创建数据库内容的快照,然后再开始捕获更改。这是以原子方式完成的,因此即使快照进程运行需要一段时间,连接器仍将看到自快照进程启动以来发生的所有事件。这些事件表示为“读取”事件,因为实际上连接器只是读取现有行。但是,它们与“插入”事件相同,因此任何应用程序都可以以相同的方式处理读取和插入。

另一方面,如果Kafka中事件的使用者不需要查看所有现有行的事件,那么可以将连接器配置为避免使用快照,而是从捕获更改开始。在某些情况下,这可能很有用,因为在这些情况下,整个数据库状态不需要在Kafka中找到,而目标只是简单地捕获正在发生的更改。

 类似资料:
  • 问题1:表中中的行的事件总是具有相同的键,对吗? 问题2:由于kafka会将具有相同密钥的数据发送到相同分区,所以我可以说的事件可以有序地使用,对吗? 问题3:如果我将主键更改为varchar,那么该键将发生变化,因此分区号可能会发生变化,在这种情况下,我如何保证事件总是有序地消耗?

  • 我在一个java类中定义某些变量,然后用另一个类访问它,以便在流中筛选唯一的元素。请参阅代码以更好地理解该问题。 我面临的问题是这个过滤函数不能很好地工作,无法过滤唯一的事件。我怀疑这个变量在不同的线程之间是共享的,它是原因!?如果这不是正确的方法,请建议另一种方法。提前道谢。

  • 问题内容: 当我尝试使用JMX监视这样的应用程序时: 它告诉我: 但是,当我用来限制读取访问权限时,它告诉我: 我疯了吗?我怎样才能解决这个问题? 这是Ubuntu btw,带有最新的oracle jdk 问题答案: 确保用于运行Java进程的用户有权访问该文件(所有者/读取权限)。 尝试: 另外,我建议您制作自己的密码文件并使用 全部在这里解释。

  • 为了在需要的时候能够检索要处理的数据,数据要存储在文件中。上一节演示丁怎样建立一个顺序访问的文件。这一节要讨论按顺序读取文件中的数据。 图14.7 中的程序读取文件"clients.dat"(图14.4中的程序建立)中的记录,并打印出了记录的内容。通过建立ifstream类对象打开文件以便输入。向对象传入的两个参数是文件名和文件打开方式。下列声明: ifstream inClientFile( "

  • 我有这个pom结构,我正在尝试访问属性。我无法通过另一个属性中心的资源筛选访问此内容。端口,在属性部分中定义 在中,我有属性文件,它有这个 我就像这样进入财产 但它会打印 <代码>轮毂${集线器端口} 我提到了这个问题,但我无法访问该物业。

  • 我正在开发一个Spring Boot应用程序,我在其中定义了要执行的过滤器,以管理令牌的获取和验证。因此,在我的Web安全类配置中,我设法做到了这一点: