PostgreSQL 复制

f4n*_*4nt 45 postgresql linux replication

我们不断地在办公室里讨论这个问题,这个问题不断出现。你如何处理 PostgreSQL 复制?我什至不一定在谈论高级集群,只是通过 Master-Slave、Master-MultiSlave 和 Master-Master 来保持简单。我发现为 MySQL 设置它通常非常简单。故障转移即使不完美也很简单,尤其是配置起来如此简单。我们玩过 Slony,但它有点过于动手(架构更改需要干预,新数据库需要干预等)。PGPool2 非常好,直到一个节点出现故障并且我们找不到一种优雅的方式(除了将所有东西都关闭并重新播种倒下的节点)来使复制恢复同步。基本上这就是我通常要寻找的:

  • 轻松设置(我会接受困难的设置,但易于扩展)
  • 简单的故障转移
  • 把一个倒下的节点带回来只需要时间(比如 mysql。服务器宕机了,你把它拉起来,然后等待复制赶上)
  • 架构更改不会破坏复制
  • 向服务器添加新数据库是无缝的(即像 mysql 一样,您可以复制整个数据库服务器,因此在主服务器上创建了一个新数据库,它会自动传播到从服务器)

MySQL 可以很好地处理其中的大部分,但我对 PostgreSQL 有一定的喜爱。此外,在某些情况下,这是我们唯一的选择,我们希望将复制添加到组合中。您目前使用的是什么,您对您的解决方案有何看法?我保证,这不是 MySQL 与 PostgreSQL 的对比,因为这不是我想要开始的。:)

Mic*_*ner 9

简短回答 - 如果您需要在线只读从服务器,PostgreSQL 还没有这样的解决方案。

PostgreSQL 9.0 (Spring/Summer 2010) 目前在这个领域有两个主要的开发项目,即:

  • 同步复制:

http://wiki.postgresql.org/wiki/NTT's_Development_Projects

  • 只读热备从站:

http://wiki.postgresql.org/wiki/Hot_Standby

它结合起来旨在实现 MySQL 样式复制的易用性减去 MySQL 的错误/问题,以及用户从 PostgreSQL 中了解到的可靠性。

所有这一切都是由 PostgreSQL 核心团队在 2008 年的一份清单开始的:

http://archives.postgresql.org/pgsql-hackers/2008-05/msg00913.php

时至今日,拥有最大用户群的 PostgreSQL 复制解决方案是 Slony-I(写入成本更高,架构更改繁琐)、WAL shipping/walmgr(Slaves 不能在线使用)和 Skype/Skytools 的 pgQ/londiste(比完成的解决方案更多的工具/构建块)。

我在 Log Shipping、walmgr 和 Slony-I 上写了一些东西,请参阅

http://blogs.amd.co.at/mt/mt-search.cgi?blog_id=1&tag=pgrep&limit=20了解更多信息。

  • 同步复制 + 热备现已可用 - 请参阅 http://wiki.postgresql.org/wiki/Replication,_Clustering,_and_Connection_Pooling 以了解可用技术的完整摘要 (6认同)

小智 5

并将另一种解决方案扔进戒指:rubyrep。

与您的要求进行比较:

  • 易于设置
    是的,这实际上是 ruby​​rep 的主要关注点。
  • 简单的故障转移
    是的。事实上 ruby​​rep 进行主-主复制 - 要进行故障转移,根本不需要任何操作。刚开始使用其他数据库。
  • 架构更改不会破坏复制
    是的。
    对于非主键更改,复制甚至不必停止(但要确保模式在两侧同时更改)
    要添加/删除表,只需重新启动复制守护程序。仅更改表的主键列需要一些努力。
  • 向服务器添加新数据库是无缝的(即像 mysql 一样,您可以复制整个数据库服务器,因此在主服务器上创建了一个新数据库,它会自动传播到从服务器)
    这仅以有限的方式支持:每个 ruby​​rep setup 一次只复制一个数据库。(但是为多个数据库设置复制非常容易。)


小智 1

请参阅此处的讨论,也许会有所帮助:

http://blog.endpoint.com/2009/05/competitors-to-bucardo-version-1.html

布卡多版本一的竞争对手,可以在页面下方找到:

http://www.planetpostgresql.org/