主备管理节点间的数据同步,是保证集群系统具备高可用性的关键之一。主备管理节点在某一时刻只能是其中一个对系统数据库有写权限,另一个节点只能有读权限,以此不断更新其上的数据信息,实现主备管理节点间的数据同步。这样,即便任意节点发生故障停机,都不会对整个集群系统产生影响。
PostgreSQL是一种特性非常齐全的自由软件的对象——关系型数据库管理系统(ORDBMS),可以说是目前世界上最先进、功能最强大的自由数据库管理系统。PostgreSQL是以加州大学伯克利分校计算机系开发的POSTGRES,现已更名为PostgreSQL,版本4.2为基础的对象关系型数据库管理系统(ORDBMS)。
PostgreSQL为了确保数据库的高可用性,提供了多种高可用方案。
(一)基于底层硬件设备的高可用方案
共享硬件的失效切换通过只保存一份数据库的副本来节省花费在同步上的时间开销。共享硬件的功能时常由共享存储介质提供,如使用一个共享的存储设备或共享的文件系统GFS、Veritas实现系统文件的共享。这个方案令多台服务器共享一个单独的磁盘阵列,一旦主服务器故障失效,备份服务器会立即挂在共享的数据库上,对外没有任何影响。它的优势是能够快速完成失效切换且无数据丢失。它的不足在于对磁盘阵列的依赖性太大,一旦磁盘阵列损坏,整个系统将会崩溃,并且在主服务器正常运行的过程中,备份服务器无法访问共享存储器。
(二)PostgreSQL自身提供的Acitve/standby方案
热备份服务器可以通过读取WAL记录流来保持数据库的当前状态。如果主服务器失效,那么热备份服务器将包含几乎所有主服务器的数据,并可以迅速地将自己切换为主服务器。这是一个异步方案,并且只能在整个数据库服务器上实施。
连续归档可以配合随时准备取代失效主服务器的一个或多个备份服务器,用于创建一个高可用性(HA)集群。这个能力通常被称为热备份或日志传送。
虽然主服务器和备份服务器只是松散地耦合在一起,但它们必须同时运行。主服务器以连续归档模式运行,备份服务器以连续恢复模式运行,并从主服务器不停地读取WAL文件。因为数据库的表无需为此进行任何改变,所以与其他复制方法相比,额外的管理开销很小,并且这种方法对主服务器的性能影响也很小。(www.xing528.com)
(三)基于触发器的服务器复制
主服务器在数据表上建了一个触发器,当数据的更改请求发送至主服务器时,触发器能够立即捕捉到这个变化,然后异步向备用服务器发送数据的更改信息。备用服务器在主服务器运行的情况下只能应答读请求。
开源软件Slony-I、Bucardo和skytools中的londiste都使用这个方案。它支持针对每个表的粒度,并支持多个从服务器。因为它异步、批量地更新备用服务器,在失效切换的时候可能会有数据丢失。Slony-I只支持主备模式,Bucardo不仅支持任意方式的主备模式,同时,还支持multi-master与multi-slave两种模式。
(四)基于语句的复制中间件
通过基于语句的复制中间件,一个程序拦截每一个 SQL 查询并把它发送给一个或所有服务器。 每一个服务器独立地操作。读写查询必须被发送给所有服务器, 这样每一个服务器都能接收到任何修改。但只读查询可以只发送给一个服务器, 这样允许读负载在服务器之间分布。
(五)基于改造PostgreSQL源码的复制方案
读写请求可以发给任意一台数据库服务器,服务器接收到写请求后,会立即将变化复制到其他服务器上。Cybercluster、pgcluster、postgres-XC是这个架构的典型代表。
综合以上各点可以看出,PostgreSQL可以很好地满足HA管理系统对数据库的要求,且具备出色完成数据同步工作的各项 条件。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。