9.3 9.4 9.5 9.6 10 11 12 13 14 15 16 17 Current(18)
PostgreSQL中文社区 问题报告 纠错本页面

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

目录

26.1. 不同方案的比较
26.2. 日志传送后备服务器
26.2.1. 规划
26.2.2. 备用服务器操作
26.2.3. 为待机服务器准备主服务器
26.2.4. 设置待机服务器
26.2.5. 流复制
26.2.6. 复制槽
26.2.7. 级联复制
26.2.8. 同步复制
26.2.9. 备用机上的连续归档
26.3. 故障转移
26.4. 热备
26.4.1. 用户概览
26.4.2. 处理查询冲突
26.4.3. 管理员概览
26.4.4. 热备参数参考
26.4.5. 警告

数据库服务器可以一起工作,这样如果主服务器失效则允许第二个服务器快速接手(高可用性),或者可以允许多个计算机提供相同的数据(负载均衡)。理想情况下,数据库服务器能够无缝地一起工作。提供静态网页服务的网页服务器可以非常容易地通过将网页请求均衡到多个机器来组合。事实上,只读的数据库服务器也可以相对容易地组合起来。不幸的是,大部分数据库服务器收到的请求是读/写混合的,并且读/写服务器更难于组合。这是因为尽管只读数据只需要在每台服务器上放置一次,但对于任意服务器的一次写操作却必须被传播给所有服务器,这样才能保证未来对于那些服务器的读请求能返回一致的结果。

这种同步问题是服务器一起工作的最根本的困难。因为没有单一解决方案能够消除该同步问题对所有用例的影响。有多种解决方案,每一种方案都以不同的方式解决这个问题,并且对于一种特定的负载最小化了该问题所产生的影响。

某些方案通过只允许一台服务器修改数据来处理同步。能修改数据的服务器被称为读/写、主控服务器。跟踪主控机中改变的服务器被称为备用次级服务器。如果一台备用服务器只有被提升为一台主控服务器后才能被连接,它被称为一台温备用服务器,而一台总是能够接受连接并且提供只读查询的备用服务器被称为一台热备用服务器。

某些方案是同步的,即一个数据修改事务只有到所有服务器都提交了该事务之后才被认为是提交成功。这保证了一次故障转移不会丢失任何数据并且所有负载均衡的服务器将返回一致的结果(不管哪台服务器被查询)。相反,异步的方案允许在一次提交和它被传播到其他服务器之间有一些延迟,这产生了切换到一个备份服务器时丢失某些事务的可能性,并且负载均衡的服务器可能会返回略微陈旧的结果。当同步通信可能很慢时,可以使用异步通信。

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

在任何选择中,都必须考虑性能。通常在功能和性能之间都存在着权衡。例如,在一个低速网络上的一种完全同步的方案可能使性能减少超过一半,而一种异步的方案产生的性能影响可能是最小的。

本节的剩余部分勾勒了多种故障转移、复制和负载均衡方案。