AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 11137
In Process
f4nt
f4nt
Asked: 2009-05-22 22:22:36 +0800 CST2009-05-22 22:22:36 +0800 CST 2009-05-22 22:22:36 +0800 CST

PostgreSQL 复制

  • 772

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

  • 易于设置(我会接受困难的设置,但易于扩展)
  • 简单的故障转移
  • 恢复掉下的节点只需要时间(即像 mysql。服务器出现故障,您将其启动,然后等待复制赶上)
  • 架构更改不会破坏复制
  • 向服务器添加新数据库是无缝的(即像 mysql 一样,您可以复制整个 DB 服务器,因此在主服务器上创建一个新数据库,它会自动传播到从服务器)

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

linux replication postgresql
  • 10 10 个回答
  • 6184 Views

10 个回答

  • Voted
  1. Michael Renner
    2009-05-30T07:47:48+08:002009-05-30T07:47:48+08:00

    简短的回答 - 如果您需要在线只读从属服务器,那么 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 了解的可靠性。

    所有这一切都是由 2008 年 PostgreSQL 核心团队的清单启动的:

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

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

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

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

    • 9
  2. Arndt Lehmann
    2009-07-01T22:41:07+08:002009-07-01T22:41:07+08:00

    并将另一种解决方案放入环中:rubyrep。

    要与您的要求进行比较:

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

    您没有提到将热读取从属设备作为要求,因此我将建议将 Heartbeat 与共享存储或 DRBD 一起使用。它只是做正确的事,管理轻而易举。它是旧版 Microsoft SQL Server 集群的 Linux 等价物。一个节点是活动的,另一个节点是被动的,而数据在两者之间共享。您不必担心基于 SQL 的复制,因为它都是在块级别的较低级别处理的。

    说真的,如果您不需要读取从站,这是迄今为止最好的解决方案。WAL 存档的东西充其量是 hokey,如果您中断服务器重新启动的运输过程,您必须重新设置所有内容。slony 和 londiste 不切芥末。如果你想留在主要的源代码树上而不是商业化,Heartbeat 是你最好的选择。

    • 4
  4. dpavlin
    2009-05-23T05:25:04+08:002009-05-23T05:25:04+08:00

    根据您的要求,PITR 似乎是解决您的问题的最简单方法:

    在线备份和时间点恢复 (PITR)

    你没有说你需要查询从服务器,所以 PITR 可能是对的。

    它是 8.0 版 PostgreSQL 的标准部分,因此您可能已经拥有启动和运行它所需的一切。

    如果您发现指令过于冗长,请查看SkyTools WalMgr,它将创建/故障转移到热备用数据单命令任务的过程。

    对于更复杂的复制场景,我有很好的 Slony-1 体验,但 PostgreSQL 有很多不错的复制/HA 选项可用。

    • 2
  5. KevinRae
    2009-05-28T09:53:26+08:002009-05-28T09:53:26+08:00

    如果您想要异步主/从复制,请考虑 Londiste(Skype 的 skytools 包的一部分)wiki.postgresql.org/wiki/Londiste_Tutorial

    它很容易安装,添加新数据库很容易,复制只是“赶上”。

    故障转移不是内置的。您将需要更改应用程序连接字符串或在另一层软件后面混淆数据库连接。

    一些架构更改很容易。其他的就更难了。这取决于您的应用程序。skytools 的下一个版本(ver 3.0)应该处理 DDL 并包含使故障转移更容易的设施。

    在发现 Slony 使用起来太痛苦后,我们搬到了 Londist。

    • 2
  6. mm2010
    2009-05-23T01:09:02+08:002009-05-23T01:09:02+08:00

    在这里查看讨论,也许这会有所帮助:

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

    和

    Bucardo 第一版的竞争对手,位于页面下方:

    http://www.planetpostgresql.org/

    • 1
  7. Alex Balashov
    2009-05-28T02:10:10+08:002009-05-28T02:10:10+08:00

    确实没有任何免费/开源的方式来提供您正在寻找的东西。如果您想要如此交钥匙的东西,请查看各种第三方商业复制解决方案。

    现在,可以使用写入头日志 (WAL) 传送来使用 Postgres 滚动您自己的复制:

    http://www.postgresql.org/docs/8.3/interactive/warm-standby.html
    

    这基本上是您可以将辅助节点置于连续恢复模式并每隔{小间隔}将事务日志导入其中的地方。Postgres 配置具有“存根”,允许您在完成 WAL 的 Postgres 时执行某些操作,所以不,这就是该设置的前提——利用这些“存根”。

    但是,这不允许您进行主-主和/或循环复制。

    无论如何,它绝对适用于冗余,但我不会称其为“简单设置”、“简单故障转移”、“无缝”或类似的名称。

    • 1
  8. Alexey Klyukin
    2009-05-30T10:18:41+08:002009-05-30T10:18:41+08:00

    除了“添加新数据库”之外,您还可以尝试 Mammoth Replicator ( https://projects.commandprompt.com/public/replicator )。它是开源的,易于设置并支持故障转移。主要限制是单一数据库和无法复制 DDL 更改,两者都在 TODO 列表中。

    • 1
  9. Aleksandar Ivanisevic
    2009-05-27T10:30:06+08:002009-05-27T10:30:06+08:00

    我目前正在研究钨复制器,我离任何明确的结论还很远,但可能值得一看。

    www.continuent.com

    • 0
  10. bbigras
    2009-05-27T11:28:03+08:002009-05-27T11:28:03+08:00

    Postgres-R看起来很有希望,但我不知道该项目是否仍然存在。

    • 0

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve