如何解决一个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 在奴隶: >将配置文件保存在数据目录中(即pg_hba.conf pg_ident.conf postgresql.conf recovery.conf) 我错过了什么吗?有没有更好的方法来使奴隶最新的w / o必须重新加载所有的数据? 任何帮助是极大的赞赏.
处理
streaming replication
streaming replication的两个重要选择:
> wal_keep_segments应该设置得足够高,以允许从属在合理的滞后之后赶上(例如,高更新量,从机脱机等). # 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来加载它.您可以将从站配置为使用 如果从属设备遇到需要的下一个WAL分段从主机和归档中丢失的情况,则无法一致地恢复数据库.唯一合理的选择是擦洗服务器,并从新鲜的 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |