PostgreSQL 10.1 手册_部分 III. 服务器管理_第 26 章 高可用、负载均衡和复制_26.1. 不同方案的比较

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 26.1. 不同方案的比较 共享磁盘故障转移 共享磁盘故障转移避免了只使用一份数据库拷贝带来的同步开销。 它使用一个由多个服务器共享的单一磁盘阵列。如果主数据库服务器失效, 后备服务器则可以挂载并启动数据库,就好像它从一次数据库崩溃中恢复过来了。

26.1. 不同方案的比较

共享磁盘故障转移

共享磁盘故障转移避免了只使用一份数据库拷贝带来的同步开销。 它使用一个由多个服务器共享的单一磁盘阵列。如果主数据库服务器失效, 后备服务器则可以挂载并启动数据库,就好像它从一次数据库崩溃中恢复过来了。 这是一种快速的故障转移,并且不存在数据丢失。

共享硬件功能在网络存储设备中很常见。也可以使用一个网络文件系统, 但是要注意的是该文件系统应具有完全的POSIX行为 (见第 18.2.2 节)。 这种方法的一个重大限制是如果共享磁盘阵列失效或损坏, 主要和后备服务器都会变得无法工作。另一个问题是在主要服务器运行时, 后备服务器永远不能访问共享存储。

文件系统(块设备)复制

共享硬件功能的一种修改版本是文件系统复制, 在其中对一个文件系统的所有改变会被镜像到位于另一台计算机上的一个文件系统。 唯一的限制是该镜像过程必须能保证后备服务器有一份该文件系统的一致的拷贝 — 特别是对后备服务器的写入必须按照主控机上相同的顺序进行。 DRBD是用于 Linux 的一种流行的文件系统复制方案。

预写日志传送

温备和热备服务器能够通过读取一个预写式日志(WAL) 记录的流来保持为当前状态。如果主服务器失效, 后备服务器拥有主服务器的几乎所有数据, 并且能够快速地被变成新的主数据库服务器。这可以是同步的或异步的, 并且只能用于整个数据库服务器。

可以使用基于文件的日志传送(第 26.2 节)、 流复制(见第 26.2.5 节) 或两者的组合来实现一个后备服务器。关于热备的信息可见 第 26.5 节

逻辑复制

逻辑复制允许数据库服务器将数据修改流发送到另一台服务器。 PostgreSQL逻辑复制从WAL构造一个逻辑数据修改流。 逻辑复制允许复制单个表中的数据更改。逻辑复制不需要将特定服务器指定为主服务器或副本, 但允许数据在多个方向上流动。有关逻辑复制的更多信息, 请参阅<第 31 章。通过逻辑解码接口 (第 48 章),第三方扩展还可以提供类似的功能。

基于触发器的主-备复制

一个主-备复制设置会把所有数据修改查询发送到主服务器。 主服务器异步地将数据修改发送给后备服务器。当主服务器正在运行时, 后备服务器可以回答只读查询。后备服务器对数据仓库查询是一种理想的选择。

Slony-I是这种复制类型的一个例子。它使用表粒度, 并且支持多个后备服务器。因为它会异步更新后备服务器(批量), 在故障转移时可能会有数据丢失。

基于语句的复制中间件

通过基于语句的复制中间件,一个程序拦截每一个 SQL 查询并把它发送给一个或所有服务器。 每一个服务器独立地操作。读写查询必须被发送给所有服务器, 这样每一个服务器都能接收到任何修改。但只读查询可以被只发送给一个服务器, 这样允许读负载在服务器之间分布。

如果查询被简单地且未经修改地广播,random()、 CURRENT_TIMESTAMP之类的函数以及序列在不同服务器上可能有不同的值。 这是因为每一个服务器会独立地操作,并且 SQL 查询被广播(而不是真正被修改的行)。 如果这不可接受,中间件或应用必须从一个单一服务器查询这样的值并且然后将那些值用在写查询中。 另一个选项是将这个复制选项和一种传统主-备设置一起使用, 即数据修改查询只被发送给主服务器并且通过主-备复制传播到后备服务器, 而不是通过复制中间件。必须要注意的是,所有事务要么在所有服务器上都提交, 要么在所有服务器上都中止,也许可以使用两阶段提交(PREPARE TRANSACTION 和COMMIT PREPARED)。Pgpool-II 和Continuent Tungsten是这种复制类型的例子。

异步多主控机复制

对于不会被定期连接的服务器(如笔记本或远程服务器), 保持服务器间的数据一致是一个挑战。通过使用异步的多主控机复制, 每一个服务器独立工作并且定期与其他服务器通信来确定冲突的事务。 这些冲突可以由用户或冲突解决规则来解决。Bucardo 是这种复制类型的一个例子。

同步多主控机复制

在同步多主控机复制中,每一个服务器能够接受写请求,并且在每一个事务提交之前, 被修改的数据会被从原始服务器传送给每一个其他服务器。 繁重的写活动可能导致过多的锁定,进而导致很差的性能。事实上, 写性能通常比一个单一服务器还要糟。读请求可以被发送给任意服务器。 某些实现使用共享磁盘来减少通信负荷。同步多主控机复制主要对于大多数读负载是最好的, 尽管它的大优点是任意服务器都能接受写请求 — 没有必要在主服务器和后备服务器之间划分负载, 并且因为数据修改被从一个服务器发送到另一个服务器, 不会有非确定函数(如random())的问题。

PostgreSQL不提供这种复制类型, 尽管在应用代码或中间件中可以使用PostgreSQL的两阶段提交 (PREPARE TRANSACTIONCOMMIT PREPARED) 来实现这种复制。

商业方案

因为PostgreSQL是开源的并且很容易被扩展, 一些公司已经使用PostgreSQL并且创建了带有唯一故障转移、 复制和负载均衡能力的商业性的闭源方案。

表 26.1总结了上述多种方案的能力。

表 26.1. 高可用、负载均衡和复制特性矩阵

特性 共享磁盘故障转移 文件系统复制 预写日志传送 逻辑复制 基于触发器的主-备复制 基于语句的复制中间件 异步多主控机复制 同步多主控机复制
最通用的实现 NAS DRBD 内置流复制 内置逻辑复制,pglogical Londiste, Slony pgpool-II Bucardo  
通信方法 共享磁盘 磁盘锁 WAL 逻辑解码 表行 SQL 表行 表行和行锁
不要求特殊硬件  
允许多个主控机服务器        
无主服务器负载        
不等待多个服务器   with sync off with sync off    
主控机失效将永不丢失数据 with sync on with sync on    
复制接受只读查询     with hot standby
每个表粒度        
不需要冲突解决      

有一些方案不适合上述的类别:

数据分区

数据分区将表分开成数据集。每个集合只能被一个服务器修改。例如, 数据可以根据办公室划分,如伦敦和巴黎,每一个办公室有一个服务器。 如果查询有必要组合伦敦和巴黎的数据,一个应用可以查询两个服务器, 或者可以使用主/备复制来在每一台服务器上保持其他办公室数据的一个只读拷贝。

多服务器并行查询执行

上述的很多方案允许多个服务器来处理多个查询, 但是没有一个允许一个单一查询使用多个服务器来更快完成。 这种方案允许多个服务器在一个单一查询上并发工作。 这通常通过把数据在服务器之间划分并且让每一个服务器执行该查询中属于它的部分, 然后将结果返回给一个中心服务器,由它整合结果并发回给用户。 Pgpool-II具有这种能力。同样,也可以使用 PL/Proxy工具集来实现这种方案。

本文转自PostgreSQL中文社区,原文链接: 26.1. 不同方案的比较
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
12月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL的服务器日志文件
本文介绍了PostgreSQL数据库的物理存储结构,重点讨论了服务器日志文件。通过`pg_ctl`命令启动PostgreSQL实例时,使用`-l`参数指定日志文件位置,记录数据库启动、运行及关闭过程中的关键信息。附有相关视频讲解和日志文件示例。
306 0
|
6月前
|
存储 监控 关系型数据库
B-tree不是万能药:PostgreSQL索引失效的7种高频场景与破解方案
在PostgreSQL优化实践中,B-tree索引虽承担了80%以上的查询加速任务,但因多种原因可能导致索引失效,引发性能骤降。本文深入剖析7种高频失效场景,包括隐式类型转换、函数包裹列、前导通配符等,并通过实战案例揭示问题本质,提供生产验证的解决方案。同时,总结索引使用决策矩阵与关键原则,助你让索引真正发挥作用。
383 0
|
3月前
|
关系型数据库 Linux PHP
开源站群服务器方案:构建高效流量矩阵的全攻略
正在寻找高性价比、可控性强且功能强大的站群解决方案?小编将深度解析开源站群服务器方案,从核心优势、主流工具选型到部署实践,助您构建稳定、高效的站群流量体系。
|
4月前
|
存储 固态存储 Linux
从 0 学服务器虚拟化:VMware 搭建 3 个虚拟主机,个人 / 小企业够用的方案
服务器虚拟化技术通过在单台物理机上运行多个虚拟机,显著提升资源利用率和管理灵活性。本文以 VMware ESXi 8.0 Update 3e 为例,详解如何搭建经济实用的虚拟化环境,支持 3 个虚拟主机稳定运行,适合个人开发者和小企业降低硬件投入、实现数据本地化与安全存储。
840 0
|
5月前
|
运维 前端开发 JavaScript
半夜服务器告警不再错过!运维人员必备的语音通知方案
为解决深夜服务器宕机错过告警的问题,本文介绍一款专为个人开发者与运维人员设计的语音通知方案。通过电话直接推送重要告警,确保第一时间响应,避免故障扩大。支持多种编程语言调用,配置简单,3步即可完成,实时性强,适合各类关键业务场景。
431 5
|
4月前
|
弹性计算 监控 网络协议
香港云服务器访问速度慢?阿里云精品BGP线路EIP一键提速方案
香港云服务器因默认BGP线路访问不稳定,尤其中国大陆用户面临高延迟与丢包问题。本文详解问题根源,并介绍阿里云国际站推出的精品BGP线路EIP解决方案,通过直连优化显著降低延迟,提升稳定性,助力企业实现高效跨境网络访问。
|
4月前
|
运维 数据可视化 数据库
一小时搞定服务器软件部署:资深工程师实测方案
本文分享了一位运维工程师在短时间内将30个不同软件部署到新服务器上的实战经验。面对全新 Rocky Linux 系统,传统手工部署方式效率低下且容易出错。作者尝试多种自动化方案后,最终选择使用自动化部署工具,通过其内置的 Docker Compose 模板和可视化界面,实现快速、批量部署,大幅提升效率,30个应用仅用约1小时完成,显著节省时间和人力成本。
|
5月前
|
人工智能 负载均衡 监控
使用 Go 和 Gin 实现高可用负载均衡代理服务器
本文基于Go语言和Gin框架,实现了一个企业级负载均衡代理服务器,支持动态路由、健康检查、会话保持等功能。具备高可用性与高性能,单节点支持100k+ QPS,延迟达亚毫秒级,并提供完整的压力测试方案与优化建议。
160 7
|
7月前
|
存储 安全 关系型数据库
阿里云服务器选购配置方案云产品搭配指南参考
对于部分新手用户来说,面对阿里云众多的服务器配置和云产品,如何做出合适的选择,成为了大家比较关注的问题。本文将深入探讨阿里云服务器选择的相关知识,包括配置方案、云服务器活动以及云产品搭配策略,帮助您在众多选项中找到最适合自己的解决方案。
|
8月前
|
安全 网络安全 定位技术
网络通讯技术:HTTP POST协议用于发送本地压缩数据到服务器的方案。
总的来说,无论你是一名网络开发者,还是普通的IT工作人员,理解并掌握POST方法的运用是非常有价值的。它就像一艘快速,稳定,安全的大船,始终为我们在网络海洋中的冒险提供了可靠的支持。
251 22

推荐镜像

更多