暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
PostgreSQL高可用性与负载均衡原理及实例.doc
186
7页
5次
2022-08-09
免费下载
PostgreSQL
高可用性与负载均衡原
理及实例
多个数据库服务器可以协同工作,比如在主服务器失效的时候备份服务器立即
取代它的位置
高可用性
,或者几台机器同时服务于同一个数据库
负载均衡
理 想状态多台服务器之间可以无缝协作。为静态页面提供服务的

服务器
可以轻松的通过将

请求分摊到多台机器从而实现负载均衡。事实上,只
读数据库也能轻松的以相同的方法实现负载均衡。不幸的是,大多数数据库服
务器都需要同时处理混合的读
写 请求,将这些数据库联合起来工作是件很麻
烦的事。虽然只读数据只需要在每台服务器上复制一份即可,但是在任何一台
服务器上的写动作都必须传播到其它所有服 务器上,这样才能保证将来对这些
已修改数据的读取返回一致的结果。
这个写同步问题就是导致多台服务器协同工作麻烦重重的最基本原因。有多种
解决此问题的方法,其思路也各不相同,但都不是既简单又高效的方案。
有一种解决方案是仅允许单独的一台
服务器修改数据,其它
服务器只
能读取数据,还可能存在平时不允许访问、仅在失效切换后代替主服务器的
服务器。
一些失效切换和负载均衡方案是
同步的
,意思是直到所有服务器都完成了某
个修改数据的事务之后,该事务才被认为是已经完成的。这将确保失效切换不
会丢失 任何数据并且所有服务器都将返回一致的结果。另一些方案是
异步的
这种方案允许在事务提交之后与传播到所有其它服务器之间有一小段延时,但
是在切换到 备份服务器的时候某些事务可能会丢失,并且不同的服务器可能返
回不一致的结果。当同步可能会很慢的时候可以使用异步通信。
还可以按照粒度对解决方案进行分类。某些方案只能将整个数据库集群作为一
个整体,而某些方案可以针对每个数据库或每张表分别做不同的处理。
在选择任何失效切换或负载均衡方案的时候都必须考虑性能因素。功能和性能
不可兼得,比如,一个完全同步的解决方案在慢速网络上可能削减性能一半以
上,而完全异步的方案可能仅对性能有极其微小的影响。
下面的部分大致描述了各种常见的失效切换、复制、负载均衡方案。
共享磁盘失效切换
共享磁盘失效切换通过仅保存一份数据库副本来避免花在同步上的开销。
这个方案让多台服务器共享使用一个单独的磁盘阵列。如果主服务器失
效,备份服务器将立即挂载该数据库,就是从一次崩溃中恢复一样。
这个方案允许速的失效切换并且不会丢失数据。
共享件的功能通常网络存储设备提供,也可以使用完全

行为的网络系统

。这种方案的局限性在于如果共享的磁盘阵
损坏了,那么整个系统将会瘫痪。另一个局限是备份服务器在主服务
行的时候不能访问共享的存器。
一种改进的方案是系统复制系统的任何改都将镜像到备
份服务器上。这个方案的局限是必须确保备份服务器的镜像与主服
务器完全一致,别是写入顺序必须完全相同。


上的一
行的系统复制方案。
使用即时

备份
备份服务器

可以通过读取

记录流来保数据库的
状态。如果主服务器失效,那么热备份服务器将包含所有主服
务器的数据,并可以速的将自己切换为主服务器。这是一个异步方案,
并且只能在整个数据库服务器上实
 !"#$%!&
服务器复制
这个方案将所有修改数据的请求发送到主服务器。主服务器异步从服
务器发送数据的改信。从服务器在主服务器行的情况下只应答
请求。对于数据库的请求来,从服务器常理想的。
%'(
是这个方案的一个例,它支持针对每个表的粒度并支持多个
从服务器。因为它异步、批量更新从服务器,在失效切换的时候可能
会有数据丢失。
基于语句的复制间件
可以使用一个基于语句的复制间件程序截取每一个
)
查询,并将其
发送到某一个或者全部服务器。每一个服务器都独立行。写请求发送
所有服务器,读请求发送给某一个服务器,从而实现读取的负载
均衡。
如果只是简单的广播修改数据的
)
语句那么
$!*'+,
-./0 / 
以及数在不同的服务器上将成不同的
结果。这是因为每个服务器都独立行并且广播的是
)
语句而不是如
何对行进行修改。如果这种结果是不可接受的,那么中间件或者
必须保证始终从同一个服务器读取这些并将其用到写请求
还必须保证每一个事务必须在所有服务器上全部提交成功或者全部
,或者使用两阶段提交
PREPARE TRANSACTION
COMMIT
PREPARED
12''%
3'!
是这种方案的实例。
同步多主服务器复制
在这种方案,每个服务器都可以接受请求,修改的数据将在事务
被提交之必须从原服务器广播到所有其它服务器。过多的写动作
将导致过多的锁定,从 而导致性能下。事实上,在多台服务器上同时
写的性能是比在单独一台服务器上写的性能。读请求将被均衡的分
到每台单独的服务器。某些实现使用共享磁 盘来减通信开销。同步
多主服务器复制方案最合于读取多于写合。它的优势是每台
服务器都能接受写请求因此不需要在主从服务器之间分工作负。 因
为在服务器之间发送的是数据的变化,所以不会对
比如
$!*'+
成不影响。
'"#1$)
不提供这种类的复制。但是
'"#1$)
两阶段提交
PREPARE TRANSACTION
COMMIT PREPARED
可以用于在
间件代码中实现这个功能。
异步多主服务器复制
对于些不规则连接的服务器
比如笔记电脑远程服务器
,要在它
之间保数据一致是很麻烦的。在这个方案,每台服务器都独立工
作并周期性的与其服务器通信以别相互冲突的事务。可以通过用
或者冲突判规则处理现的冲突
数据分
数据分将一张表分解为多个数据集合,每个集合都仅可以被单独一台
服务器修改。例如,数据可以按照办公室划:伦敦巴黎办公室
使用自己的服务器。 如果某个查询需要同时检索伦敦巴黎的数据,
程序可以同时查询两个服务器或者在每一台服务器上使用主
从复制
来保一份其它服务器上数据的只读副本。
多服务器并行查询执
许多述方案都允许多台服务器处理多个请求,但是有一个方案允许
多台服务器同时处理一个请求以加快速度。这个方案就允许多台服务器
同时服务于一条查询语 。通常的做法是将数据在多个服务器上进行分
,然后每个服务器行与其所数据相查询部分并将结果返回
中心服务器组装成最结果,然后返回
12''%
就能实现
这个功能。
商业解决方案
of 7
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。