我们正在运行基于 Postgres 14.5 数据库的备份过程pg_basebackup
,该过程会创建大量 WAL 存档文件并占用大量磁盘空间。由于我们并不真正需要 WAL 存档,因此我想禁用 WAL 存档并更改了这些值(其他所有内容都是纯默认值):
archive_mode = off # was 'on' before
wal_level = minimal # was 'replica' before (there's only a single db instance running)
max_wal_senders = 0 # was '10' before (but wal_level = minimal seems to require '0')
也许没有真正需要降低wal_level
fromreplica
到minimal
,但是WAL 文档说明了对于我的不太重要的数据库来说似乎完全足够了:
minimal
删除除从崩溃或立即关闭中恢复所需的信息之外的所有日志记录。
不幸的是,经过上述配置后,备份过程现在失败并出现以下错误:
FATAL: number of requested standby connections exceeds max_wal_senders (currently 0)
换句话说,max_wal_senders
必须是零并且同时大于零!我该怎么做才能摆脱这个僵局?
不定
wal_level = minimal
,不定max_wal_senders = 0
,走开wal_level = replica
。pg_basebackup
使用内置复制机制在服务器运行时(并可能修改数据)执行一致的备份。