如果您的系统依赖PostgreSQL数据库并且您正在寻找HA的集群解决方案,我们希望提前告知您这是一项复杂的任务,但并非不可能实现。
我们将讨论一些解决方案,您可以从中选择对您的容错要求。
PostgreSQL本身不支持任何多主群集解决方案,例如MySQL或Oracle。尽管如此,仍有许多商业和社区产品提供此实现,以及其他产品,例如PostgreSQL的复制或负载平衡。
首先,让我们回顾一些基本概念:
什么是高可用性?
它是服务可用的时间量,通常由企业定义。
冗余是高可用性的基础;万一发生事故,我们可以继续毫无问题地运转。
持续恢复
如果发生事件,则必须还原备份,然后应用wal日志;恢复时间将非常长,我们不会谈论高可用性。
但是,如果我们将备份和日志存档在应急服务器中,则可以在日志到达时应用它们。
如果日志每隔1分钟发送和应用一次,则应急基础将处于连续恢复状态,并且到生产的时间最多为1分钟。
备用数据库
备用数据库的想法是保留生产数据库的副本,该副本始终具有相同的数据,并且可以在发生事件时使用。
有几种方法可以对备用数据库进行分类:
根据复制的性质:
- 物理备用数据库:复制磁盘块。
- 逻辑备用数据库:流式传输数据更改。
通过事务的同步性:
- 异步:可能会丢失数据。
- 同步:不会丢失数据;主服务器中的提交等待备用服务器的响应。
通过用法:
- 热备用:它们不支持连接。
- 热备用:支持只读连接。
集群
群集是一组一起工作的主机,被视为一个主机。
这提供了一种实现水平可伸缩性的方法,并提供了通过添加服务器来处理更多工作的能力。
它可以抵抗节点的故障并继续透明地工作。
<