如何解决一个PostgreSQL 9.3从站,无法跟上主人?

前端之家收集整理的这篇文章主要介绍了如何解决一个PostgreSQL 9.3从站,无法跟上主人?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们有一个主从复制配置如下.

主人:

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必须重新加载所有的数据?

任何帮助是极大的赞赏.

处理 streaming replication streaming replication的两个重要选择:

> 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_commandsetting自动删除段.

如果从属设备遇到需要的下一个WAL分段从主机和归档中丢失的情况,则无法一致地恢复数据库.唯一合理的选择是擦洗服务器,并从新鲜的pg_basebackup重新开始.

猜你在找的Postgre SQL相关文章