我对归档日志清理有类似的问题

问题描述

目前在 master postgres.conf 中它是这样说的 archive_command = 'cp "%p" "/var/lib/postgresql/9.6/archive/%f"'

在备用 postgres.conf 中:

# - Archiving -

archive_mode = on               # enables archiving; off,on,or always
#archive_command = '/bin/true'                          # (change requires restart)
archive_command = 'cp "%p" "/var/lib/postgresql/9.6/archive/%f"'                # command to use to archive a logfile segment
                                # placeholders: %p = path of file to archive
                                #               %f = file name only
                                # e.g. 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f'
#archive_timeout = 0            # force a logfile segment switch after this
                                # number of seconds; 0 disables

在 Standby recovery.conf 中:

postgres@e142pu-mam-db1:~$ cat /var/lib/postgresql/9.6/main/recovery.conf
standby_mode = 'on'
primary_conninfo = 'host=10.37.76.107 port=5432 user=replication password='
trigger_file = '/var/tmp/standby.trig'
restore_command = 'cp "%p" "/var/lib/postgresql/9.6/archive/%f"'

不知何故,我觉得我没有正确配置它。请分享您的建议

解决方法

由于 archive_mode 只是“开启”,而不是“始终”,因此备用服务器上的 archive_command 不会执行任何操作(除非它被提升)。

你的 restore_command 没有任何意义。参数的顺序必须颠倒,以便它有希望起作用。显然,您的备用数据库完全脱离了流式传输,实际上并没有使用任何日志传送。

如果您拥有 WAL 存档的唯一原因是用于日志传送,而您甚至没有为此使用它,那么清理可能非常简单,只需将其删除即可。