支持的版本: 当前 (17) / 16 / 15 / 14 / 13
开发版本: devel
不支持的版本: 12 / 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 服务器。 事实上,只读数据库服务器也可以相对容易地组合。 不幸的是,大多数数据库服务器都有读/写混合请求,并且读/写服务器更难组合。 这是因为尽管只读数据只需要在每个服务器上放置一次,但对任何服务器的写入都必须传播到所有服务器,以便将来对这些服务器的读取请求返回一致的结果。

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

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

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

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

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

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

提交更正

如果您发现文档中任何不正确、与特定功能的体验不符或需要进一步澄清的地方,请使用此表格报告文档问题。