问题描述
目前在 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 存档的唯一原因是用于日志传送,而您甚至没有为此使用它,那么清理可能非常简单,只需将其删除即可。