如果您的系统依赖PostgreSQL数据库并且您正在寻找HA的集群解决方案,我们希望提前告知您这是一项复杂的任务,但并非不可能实现 。
我们将讨论一些解决方案,您可以从中选择对您的容错要求 。
PostgreSQL本身不支持任何多主群集解决方案,例如MySQL或Oracle 。尽管如此,仍有许多商业和社区产品提供此实现,以及其他产品,例如PostgreSQL的复制或负载平衡 。
首先,让我们回顾一些基本概念:
什么是高可用性?它是服务可用的时间量,通常由企业定义 。
冗余是高可用性的基础;万一发生事故,我们可以继续毫无问题地运转 。
持续恢复如果发生事件,则必须还原备份,然后应用wal日志;恢复时间将非常长,我们不会谈论高可用性 。
但是,如果我们将备份和日志存档在应急服务器中,则可以在日志到达时应用它们 。
如果日志每隔1分钟发送和应用一次,则应急基础将处于连续恢复状态,并且到生产的时间最多为1分钟 。
备用数据库备用数据库的想法是保留生产数据库的副本,该副本始终具有相同的数据,并且可以在发生事件时使用 。
有几种方法可以对备用数据库进行分类:
根据复制的性质:
- 物理备用数据库:复制磁盘块 。
- 逻辑备用数据库:流式传输数据更改 。
- 异步:可能会丢失数据 。
- 同步:不会丢失数据;主服务器中的提交等待备用服务器的响应 。
- 热备用:它们不支持连接 。
- 热备用:支持只读连接 。
文章插图
集群群集是一组一起工作的主机,被视为一个主机 。
这提供了一种实现水平可伸缩性的方法,并提供了通过添加服务器来处理更多工作的能力 。
它可以抵抗节点的故障并继续透明地工作 。
根据共享的内容,有两种模型:
文章插图
- 共享存储:所有节点都使用相同的信息访问相同的存储 。
- 不共享:每个节点都有自己的存储,取决于我们系统的结构,该存储可能与其他节点具有相同的信息 。
分布式复制块设备 (Distributed Replicated Block Device)DRBD是一个linux内核模块,可使用网络实现同步块复制 。它实际上不实现群集,也不处理故障转移或监视 。为此,您需要补充软件,例如Corosync + Pacemaker + DRBD 。
文章插图
例:
- Corosync:处理主机之间的消息 。
- Pacemaker:启动和停止服务,确保它们仅在一台主机上运行 。
- DRBD:在块设备级别同步数据 。
文章插图
集群控制(ClusterControl)ClusterControl是用于数据库集群的无代理管理和自动化软件 。它可直接从其用户界面帮助部署,监视,管理和扩展数据库服务器/集群 。
ClusterControl能够处理维护数据库服务器或群集所需的大多数管理任务 。
文章插图
使用ClusterControl,您可以:
- 在您选择的技术堆栈上部署独立的,复制的或群集的数据库 。
- 跨多语言数据库和动态基础架构统一自动化故障转移,恢复和日常任务 。
- 您可以创建完整或增量备份并计划它们 。
- 对整个数据库和服务器基础结构进行统一和全面的实时监控 。
- 只需一个操作即可轻松添加或删除节点 。
它是一个非常完整的工具,带有免费的社区版本(还包括免费的企业试用版) 。
文章插图
文章插图
红宝石 (Rubyrep)异步,多主机,多平台复制(在Ruby或JRuby中实现)和多DBMS(MySQL或PostgreSQL)的解决方案 。
基于触发器,它不支持DDL,用户或授权 。
使用和管理的简单性是其主要目标 。
一些功能: