0

我在两个 postgres 实例之间设置了几个(逻辑)复制表。所有 SELECT、INSERT、UPDATE、DELETE 事务都按预期复制。

我的用例是从逻辑转储文件(自定义格式、COPY 或 INSERT?)中恢复/附加数千行

TRUNCATE 没有被复制......据我了解(这也依赖于其他商业数据库供应商如何做到这一点的知识),因为它绕过了复制机制所需的事务日志(如果逻辑复制依赖于WAL 段?)

由于我找不到任何有关它的文档,我想知道是否:

  • COPY 绕过事务日志(WAL)?
  • COPY 对逻辑复制有任何限制,因此实际上在复制环境中必须使用 INSERT?

PS对不起,如果我在这里混淆了东西,我真的很想澄清这些主题,以更好地了解它们是如何协同工作的

4

1 回答 1

1

有几件事要正确设置:

  • 逻辑复制支持TRUNCATE

    TRUNCATE支持命令复制

    这是在 v11 中引入的

  • 既不COPY也不TRUNCATE绕过 WAL

  • COPY数据总是通过逻辑复制进行复制,就像所有其他数据修改语句一样

于 2021-02-03T09:34:31.563 回答