如果辅助/备用崩溃,Postgres 同步复制是否可以停止集群?

Cha*_*Kut 5 postgresql replication postgresql-9.3

在使用 Postgres 同步复制的设置中,假设其中一台辅助/备用机器崩溃,这会锁定/停止主机器吗?也就是说,由于 Postgres master 在提交写入事务之前总是等待来自辅助/备用的确认,那么如果辅助/备用无法访问,那么主会停止运行吗?Postgres 如何处理这种情况?

Cra*_*ger 6

在使用 Postgres 同步复制的设置中,假设其中一台辅助/备用机器崩溃,这会锁定/停止主机器吗?

是的,设计使然。看说明书:

如果辅助/备用无法访问,主将停止运行吗?

它仍将提供只读查询,但提交将阻塞并且直到副本恢复后才会返回。如果您可以接受一些未同步复制的SET LOCAL synchronous_commit = off事务,并且在这些事务中拥有它们,则它们将无阻塞地提交。

Postgres 如何处理这种情况?

如上所述,您可以配置多个同步副本以减轻潜在的生产影响。PostgreSQL 会按照您的指示执行操作,并且在复制之前不会确认提交。

如果您不想这样做,请使用异步复制。“同步复制”的想法在副本离线时主节点可以继续工作是荒谬的。