我正在评估 PostgreSQL 9.1 并且几乎没有与故障转移和复制细节相关的问题。
我的测试场景很少。第一个有一个主服务器和几个从服务器。如果 Master 崩溃,我希望其中一个 Slaves 成为 Master。在 Master 恢复正常状态后,它应该与集群中的其他服务器同步(应用它关闭时所做的所有更改)并重新声明 Master 角色或成为 Slave。
我在 PostgreSQL 和当前场景中看到的问题如下。
1) 我没有看到用于检测主服务器中断的内置工具。我读到 pgpool 可以处理它并创建触发器文件,我还读到人们为此使用 Linux 心跳或类似工具。好的,我可以检测故障转移并在集群中分配一个新的 Master。其他Slaves会不会明白有一个新的Master,他们现在应该备份它?
2) 我不明白故障回复程序。Master 和 Slave 主机配置不同。那么在崩溃的 Master 故障回复之后我会有两个 Master 吗?服务器将如何恢复同步?我只看到手动解决方案,例如“将数据文件夹传输到服务器并重新启动它”。那么这里的解决方案或最佳实践或至少是关键原则是什么?
3)我应该如何处理客户端的服务器中断?创建连接时,我明确指定了服务器 IP。我是否应该开发某种连接管理器,它会知道我的主从结构,仅向主发送请求,并且在连接丢失的情况下将切换到备份服务器等等?我读到 pgpool 可以作为应用程序的入口点并以正确的方式管理连接。pgpool 是这里唯一的解决方案吗?它是否能很好地处理故障转移和故障恢复?
4)是否有任何解决方案(商业),这样我就可以避免手动复制数据、重新配置 PostgreSQL 实例和其他应该手动完成的事情?那种大家同步的集群配置,谁是Master一目了然,一切自动切换,无需操作员注意?
根据这些线程和文章
http://denishjpatel.blogspot.com/2010/11/possibility-of-graceful-switchover.html
没有单一的全自动解决方案可以解决这些问题。我对吗?
谢谢!