主人:
postgresql.conf的复制配置如下(为简洁起见,注释行):
max_wal_senders = 1 wal_keep_segments = 8
在奴隶:
与master相同的postgresql.conf. recovery.conf如下所示:
standby_mode = 'on' primary_conninfo = 'host=master1 port=5432 user=replication password=replication' trigger_file = '/tmp/postgresql.trigger.5432'
当初始设置时,我们进行了一些简单的测试,并确认复制正在运行.然而,当我们做了初始的数据加载时,只有一些数据被提供给从站.
奴隶的日志现在已经填满了这样的消息:
< 2015-01-23 23:59:47.241 EST >LOG: started streaming WAL from primary at F/52000000 on timeline 1 < 2015-01-23 23:59:47.241 EST >FATAL: could not receive data from WAL stream: ERROR: requested WAL segment 000000010000000F00000052 has already been removed < 2015-01-23 23:59:52.259 EST >LOG: started streaming WAL from primary at F/52000000 on timeline 1 < 2015-01-23 23:59:52.260 EST >FATAL: could not receive data from WAL stream: ERROR: requested WAL segment 000000010000000F00000052 has already been removed < 2015-01-23 23:59:57.270 EST >LOG: started streaming WAL from primary at F/52000000 on timeline 1 < 2015-01-23 23:59:57.270 EST >FATAL: could not receive data from WAL stream: ERROR: requested WAL segment 000000010000000F00000052 has already been removed
经过对#postgresql IRC频道的一些分析和帮助之后,我得出结论,奴隶无法跟上主人.我提出的解决方案如下.
主人:
>设置max_wal_senders = 5
>设置wal_keep_segments = 4000.是的,我知道这是非常高的,但我想监控情况,看看会发生什么.我有主人的空间.
在奴隶:
>将配置文件保存在数据目录中(即pg_hba.conf pg_ident.conf postgresql.conf recovery.conf)
>清除数据目录(rm -rf /var/lib/pgsql/9.3/data/*).这似乎是pg_basebackup需要的.
>运行以下命令:
pg_basebackup -h master -D /var/lib/pgsql/9.3/data –username = replication – 密码
我错过了什么吗?有没有更好的方法来使奴隶最新的w / o必须重新加载所有的数据?
任何帮助是极大的赞赏.
> wal_keep_segments应该设置得足够高,以允许从属在合理的滞后之后赶上(例如,高更新量,从机脱机等).
> archive_mode启用可用于恢复早于wal_keep_segments的文件的WAL归档.从属服务器只需要一种方法来检索WAL段. NFS是最简单的方法,但是从scp到http到磁带的任何操作都可以工作,只要它可以脚本化.
# on master archive_mode = on archive_command = 'cp %p /path_to/archive/%f' # on slave restore_command = 'cp /path_to/archive/%f "%p"'
当从站不能从主站直接拉出WAL段时,它将尝试使用restore_command来加载它.您可以将从站配置为使用archive_cleanup_command
setting自动删除段.
如果从属设备遇到需要的下一个WAL分段从主机和归档中丢失的情况,则无法一致地恢复数据库.唯一合理的选择是擦洗服务器,并从新鲜的pg_basebackup
重新开始.