PostgreSQL的高可用性


8

我是PostgreSQL数据库的新手。最近,我们的开发人员需要对我们的系统进行一些升级。

因此,我们计划实现某种方法以实现数据库故障转移。

根据我在此处的 Postgresql Wiki的阅读,我们正在尝试实现热备用或热备用。所以我的问题是:

  1. 它们之间的主要区别是什么?
  2. 哪一个更好?
  3. 我们还有其他方法可以考虑在Postgres数据库中实现高可用性吗?

如果计划使用自动故障转移,则正确的心跳+ STONITH设置是关键。使用手动触发器进行自动故障转移可能更安全。另请参见wiki.postgresql.org/wiki/High_Availability
Craig Ringer

@CraigRinger谢谢。我会调查的。但是实际上热备用是什么?您能提供一些细节吗?
user119720

Answers:


6

1a。热备用是一种“实时”增量备份,每个备份都有完整的变更块(沃尔码段),每个变更块16 mb,填充后将其发送到备用节点。您无法查询热备份节点。16 mb的更改(默认情况下)可能意味着很多事务,如果主服务器失败,它们将会丢失。

1b。热备用。(也是“实时”增量备份)。将小的更改发送到从属服务器(沃尔玛记录,这是沃尔玛网段的一小部分)。您可以查询(只读)热备用节点。如果主服务器发生故障,丢失交易的窗口很小。有同步和异步热备用节点,同步节点将强制主节点等待其确认更改的应用程序,然后主节点将提交事务。在异步复制中,主节点发送wal记录而不等待确认。前者需要主机和从机之间非常可靠和快速的链接,也增加了主机的开销,但不保证数据丢失。

关于增量备份:1.制作整个数据库安装的基本副本。2.将其运送到从站。3.配置它以赶上更改。

流复制(热备用)在这里是赢家。我个人更喜欢异步复制,因为它不会对主服务器造成很大的负担,并且复制滞后非常小(在许多情况下为几秒钟)

pg-pool是此设置的一种补充。它充当应用程序和参与上述复制配置的服务器之间的代理,具有负载平衡和并行查询功能。它还能够提供自动故障转移。 http://www.pgpool.net/pgpool-web/contrib_docs/simple_sr_setting/index.html


非常感谢您的迅速答复,这对我的要求非常有帮助。您还可以建议我一些正确的链接来实现此设置吗?
user119720 '10 -10-9


不客气,在这些问题上的学习曲线有些陡峭,请耐心等待。墨西哥城的晚安(白天或其他)问候。
Rene Romero Benavides '10

我已经根据您的链接进行了一些研究,并且我想到了一些问题。1.是否可以为流复制配置热备份?2.是否可以将pg-pool配置为热备用?3.如果在故障转移期间将我们的应用程序服务器点配置为指向主数据库,是否需要将应用程序服务器的数据库配置更改为从属数据库,或者pg-pool本身将充当从属服务器的代理?对不起,麻烦。希望您不要介意。
user119720 '10 -10-10

2

您已经得到的答案很有用,但此处的术语有些混乱。所有内置复制解决方案都使用相同的基本机制:将预写日志数据复制到备用服务器。

您可以使用archive_command工具或流复制(SR)一次移动该WAL数据以复制16MB文件。如果使用SR,则实际上也应该设置归档,服务器将在它们之间进行适当切换。

您可以拥有一个热备用服务器,该服务器无法回答查询。或者,您可以有一个热备用服务器,该服务器可以回答只读服务器。这与数据如何进入备用数据库无关。

这两个选择中的每个都与其他每个组合在一起,您可以拥有所有四个组合。您可以让WOT待机时回答查询,同时在WAL段中一次接收文件。您可以具有未启用热备功能的流复制服务器,因此它不会回答查询。如今,最常见的情况就是流复制和热备用。这就是全部功能集。同样,不要仅仅因为有可能避免现在就忽略旧的archive_command机制。它仍然可以帮助您避免流式传输故障,否则这些故障将很难恢复。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.