PostgreSQL复制(Replication)技术简述

1.Write Ahead Log(WAL)
PostgreSQL提供数据持久保证的主要技术是通过其预写日志(Write Ahead Log(WAL))。所有事务数据提交到数据文件前都会写入该位置。一旦WAL文件不再被崩溃恢复需要,PostgreSQL将会对其进行删除或归档。对高可用服务器,我们推荐尽可能保存这些重要你文件。主要有如下几个原因:
1)归档WAL文件能用于时间点恢复(PITR);
2)如果您正用流复制(streaming replication),终端的流能通过应用WAL文件直到副本赶上主库来进行重建;
3)WAL文件能用于多个服务器拷贝。
为了获得这些好处,我们需要开启PostgreSQL WAL归档并将这些文件保存到不再需要位置。

2.Hot Standby
如果没有实时数据需求,高可用集群中拥有PostgreSQL的另外一个在线拷贝是个很好的实践。如果没有这样一个在线服务器,服务中断恢复也许需要数小时的应急反应、备份恢复和服务器准备。通过一台额外的在线服务器,我们能获得所有这一切。
另外,创建一个热备库的过程与创建PostgreSQL流副本类似。这意味着我们能通过该过程来创建一个PostgreSQL镜像,提供额外备份拷贝,配置测试实例等等。
所有这些可以通过pg_basebackup命令完成。

3.Asynchronous Replication
从PostgreSQL9.0版本,DBA们已经可以使用异步流复制了。不像较早版本中使用的较旧的热备库方法,副本服务器能直接连到上游PostgreSQL服务器,并消耗数据修改。低延迟网络和快事务场景中,这意味着流副本落后主库几毫秒是相当常见的。
高可用场景中,这意味着我们能通过将数据库拷贝到多个服务器来进行水平扩展。当然,这意味着我们需要将这个数据库拷贝到每个服务器。对小到中等规模的实例,这不是太难的要求。这也意味着我们能够产生最新备份,对实际活跃数据进行特殊查询,并将信息汇聚成报表,期间,不会影响我们的主库。

4.Synchronous Replication
有时,为了提供可接受的数据持久性,高可用配置必须使用同步提交。从PostgreSQL开始,数据库服务器能在数据至少在一个备库服务器上落地签拒绝提交该相关事务。不像可选的异步复制,同步复制会开启强制同步,否则,会报错。
PostgreSQL邮件列中的讨论建议,说同步复制与RAID-1操作类似是一个长期存在的误解。RAID-1中,同样的数据存在于两个磁盘上(或两个磁盘集上),如果某个磁盘失败,将会继续以降级模式运行,直到问题得以修复。
这与PostgreSQL同步复制的情况绝对不同。
不像RAID-1,PostgreSQL副本能存在于不同的服务器,不同的网络,或甚至不同的国家。PostgreSQL同步复制保证数据至少写到服务器上。尽管为了确认需要增加延迟,但该保证会一直不变。

5.pg_receivexlog
某些内置工具理应得到特别提及。pg_receivexlog命令在PostgreSQL9.2引进。通过这些新功能,PostgreSQL有能力将事务日志发送给远程系统,而无需一个专用PostgreSQL服务器。这也意味着我们维护归档服务器来保存旧的WAL文件时,能避免类似rsync的特殊工具。
这允许我们建立任何服务器来从主PostgreSQL服务器直接拉取事务日志。对高可用服务器,PostgreSQL不再需要分出一个外部命令来把事务日志安全保存到归档位置。另外,我们能通过pg_stat_replication系统视图来对传输状态进行监控。
实际上,我们从我们的PostgreSQL服务器移去了很多开销,并将其卸载至不太敏感的系统上。

6.Slony
当有一些PostgreSQL的逻辑异步复制系统时,Slony-I(简称Slony)首先被广泛采用。为什么PostgreSQL已经有复制而我们用Slony呢?目前,PostgreSQL复制只能拷贝整个安装。每个数据库、模式、表和用户被在二进制级别拷贝。实际上,流复制创建了PostgreSQL服务器的完美克隆。
Slony非常不同。其设计用于只拷贝表,捕获主服务器上的改变并将其发送到一个或多个订阅者。

7.Bucardo
Bucardo实际是2002年比Slony出现更早的流行逻辑复制引擎。就像Slony,其也用触发器进行同步活动,但其语法要简单的多。然而,其也提供多主能力;这意味着主节点或二级节点的改变将出现于二者的复制表中。
当维护一个复杂高可用架构时,还是尽量简单些会更好。


8.Londiste
为了完成我们的流行逻辑复制工具,我们将喜欢对Londiste进行介绍。
Londiste为2007年Skype发布的SkyTools PostgreSQL工具。为什么会发布另一个复制系统?由于该套工具提供的其他能力,您也许决定使用其中的一个或多个。清楚如何用Londiste可以简化整个软件栈,因此,增加服务器稳定性和简易性。
此外,就像Bucardo,因为其命令行工具,其使用比Slony更加简单。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lhdz_bj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值