第 26 章。高可用性,负载平衡和复制

目录

数据库服务器可以协同工作,以在主服务器发生故障时(高可用性)允许第二台服务器快速接管,或者允许多台计算机提供相同的数据(负载平衡)。理想情况下,数据库服务器可以无缝地协同工作。仅通过对多台计算机的 Web 请求进行负载平衡,即可非常轻松地组合为静态网页提供服务的 Web 服务器。实际上,只读数据库服务器也可以相对容易地组合。不幸的是,大多数数据库服务器具有请求的读/写混合,并且读/写服务器很难组合。这是因为尽管只读数据仅需要在每个服务器上放置一次,但是必须将对任何服务器的写操作传播到所有服务器,以便将来对这些服务器的读取请求返回一致的结果。

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

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

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

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

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

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