在我更改 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。
答案 0 :(得分:2)
您需要一个复制槽来防止主服务器删除备用服务器仍然需要的 WAL。
在主节点上使用 pg_create_logical_replication_slot
创建复制槽。
使用带有 -S
的 pg_basebackup
选项的复制槽。
确保在备用配置中设置了 primary_slot_name
。 pg_basebackup
的 -R
选项会自动执行此操作。