gpt4 book ai didi

postgresql - 从给定的 LSN 开始的 postgres 逻辑复制

转载 作者:行者123 更新时间:2023-12-05 01:55:39 29 4
gpt4 key购买 nike

Postgres 逻辑复制初始同步过程非常缓慢,尤其是在原始数据库非常大的情况下。

我想知道是否可以从给定的 LSN 开始复制?

所需的工作流程将是

  1. 从源数据库获取当前LSN
  2. 在源数据库中创建所需对象的逻辑转储
  3. 在目标数据库上恢复转储
  4. 从第 1 步中获取的 LSN 开始逻辑复制

我没有找到任何允许第 4 步的文档,有人知道这是否可行吗?

最佳答案

The documentation给你一个提示:

When a new replication slot is created using the streaming replication interface (see CREATE_REPLICATION_SLOT), a snapshot is exported (see Section 9.27.5), which will show exactly the state of the database after which all changes will be included in the change stream. This can be used to create a new replica by using SET TRANSACTION SNAPSHOT to read the state of the database at the moment the slot was created. This transaction can then be used to dump the database's state at that point in time, which afterwards can be updated using the slot's contents without losing any changes.

所以步骤是:

  • 启动到数据库的复制连接:

    psql "dbname=yourdatabasename replication=database"
  • 创建一个复制槽并从输出中复制快照名称。在下一步之前保持连接打开很重要,否则快照将不复存在

    CREATE_REPLICATION_SLOT slot_name LOGICAL pgoutput;
  • 使用以下命令在快照中转储数据库。一旦开始,您可以关闭复制连接

    pg_dump --snapshot=snapshotname [...]
  • 将转储恢复到目标数据库。

  • 使用复制槽开始复制。

关于postgresql - 从给定的 LSN 开始的 postgres 逻辑复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70160769/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com