【问题标题】:Order of inital snapshot events in DebeziumDebezium 中初始快照事件的顺序
【发布时间】:2020-02-09 00:59:09
【问题描述】:

在我们的应用程序中,我们需要将某个 postgresql 表中的事件发布到 Kafka,因此我们决定使用 Debezium,但遇到了以下问题:在初始快照消息意外出现在 Kafka 中(从我们的角度来看)命令。 事件顺序对我们的应用程序至关重要,实际上它们必须按表的整数主键排序。 AFAIK 初始快照只是表中的 SELECT,没有 ORDER BY。 那么有没有办法或解决方法让 Debezuim postgresql 连接器按特定顺序提取事件?

提前致谢!

【问题讨论】:

    标签: postgresql debezium


    【解决方案1】:

    查看connector docs 中的snapshot.select.statement.overrides 属性。它允许您自定义用于特定表的 SELECT 语句,因此您可以附加所需的 ORDER BY 子句。

    【讨论】:

      【解决方案2】:

      不保证事务日志中的插入顺序与自动生成的主键顺序相同。在高并发的情况下,不同的顺序是很正常的。

      如果交易时间短,顺序不要太乱。

      无论如何,在 PostgreSQL 端对此您无能为力。

      【讨论】:

      • 快照不是基于读取 WAL,而是通过使用 SELECT 语句扫描表。它们可以按照我的回答中所述进行定制。
      • 劳伦兹,谢谢您的回答!除了问题的主题之外,您让我意识到我的 order 字段可能不代表实际的提交顺序,这对我们的系统来说是非常重要的问题。将尝试使用 Advisory_xact 锁解决它
      • 是的,对于这样的事情,您必须序列化交易。当然,这对并发性不利。
      • 没错,但似乎是唯一的选择
      猜你喜欢
      • 2020-12-06
      • 2020-08-22
      • 2021-07-18
      • 2020-09-27
      • 2021-07-25
      • 2020-07-20
      • 1970-01-01
      • 2015-11-22
      • 1970-01-01
      相关资源
      最近更新 更多