使用pgpool或pgbouncer进行Postgresql复制

我正在寻找一个良好的configurationpostgresql复制与强大的故障转移策略(自我托pipe)。

实际上,我使用repmgr在master / slave中configuration了两个postgresql实例。 现在,我不知道在这两个实例之前应该放置什么来实现良好的故障转移。

我希望当主人倒下时,奴隶会自动向新的主人升职,而不会为客户停工。 我认为我应该把pgbool(或pgbouncer?)放在主/从postgres之前,但是为了避免把它作为单点故障,我应该有两个这样的实例,对不对? (这是我想到的一个例子: http : //i.imgur.com/yqky2bl.png )。

我的根本问题是如何configuration两个不同的pgpool实例的自动故障转移。 我怎么能确定这两个改变内部主/从configuration? 应该使用pgpool来创build故障转移或repmgr(更改两个pgpool实例的configuration)?

我有一些怀疑,我是在正确的方式,基本上是因为我没有find关于这种types的configuration大量的文档,以及如果例如主人回来在网上可能会发生几分钟的networking问题(所以postgres不是真的下降,但它是无法由客户端)。

为了使事情更加复杂,我试图用dockerconfiguration这个基础设施(但也许可以更简单,因为我可以销毁一个pg实例,并用docker创build一个新实例)。

我从来没有使用docker,所以不能评论这一点,但我会build议(我用这个在长时间大量,大量使用的数据库的生产),在我看来,进入的方式复杂)集群设置: corosync和起搏器 。 使用pgsql资源代理和连接客户端的虚拟浮动IP 。

如果你从来没有使用过这种设置/软件堆栈,那么看看这个教程或那个 教程 。 另外这里是PGConf.Russia去年举办的关于这个话题的幻灯片(注意,这是一个.pdf,如果这对你很重要)。 如果你走这条路,遇到特定的问题,请打开一个新的问题,然后ping我(例如,通过使用@gf_的注释),我可能会提供帮助。

编辑:还有一个名为PostgreSQL自动故障转移PAF的新项目,它是一个专门用于PostgreSQL的新的OCF资源代理,它最初的愿望是保持Pacemakerpipe理和PostgreSQL之间的明确界限,保持简单,logging,但function强大。[…]“第一次提交是在2016年2月,所以它还是相当年轻,但也许这也值得一看。 (但是,我不能评论也不能判断,因为我从来没有用过。)