Postgresql 12 流复制:恢复的副本但仍然无法正常工作

时间:2021-04-28 21:47:54

标签: postgresql

在我更改 PostgreSQL 配置后,主服务器和辅助服务器开始显示“请求的 WAL 段已被删除”错误。 因此,我决定使用以下步骤从主服务器恢复备份:

  • 关闭副本服务器。
  • 已删除副本 (/var/lib/postgresql/12/main) 上的 PostgreSQL 数据目录
  • 执行基本备份 (sudo -u postgres pg_basebackup -h [PRIMARY_IP] -D /var/lib/postgresql/12/main -U replication -P -v -R) 并成功完成。
  • 再次开始复制。

但是上面提到的错误仍然显示。

主从配置:

wal_level = 'replica'
archive_mode = on
archive_command = 'cd .'
max_wal_senders = 48
wal_keep_segments = 50
hot_standby = on

当我运行 pg_basebackup .. 命令时,我得到了这个日志:

pg_basebackup: checkpoint completed
pg_basebackup: write-ahead log start point: 188/92000148 on timeline 1
pg_basebackup: starting background WAL receiver

我很好奇为什么它说的是 188,而不是 0。

1 个答案:

答案 0 :(得分:2)

您需要一个复制槽来防止主服务器删除备用服务器仍然需要的 WAL。

  • 在主节点上使用 pg_create_logical_replication_slot 创建复制槽。

  • 使用带有 -Spg_basebackup 选项的复制槽。

  • 确保在备用配置中设置了 primary_slot_namepg_basebackup-R 选项会自动执行此操作。

相关问题