我想要构建一个高度可用的PostgreSQL集群,使用patroni和etcd。我希望在集群中有3个服务器(1个主服务器和2个从服务器),所以如果出了问题,其中一个从服务器会自动接管主角色。只有主服务器才能接受写操作,而从服务器只是为了安全和读取操作。
另一方面,我还需要大约10台服务器,并提供集群上数据的最新副本。这些服务器只用于读取数据,其中任何服务器都不能升级到主服务器。它们甚至不应该是高可用集群的一部分。他们应该使用流复制等方式获取数据。
这样的设置可能吗?当其他服务器是赞助人集群的一部分时,我可以使用复制到它们吗?
发布于 2021-04-22 19:37:21
只有主服务器才能接受写操作符。
这几乎在所有情况下都得到了赞助者的保证。本质上,你需要恶意来引发一个“分裂大脑”的场景,在这个场景中,不止一个数据库接受在赞助人集群中的写入。针对这种情况,有几个层次的安全措施内置在赞助人中。
另一方面,我还需要大约10台服务器,并提供集群上数据的最新副本。这些服务器只用于读取数据,其中任何服务器都不能升级到主服务器。
这是一种简单而快捷的方法:在每个节点的配置文件中,您可以启用一个特殊的“标记”,即nofailover: true,因此这些数据库实例在领导人选举期间永远不会被考虑,即使它们位于同一个赞助人集群中。这样做的好处是,乘客仍然负责所有的管理,通过创建复制槽,运行pg_basebackup,保持配置同步等等。
https://patroni.readthedocs.io/en/latest/SETTINGS.html?highlight=nofailover#tags
最后,如果你不想直接在你的赞助人集群中拥有这些副本,那么你总是可以独立地设置额外的流复制,除了赞助人配置的之外,尽管我认为这只会使生活更加困难……
https://dba.stackexchange.com/questions/274756
复制相似问题