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

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
日志服务 SLS,月写入数据量 50GB 1个月
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
简介: 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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
6月前
|
弹性计算 监控 负载均衡
|
1月前
|
存储 弹性计算 容灾
阿里云服务器ECS详细购买流程【新手购买手册】
本文详细介绍了阿里云服务器ECS的购买全流程,包括付费类型、地域选择、网络及可用区配置、实例规格、镜像系统、存储设置(系统盘与数据盘)、快照服务、公网IP与带宽配置、安全组规则设定以及登录凭据设置等关键步骤。以自定义购买为例,帮助用户根据实际需求选择合适的配置,如长时间使用建议包年包月模式,地域选择遵循就近原则降低延迟,实例规格依据性能需求挑选,同时提供带宽计费模式对比和安全组基础配置指导。通过清晰的图文说明,让用户轻松完成阿里云服务器的选购与部署。
303 6
|
3月前
|
弹性计算 负载均衡 Java
【上云基础系列 02-01】通过SLB+1台ECS+ESS弹性伸缩,搭建一个精简版的上云标准弹性架构(含方案及教程)
通常,构建一个弹性架构(即使是一个最基础的入门版),至少需要2台ECS。但是,很多小微企业刚开始上云的时候,为了节省成本不愿意购买更多的服务器。通过 “ALB+ESS弹性伸缩+1台ECS+RDS”方案,在保障低成本的同时,也不牺牲业务架构的弹性设计,更避免了很多人因为节省成本选择了单体架构后频繁改造架构的困局。 方案中的几个设计非常值得小微企业借鉴:(1)通过ALB/RDS的按量付费,节省了初期流量不大时的费用;(2)通过ESS弹性伸缩,不需要提前购买服务器资源,但是当业务增长或减少时却保持了资源弹性自动扩缩容。
|
5月前
|
弹性计算 负载均衡 网络协议
ECS中实现nginx4层7层负载均衡和ALB/NLB原SLB负载均衡
通过本文的介绍,希望您能深入理解并掌握如何在ECS中实现Nginx四层和七层负载均衡,以及如何使用ALB和NLB进行高效的负载均衡配置,以提高系统的性能和可靠性。
439 9
|
5月前
|
运维 监控 负载均衡
slb后端服务器故障
slb后端服务器故障
121 13
|
6月前
|
弹性计算 负载均衡 安全
slb应用服务器对Host头有校验要求
slb应用服务器对Host头有校验要求
99 6
|
6月前
|
监控 负载均衡 算法
slb管理后端服务器
【10月更文挑战第18天】
78 5
|
7月前
|
弹性计算 负载均衡 算法
负载均衡如何帮助阿里云国际服务器搭建的网站或应用程序?
负载均衡如何帮助阿里云国际服务器搭建的网站或应用程序?
|
7月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
118 1
|
9月前
|
运维 监控 关系型数据库
【一文搞懂PGSQL】7. PostgreSQL + repmgr + witness 高可用架构
该文档介绍了如何构建基于PostgreSQL的高可用架构,利用repmgr进行集群管理和故障转移,并引入witness节点增强网络故障检测能力。repmgr是一款轻量级的开源工具,支持一键部署、自动故障转移及分布式节点管理。文档详细描述了环境搭建步骤,包括配置postgresql参数、安装与配置repmgr、注册集群节点以及配置witness节点等。此外,还提供了故障手动与自动切换的方法及常用命令,确保集群稳定运行。

热门文章

最新文章