好消息:PostgreSQL逻辑复制功能发布

2016/01/04,PostgreSQL专业咨询和服务公司2ndQuarrant向社区提交并发布了新一代的的逻辑复制扩展功能pglogical,该功能可作为PostgreSQL一项扩展功能使用,可完全集成于PostgreSQL,它兼顾有基于触发器复制技术的灵活性,同时又有基于日志复制技术的高效性,它使用发布/订阅模型对选择性的数据复制相对物理复制来说是非常高效的方法,新方案的独创性在许多应用场景下都能给大家带来了不一样的体验:

  • 升级:使用本功能,对类似从9.4向9.5这样的大版本升级,都不必停机。
  • 扩展:使用本功能,可以复制所有或是选定的一部分数据表至集群中的其他节点。
  • 聚合:可从分区数据库节点中收集各种数据至一个集中的数据仓库中。
  • 集成:可将数据库的变化实时转移至其他系统。
  • 安全:可以替换早期的一些技术,提供更有效的备份或高可用性。

性能

已使用PostgreSQL的用户会发现pglogical特别在性能这一块带来惊喜,根据初步的内部测试,在使用pgBench进行事务型负载(OLTP)测试时,它相对其他复制方案如slony和londiste3时,最高可达5倍的性能,如下图:

好消息:PostgreSQL逻辑复制功能发布_第1张图片

安装和使用

pglogical目前可以通过2ndQuadrant提供的apt和yum的安装文件在Linux的Debian和Red Hat系列平台(如RHEL企业版、CentOS和Fedora) 上的PostgreSQL9.4或是将要发布9.5版本使用。用户可以使用标准的apt和yum安装包管理器把pglogical安装在你的PostgreSQL服务器上。

详细的安装步骤见文档:这里。

pglogical是完全开源的,使用PostgreSQL开发组现在使用的PostgreSQL版本发布。代码将提交给PostgreSQL核心组,作为整合至9.6版本标准功能的备选。

pglogical可以提供哪些好处?

  • 没有触发器意谓着在发布端(主数据库端)可减少写的负载。
  • 没有SQL的二次执行意谓着在订阅端(从数据库端)可减少负载和延迟。
  • 在订阅端(从数据库端)不使用热备恢复模式,这样用户可以使用临时表、非日志表或是其他正常表。
  • 在复制重新开始时,不必取消对外的查询功能。
  • 在订阅端(从数据库端)可以有不同的用户和安全设置,不同的索引,不同的系统参数设置。
  • 可以仅复制一个数据库,或是一个表的一部分。
  • 复制可以跨PostgreSQL不同版本或是集群架构,允许很少时间或是零时间停机升级。
  • 多个服务器的变更可以集中至一台服务器进行汇总。

    pglogical如何工作?

    pglogical使用由2ndQuadrant公司开发的逻辑解码特性(自PostgreSQL 9.4版本添加)。pglogical相对PostgreSQL 9.5版本来说,在复制的发布端和订阅端运行的开销都很小,运行很快。

    pglogical也借鉴了BDR开发中的很多特性,包括:

    • 逻辑解码
    • 复制槽位技术
    • 静态后台进程
    • 复制源replication origins
    • 事务提交时间戳

    pglogical重用了BDR项目中很多内容,因此,这项开发并不算是从零开始的。

    pglogical支持双向复制吗(类似BDR)?

    不。pglogical不提供多主复制,它也不会像BDR那样复制序列值或是DDL操作。pglogical从BDR中借鉴了并参考了一些功能,然后开发出了更新 简单和易用的单向复制方案。它将会被很多人在很多场景下使用。BDR设计时首先要满足的是多向多主的网格化复制,它并不适宜在单向的单主服务器的复制。

    BDR将继续开发支持双向多主复制的功能,它也会利用pglogical中的很多代码。

    pglogical下一步向什么方向发展?

    pglogical只是一个模块,将会向以下使用场景进行扩展:

    • 作为多主双向复制的一个基础。
    • 级联逻辑复制,支持复杂的复制拓扑方案。
    • 根据需要,通过触发器进行数据的收集和转换。
    • 可深入重要的schema和cstore等特殊功能等。
    • 行级选择性复制,如类似申请“仅发送这个客户的相关数据至指定的服务器”。
    • 通过一些输出插件,输出json或XML等数据流。
    • 通过一些输出插件,便于其他基于触发器技术的数据库收集项目作为替代方案。
    • 开发可扩展、包装好的协议,以供多个其他不同的客户端使用。

你可能感兴趣的:(信息发布,转载,数据库应用开发)