我们目前正在运行一个master – > slave,slave,slave,slave,使用postgresql 9.2.8和streaming以及WAL-E / S3来处理wal分段。
现在所有的副本都应该“恢复”吗? 运行SELECT pg_is_in_recovery(); 在他们所有的回报是真实的,这是有关的。 我们可以对它们运行查询(假设它们不超过30秒)。
我正在尝试使用WAL-E从其中一个现有的从设备上复制另一个副本,但是我现在无法做到这一点,因为每个副本都处于恢复模式。 我无法运行pg_basebackup或在副本上使用wal-e的备份function。
艾米我错过了明显的东西? 我能想到的唯一的事情就是大约2个月前我们遇到了一个问题,那就是我们的硬盘驱动器已经被我们的主人占满了,并且被closures了。 我们能够启动它,清除磁盘空间,并继续从主站进行stream式传输/复制。
如果我只是简单地启动3个postgresql服务器,并使用stream/归档在3个服务器链(master – > slave – > slave)中configuration它们,就可以正常使用WAL-E,就像我这样做了。 只是由于某种原因,我无法让我们现有的生产副本stream/存档到任何其他服务器。 具体来说,archive_command从不在任何副本上运行(因为它停留在恢复模式)。
有没有人有任何build议,我可以进一步debugging/诊断呢? 我试图find一个解决scheme,没有显着的停机时间到我们的生产数据库(因为我总是可以重新导入数据库到一个新的服务器,再次启动链,但这将需要12个多小时)。
这里是configuration细节: https ://gist.github.com/Geesu/1a696262e46ba9f0a24c以及local_backup_script.sh:https://gist.github.com/Geesu/3b8b35e108d8e2205da7
谢谢!
希望这仍然有资格作为你的问题的答案,即使我没有解决你的问题。
现在所有的副本都应该“恢复”吗? 运行SELECT pg_is_in_recovery(); 在所有>他们返回真实,这是关系。 我们可以在它们上运行查询
这个是正常的。 你的奴隶正在恢复,虽然是一个缓慢而永久的奴隶,但它仍然扼杀来自另一台服务器的WAL段(或stream)。
只是由于某种原因,我无法让我们现有的生产副本stream/存档到任何其他服务器。 具体来说,archive_command从不在任何副本上运行(因为它停留在恢复模式)。
你在哪里接受错误? 还记得stream媒体是由下游的奴隶发起的:他们在什么状态? 他们有什么数据? 当stream式连接尝试时是否logging了任何有趣的内容? 请记住,PostgreSQL的内置stream式复制独立于归档系统(假设下游机器是最新的)。 你可以代表复制用户build立连接吗?
有没有人有任何build议,我可以进一步debugging/诊断呢?
鉴于产品和您的试用版本之间的不一致性,听起来就像隐藏在某个地方的错误configuration,尽pipe我对WAL-E一无所知。 postgresql.conf的差异, pg_hba.conf (和recovery.conf我想)将是一个无聊但很好的开始。 在你的生产奴隶和工作之间,审判奴隶,就是。
你也可以检查pg_settings表的内容。 如果这些是长时间运行的生产机器,或许一个设置根本没有被应用? 而且我知道你会看到级联复制和它的要求的文档,但我把它们联系起来以防万一。