2024 年 9 月 26 日: PostgreSQL 17 发布!
支持的版本:当前 (17) / 16 / 15 / 14 / 13 / 12
开发版本:devel
不支持的版本:11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2

第 26 章。高可用性、负载均衡和复制

数据库服务器可以协同工作,允许第二个服务器在主服务器出现故障时快速接管(高可用性),或允许多台计算机提供相同的数据(负载均衡)。理想情况下,数据库服务器可以无缝地协同工作。提供静态网页的 Web 服务器可以通过简单地将 Web 请求负载均衡到多台机器来轻松地组合在一起。事实上,只读数据库服务器也可以相对容易地组合在一起。不幸的是,大多数数据库服务器都有读写混合的请求,而读写服务器的组合要困难得多。这是因为尽管只读数据只需要在每个服务器上放置一次,但对任何服务器的写入都必须传播到所有服务器,以便将来对这些服务器的读取请求返回一致的结果。

此同步问题是服务器协同工作的根本难题。由于没有一个解决方案可以消除所有用例中同步问题的影响,因此有多种解决方案。每种解决方案都以不同的方式解决此问题,并最大限度地减少其对特定工作负载的影响。

一些解决方案通过只允许一个服务器修改数据来处理同步。可以修改数据的服务器被称为读写、服务器或服务器。跟踪主服务器更改的服务器被称为备用服务器或服务器。一个在升级为主服务器之前无法连接的备用服务器被称为温备用服务器,而一个可以接受连接并提供只读查询的服务器被称为热备用服务器。

一些解决方案是同步的,这意味着只有在所有服务器都提交了事务后,数据修改事务才被认为已提交。这保证了故障转移不会丢失任何数据,并且无论查询哪个服务器,所有负载均衡服务器都将返回一致的结果。相比之下,异步解决方案允许在提交时间和传播到其他服务器之间存在一些延迟,这有可能导致某些事务在切换到备份服务器时丢失,并且负载均衡服务器可能会返回稍微过时的结果。当同步太慢时,使用异步通信。

解决方案也可以按粒度进行分类。一些解决方案只能处理整个数据库服务器,而另一些解决方案允许在每个表或每个数据库级别进行控制。

在任何选择中都必须考虑性能。通常在功能和性能之间存在权衡。例如,通过慢速网络的完全同步解决方案可能会将性能降低一半以上,而异步解决方案可能会对性能的影响最小。

本节的其余部分概述了各种故障转移、复制和负载均衡解决方案。

提交更正

如果您在文档中看到任何不正确的内容,与您对特定功能的体验不符,或者需要进一步说明,请使用此表格报告文档问题。