PostgreSQL学习总结(11)—— PostgreSQL 常用的高可用集群方案
前言
PostgreSQL 本身不支持任何多主群集解决方案,例如 MySQL 或 Oracle。尽管如此,仍有许多商业和社区产品提供此实现,以及其他产品,例如 PostgreSQL 的复制或负载平衡。首先,让我们回顾一些基本概念:什么是高可用性?它是服务可用的时间量,通常由企业定义。冗余是高可用性的基础;万一发生事故,我们可以继续毫无问题地运转。持续恢复,如果发生事件,则必须还原备份,然后应用wal日志;恢复时间将非常长,我们不会谈论高可用性。但是,如果我们将备份和日志存档在应急服务器中,则可以在日志到达时应用它们。如果日志每隔 1 分钟发送和应用一次,则应急基础将处于连续恢复状态,并且到生产的时间最多为 1 分钟。
备用数据库
备用数据库的想法是保留生产数据库的副本,该副本始终具有相同的数据,并且可以在发生事件时使用。有几种方法可以对备用数据库进行分类:
根据复制的性质:
- 物理备用数据库:复制磁盘块。
- 逻辑备用数据库:流式传输数据更改。
通过事务的同步性:
- 异步:可能会丢失数据。
- 同步:不会丢失数据;主服务器中的提交等待备用服务器的响应。
通过用法:
- 热备用:它们不支持连接。
- 热备用:支持只读连接。
集群
群集是一组一起工作的主机,被视为一个主机。这提供了一种实现水平可伸缩性的方法,并提供了通过添加服务器来处理更多工作的能力。它可以抵抗节点的故障并继续透明地工作。根据共享的内容,有两种模型:
- 共享存储:所有节点都使用相同的信息访问相同的存储。
- 不共享:每个节点都有自己的存储,取决于我们系统的结构,该存储可能与其他节点具有相同的信息。
PostgreSQL 集群类型
分布式复制块设备 (Distributed Replicated Block Device)
DRBD 是一个 Linux 内核模块,可使用网络实现同步块复制。 它实际上不实现群集,也不处理故障转移或监视。 为此,您需要补充软件,例如 Corosync + Pacemaker + DRBD。
- Corosync:处理主机之间的消息。
- Pacemaker:启动和停止服务,确保它们仅在一台主机上运行。
- DRBD:在块设备级别同步数据。
集群控制(ClusterControl)
ClusterControl 是用于数据库集群的无代理管理和自动化软件。 它可直接从其用户界面帮助部署,监视,管理和扩展数据库服务器/集群。ClusterControl 能够处理维护数据库服务器或群集所需的大多数管理任务。
使用 ClusterControl,您可以:
- 在您选择的技术堆栈上部署独立的,复制的或群集的数据库。
- 跨多语言数据库和动态基础架构统一自动化故障转移,恢复和日常任务。
- 您可以创建完整或增量备份并计划它们。
- 对整个数据库和服务器基础结构进行统一和全面的实时监控。
- 只需一个操作即可轻松添加或删除节点。
在 PostgreSQL 上,如果发生事件,可以自动将您的从属提升为主状态。它是一个非常完整的工具,带有免费的社区版本(还包括免费的企业试用版)。
红宝石 (Rubyrep)
异步,多主机,多平台复制(在 Ruby 或 JRuby 中实现)和多 DBMS(MySQL或PostgreSQL)的解决方案。基于触发器,它不支持 DDL,用户或授权。使用和管理的简单性是其主要目标。
主要功能:
- 配置简单
- 安装简单
- 平台独立,表格设计独立。
Pgpool II
它是一种在 PostgreSQL 服务器和 PostgreSQL 数据库客户端之间工作的中间件。
主要的功能:
- 连接池
- 复写
- 负载均衡
- 自动故障转移
- 并行查询
Bucardo
基于行的异步级联主从复制,使用触发器在数据库中排队;基于行的异步主-主复制,基于行,使用触发器和自定义冲突解决方案。Bucardo 需要专用的数据库并作为 Perl 守护程序运行,该守护程序与此数据库以及复制中涉及的所有其他数据库进行通信。它可以作为多主机或多从机运行。主从复制涉及到一个或多个目标的一个或多个源。源必须是 PostgreSQL,但是目标可以是 PostgreSQL,MySQL,Redis,Oracle,MariaDB,SQLite 或 MongoDB。
主要功能:
- 负载均衡
- 从站不受限制,可以写
- 部分复制
- 按需复制(更改可以自动或在需要时推送)
- 从站可以“预热”以快速设置
缺点:
- 无法处理DDL
- 无法处理大物件
- 没有唯一键无法增量复制表
- 不适用于Postgres 8之前的版本
Postgres-XC
Postgres-XC 是一个开源项目,旨在提供可写扩展,同步,对称和透明的 PostgreSQL 集群解决方案。它是紧密耦合的数据库组件的集合,可以将其安装在多个硬件或虚拟机中。写可伸缩性意味着 Postgres-XC 可以配置任意数量的数据库服务器,并且与单个数据库服务器相比,可以处理更多的写操作(更新 SQL 语句)。您可以有多个客户端连接到的数据库服务器,该服务器提供数据库的单个一致的群集范围视图。来自任何数据库服务器的任何数据库更新对于在不同主服务器上运行的任何其他事务都是立即可见的。透明意味着您不必担心内部如何将数据存储在多个数据库服务器中。您可以配置 Postgres-XC 在多个服务器上运行。您为每个表选择的数据以分布式方式存储,即分区或复制。发出查询时,Postgres-XC 会确定目标数据的存储位置,并向包含目标数据的服务器发出相应的查询。
Citus
Citus 用内置的高可用性功能(例如自动分片和复制)替代了 PostgreSQL。 Citus 分片将您的数据库分片,并在整个商品节点集群中复制每个分片的多个副本。如果群集中的任何节点不可用,Citus 会将所有写入或查询透明地重定向到其他一个包含受影响的分片副本的节点。
主要功能:
- 自动逻辑分片
- 内置复制
- 用于灾难恢复的数据中心感知复制
- 具有高级负载平衡功能的中查询容错
您可以增加由 PostgreSQL 支持的实时应用程序的正常运行时间,并最大程度地减少硬件故障对性能的影响。您可以使用内置的高可用性工具来实现此目标,从而最大程度地减少成本高昂且易于出错的手动干预。
PostgresXL
它是一种无共享的多主群集解决方案,可以透明地在一组节点上分配表,并并行执行这些节点的查询。它具有一个称为全局事务管理器(GTM)的附加组件,用于提供群集的全局一致视图。该项目基于 PostgreSQL 9.5 版本。一些公司,例如 2ndQuadrant,为该产品提供商业支持。PostgresXL 是可水平扩展的开源 SQL 数据库集群,具有足够的灵活性来处理各种数据库工作负载:
- OLTP写密集型工作负载
- 需要MPP并行性的商业智能
- 运营数据存储
- 键值存储
- GIS地理空间
- 混合工作负载环境
- 多租户提供商托管环境
组件:
- 全局事务监视器(GTM):全局事务监视器确保群集范围内的事务一致性。
- 协调器:协调器管理用户会话并与GTM和数据节点进行交互。
- 数据节点:数据节点是存储实际数据的位置。
结论
在决定选择那种方案我们都必须审视如下几个点:
- 新产品,未经充分测试
- 停产项目
- 局限性
- 许可费用
- 非常复杂的实现
- 不安全的解决方案
PostgreSQL学习总结(11)—— PostgreSQL 常用的高可用集群方案相关推荐
- RabbitMQ学习系列(六): RabbitMQ 高可用集群
前面讲过一些RabbitMQ的安装和用法,也说了说RabbitMQ在一般的业务场景下如何使用.不知道的可以看我前面的博客,http://www.cnblogs.com/zhangweizhong/ca ...
- mysql高可用方案_MySQL高可用集群方案
一.Mysql高可用解决方案 方案一:共享存储 一般共享存储采用比较多的是 SAN/NAS 方案. 方案二:操作系统实时数据块复制 这个方案的典型场景是 DRBD,DRBD架构(MySQL+DRBD+ ...
- Haproxy+Heartbeat 高可用集群方案操作记录
之前详细介绍了haproxy的基础知识点, 下面记录下Haproxy+Heartbeat高可用web集群方案实现过程, 以加深理解. 架构草图如下: 1) 基本环境准备 (centos6.9系统) 1 ...
- MySQL高可用集群方案优劣对比
转载自: https://www.cnblogs.com/wuxu/p/13161438.html 集群的好处: (1)高可用性:故障检测及迁移,多节点备份: (2)可伸缩性:新增数据库节点便利,方便 ...
- PostgreSQL高可用集群在360的落地实战
本文主要从以下几个方面介绍PostgreSQL高可用集群在360的落地实战 为什么选择Patroni + Etcd + PostgreSQL高可用集群方案 PostgreSQL高可用集群在360的落地 ...
- linux系统下对网站实施负载均衡+高可用集群需要考虑的几点
随着linux系统的成熟和广泛普及,linux运维技术越来越受到企业的关注和追捧.在一些中小企业,尤其是牵涉到电子商务和电子广告类的网站,通常会要求作负载均衡和高可用的Linux集群方案. 那么如何实 ...
- Kubernetes容器集群 - harbor仓库高可用集群部署说明
之前介绍Harbor私有仓库的安装和使用,这里重点说下Harbor高可用集群方案的部署,目前主要有两种主流的Harbor高可用集群方案:1)双主复制:2)多harbor实例共享后端存储. 一.Harb ...
- Nginx+Keepalived+LVS高可用集群----相关知识回顾
1.原理回顾 1.1.集群知识回顾 集群特点: 1)高性能performance. 一些需要很强的运算处理能力比如天气预报,核试验等.这需要上千台计算器协同来完成这个工作的,共同分担计算任务. 2)价 ...
- 企业主流MySQL高可用集群
选型 10款常见MySQL高可用方案选型解读 MYSQL(高可用方案) 目前最流行的是:主从复制.基于Galera的方案 企业主流MySQL高可用集群 了解 MySQL 集群之前,先看看单节点数据库的 ...
最新文章
- 【设计模式】迭代器模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )
- 脑与认知科学2 脑神经电生理学下
- 几个环境变量说明:ORACLE_SID、DB_NAME、INSTANCE_NAME、DB_DOMIAN、GLOBAL_NAMES
- MySQL开源工具推荐,有了它我卸了珍藏多年Nactive!
- java 泛型参数写法_参数化类型——Java泛型
- P4692 [Ynoi2016]谁的梦
- 《Unity虚拟现实开发实战》——第1章,第1.1节虚拟现实对你来说意味着什么
- 快速掌握用python写并行程序设计_Python中的并行编程速度
- 如何在windows10电脑上创建ftp站点
- 高级维修电工及技师技能实训考核装置QY-JSPX01
- ubuntu安装系分区,挂载磁盘
- 利用CVE-2017-8464漏洞制作病毒U盘攻击
- 《哈佛通识教育红皮书》 哈佛委员会著
- H5横幅,旗帜飘动动画
- 服务器dns劫持修复,电脑DNS被劫持怎么修复 电脑dns被劫持解决方法
- python字典统计排序1_数据分析1_入门Python
- php面包屑源码,推荐两款好用的WordPress面包屑插件
- iReal Pro for Mac(优秀的音乐练习参考工具)
- 判断单链表是否有环 两链表是否相交
- linux批量修改文件名多目录,Linux下批量修改文件名