Postgresql 分布式postgres部署不同步

Postgresql 分布式postgres部署不同步,postgresql,database-replication,postgresql-9.4,Postgresql,Database Replication,Postgresql 9.4,我设置了一个分布式postgres数据库系统,并使用热备份级别配置了复制 有一个中央主数据库,其中有多个副本15,目前在世界各地用作只读实例—因此不需要故障切换—我们只希望将数据同步到远程位置,以便读取它们 大师: wal_level = hot_standby max_wal_senders = 20 checkpoint_segments = 8 wal_keep_segments = 8 客户: wal_level = hot_standby max_wal_senders =

我设置了一个分布式postgres数据库系统,并使用热备份级别配置了复制

有一个中央主数据库,其中有多个副本15,目前在世界各地用作只读实例—因此不需要故障切换—我们只希望将数据同步到远程位置,以便读取它们

大师:

wal_level = hot_standby
max_wal_senders = 20
checkpoint_segments = 8    
wal_keep_segments = 8
客户:

wal_level = hot_standby
max_wal_senders = 3
checkpoint_segments = 8    
wal_keep_segments = 8 
hot_standby = on
/客户端上的var/lib/postgresql/9.4/recovery.conf:

standby_mode = 'on'
primary_conninfo = 'host=<IP of master> port=5432 user=replicator password=xxxx sslmode=require'
trigger_file = '/tmp/postgresql.trigger'
大师:

wal_level = hot_standby
max_wal_senders = 20
checkpoint_segments = 8    
wal_keep_segments = 8
然后,面包上满是下面这样的信息——而且它永远不会恢复

2017-05-04 08:44:14 UTC [24850-1] replicator@[unknown] ERROR:  requested WAL segment 000000010000003500000014 has already been removed
2017-05-04 08:44:19 UTC [25958-1] replicator@[unknown] ERROR:  requested WAL segment 000000010000003500000014 has already been removed
2017-05-04 08:44:24 UTC [27063-1] replicator@[unknown] ERROR:  requested WAL segment 000000010000003500000014 has already been removed
2017-05-04 08:44:29 UTC [28144-1] replicator@[unknown] ERROR:  requested WAL segment 000000010000003500000014 has already been removed
2017-05-04 08:44:34 UTC [29227-1] replicator@[unknown] ERROR:  requested WAL segment 000000010000003500000014 has already been removed
2017-05-04 08:44:39 UTC [30316-1] replicator@[unknown] ERROR:  requested WAL segment 000000010000003500000014 has already been removed
...
客户:

2017-04-30 11:26:22 UTC [28474-1] LOG:  started streaming WAL from primary at 35/14000000 on timeline 1
2017-04-30 11:26:22 UTC [28474-2] FATAL:  could not receive data from WAL stream: ERROR:  requested WAL segment 000000010000003500000014 has already been removed
2017-04-30 11:26:26 UTC [29328-1] LOG:  started streaming WAL from primary at 35/14000000 on timeline 1
2017-04-30 11:26:26 UTC [29328-2] FATAL:  could not receive data from WAL stream: ERROR:  requested WAL segment 000000010000003500000014 has already been removed
2017-04-30 11:26:31 UTC [30394-1] LOG:  started streaming WAL from primary at 35/14000000 on timeline 1
2017-04-30 11:26:31 UTC [30394-2] FATAL:  could not receive data from WAL stream: ERROR:  requested WAL segment 000000010000003500000014 has already been removed
...
因此,我的问题是:

是否有更好的方法将更改同步到远程只读实例,或者我只是在配置中有错误,导致复制在一段时间后中断? :

最大值\u wal\u发送者整数

指定来自备用服务器的最大并发连接数 服务器或流式基础备份客户端,即 同时运行WAL发送方进程。默认值为零, 这意味着复制被禁用。WAL发送方进程计入 连接总数,因此该参数不能设置得更高 比最大的连接。突然断开流式客户端连接可能会导致 导致孤立连接插槽,直到达到超时,因此 参数的设置应略高于最大值 预期客户端,以便断开连接的客户端可以立即重新连接

我的。 应用程序连接或孤立连接导致您的

致命:抱歉,已经有太多客户端了

您可能希望对应用程序使用一些连接池,如pgbouncer,在实际发生连接之前限制过多的连接


在回答您的问题时,如果您将_命令集存档为实际复制WAL,请在slave上的recovery.conf中修改restore_命令以获取它们。它将允许从机从失去流量的那一刻起赶上。否则,您必须重建它。

如果您不使用recovery.conf中的archive_命令来保存WAL,并且您没有0000000 100000000003500000014确实,您必须重建复制请将问题数量减少到一个基本问题,与您的日志样本或配置相关联……下面的内容是什么意思?如果您不使用recovery.conf中的archive_命令来保存WAL,并且您没有0000000 100000000003500000014,我的意思是从设备无法连接到主设备足够长的时间,以至于它删除了您需要继续执行的WALreplication@VaoTsun:现在改为一个问题。谢谢!我将尝试将max_wal_senders增加到一个更高的数字。此外,我想让archive_命令和restore_命令起作用-您有需要做什么的示例吗?