Greenplum-segment镜像分布策略

news2025/1/17 2:53:11

Greenplum作为一款基于PostgreSQL的OLAP分布式MPP架构,其内部的角色可以通过配置冗余来保证高可用性,无论是管理节点还是计算节点。管理节点可以为Master配置一个Standby来保证高可用,而计算节点则可以为每个Primary segment配置一个对应的Mirror segment来保证其高可用性。本文主要说明对于Segment的镜像分布,提供的几种分布策略。

一般情况下,对于每个计算节点,尤其是使用物理机的情况下,为了能够充分利用机器的资源,会在节点上部署多个segment,每个segment是一个单独的PostgreSQL实例,存储一部分用户数据。多个segment同时工作,从而提供高并发的OLAP分析能力。

对外提供服务的segment称为Primary segment,即主实例。为了保证高可用性,为每个主实例配置一个对应的Mirror,即镜像实例,主实例和镜像实例之间基于PostgreSQL本身的WAL流复制能力,保证数据的一致性。

集群的高可用能力,一般是在某一台物理节点出现故障时,数据仍然不丢失,且通过故障检测与故障切换机制可以保证业务在短时间内可以恢复。因此,我们需要将每个Primary segment与对应的Mirror segment分开部署在不同的物理节点上。在一个由多个节点组成的集群中,Mirror segment怎么分配,其实有多种形式,这也就是我们后面要介绍的镜像分布策略。

Greenplum官方提供的镜像分布策略有几种:

组镜像分布(group mirror)

组镜像分布是默认的镜像分布策略。这种分布策略是把每台主机上的Primary segment对应的Mirror segment都整体放在另外一台主机上。如果有一台主机发生故障,那么这台主机上所有的Primary segment都会切换到另外一台主机,导致另外一台主机上的segment数量翻倍。
在这里插入图片描述
优点: 除非同一个Segment的主实例和镜像实例都失效,最多可以有一半的主机失效并且集群可以继续运行。
缺点: 任何主机失效会导致一个主机负载翻倍,木桶效应明显。因此必须要尽快恢复故障节点并将主实例切换回来。

散列镜像分布(spread mirror)

散列镜像分布是将每个主机上的Primary segment分散到多台主机上。如果有一台主机发生故障,每个机器上至多只有一个镜像提升为Primary segment,因此这种方式可以防止单台主机故障后另外的主机压力骤增。
这种镜像分布方式要求集群主机数量多于每台主机上的Primary Segment的数量。
在这里插入图片描述
优点: 对于单主机失效的情况,对性能影响最小,因为每台主机的镜像都散布在最大数量的主机上。负载的增加是1/N,N代表每台主机上主实例的数量。
缺点: 如果两台以上主机同时失效,最有可能导致整个集群不可用。

自定义镜像分布

除了组镜像分布策略和散列镜像分布策略之外,用户还可以自定义镜像分布策略。
有些基于Greenplum的数据库自己定义了额外的镜像分布策略,比如 YMatrix默认的镜像分布策略叫 环状镜像分布策略(Ring Mirroring):即在至少有两台主机的情况下,将一个主机中的 Primary 序号序列看作一个一维纸带,从中间对折,然后在另外的主机上从对折的中间序号为起点,顺时针均匀排列 Mirror 到其他主机。 扩容增加新的 Primary 不会影响之前已分布完成的镜像闭环,而是开启一个新的镜像环。
还有一种叫块镜像分布策略,就是把数据库集群中的节点划分成块,每台主机上Segment的镜像被放在块中的其他主机上。使用块镜像的集群比较容易扩展,因为每一个块都是一个自包含的主镜像组。集群可以通过增加一个或多个块来扩展。只有故障的主机处于不同的块中,这种配置就能够容忍多主机失效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/960378.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux测开常用命令总结

文章目录 Linux系统中文件目录树 基本指令的使用: Linux命令的帮助信息查看 --help command --help 说明: 显示command 命令的帮助信息通过man命令查看帮助信息 man command( 命令的名称) man 命令查看的帮助信息更加详细ls,pwd&#xff0c…

Java 多线程系列Ⅱ(线程安全)

线程安全 一、线程不安全线程不安全的原因: 二、线程不安全案例与解决方案1、修改共享资源synchronized 使用synchronized 特性 2、内存可见性Java内存模型(JMM)内存可见性问题 3、指令重排列4、synchronized 和 volatile5、拓展知识&#xf…

Python学习 -- 异常堆栈追踪技术

在编写Python代码时,出现异常是不可避免的。异常堆栈追踪是一种强大的工具,可以帮助我们定位错误发生的位置以及调用栈信息。Python的traceback模块提供了多种方法来获取和展示异常的堆栈信息。本文将详细介绍traceback模块中的print_exc()方法&#xff…

spring:事务失效+事务传播行为

一、事务失效 1.Transactional作用在非public上 Transactionalvoid transferAccounts(){adminDao.sub();System.out.println(10/0);adminDao.add();} 只执行sub() 2.异常被try catch捕获 Transactionalpublic void transferAccounts(){adminDao.sub(…

vue3项目导入异常Error: @vitejs/PLUGIN-vue requires vue (>=3.2.13)

vue3项目导入异常 1、异常提示如下: failed TO LOAD config FROM D:\ws-projects\vite.co nfig.js error WHEN STARTING dev SERVER: Error: vitejs/PLUGIN-vue requires vue (>3.2.13) OR vue/compiler-sfc TO be pre sent IN the dependency tree.2、解决办法…

校园气象站的功能和作用

校园气象站是一种用于监测和记录气象数据的设备,下面将从功能和作用两个方面来详细介绍校园气象站。 一、校园气象站的功能 ①气象数据监测 校园气象站可以监测多种气象数据,包括温度、湿度、气压、风速、风向等。这些数据会通过4G方式上传至环境监控…

金蝶云星空二开,公有云执行SQL

功能背景; 金蝶公有云执行sql工具,因官方为云部署 用户无法连接数据库增删改查 天梯维护网页仅支持增删改操作 二开单据已支持根据sql动态生成单据体 与sql可视化界面操作一致 功能实现及场景: 1.可用于公有云执行sql类操作 2.私有云部署&am…

OB Cloud助力泡泡玛特打造新一代分布式抽盒机系统

作为中国潮玩行业的领先者,泡泡玛特凭借 MOLLY、DIMOO、SKULLPANDA 等爆款 IP,以及线上线下全渠道营销收获了千万年轻人的喜爱,会员数达到 2600 多万。2022 年,泡泡玛特实现 46.2 亿元营收,其中线上渠道营收占比 41.8%…

java 浅谈ThreadLocal底层源码(通俗易懂)

目录 一、ThreadLocal类基本介绍 1.概述 : 2.作用及特定 : 二、ThreadLocal类源码解读 1.代码准备 : 1.1 图示 1.2 数据对象 1.3 测试类 1.4 运行测试 2.源码分析 : 2.1 set方法解读 2.2 get方法解读 一、ThreadLocal类基本介绍 1.概述 : (1) ThreadLocal,本…

YOLO数据集划分(训练集、验证集、测试集)

1.将训练集、验证集、测试集按照7:2:1随机划分 1.项目准备 1.在项目下新建一个py文件,名字就叫做splitDataset1.py 2.将自己需要划分的原数据集就放在项目文件夹下面 以我的为例,我的原数据集名字叫做hatDataXml 里面的JPEGImages装的是图片 Annota…

安达发|APS软件排程规则及异常处理方案详解

随着科技的发展,工业生产逐渐向智能化、自动化方向发展。APS(高级计划与排程)软件作为一种集成了先进技术和理念的工业软件,可以帮助企业实现生产过程的优化和控制。其中,排程规则是APS软件的核心功能之一,它可以帮助企业合理安排…

港联证券|什么是北上资金?北上资金连续流入的股票好不好?

一般在股市收盘之后,公司会对当日的股市资金变化做一个资金总结,比如说北上资金的流入或许流出。那么什么是北上资金?北上资金连续流入的股票好不好?下面就由港联证券为大家剖析: 什么是北上资金? 北上资金…

Java on VS Code 8月更新|反编译器用户体验优化、新 Maven 项目工作流、代码高亮稳定性提升

作者:Nick Zhu 排版:Alan Wang 大家好,欢迎来到 Visual Studio Code for Java 的 8 月更新!在这篇博客中,我们将为您提供有关反编译器支持的更多改进。此外,我们将展示如何创建没有原型的 Maven 项目以及一…

LabVIEW计算测量路径输出端随机变量的概率分布密度

LabVIEW计算测量路径输出端随机变量的概率分布密度 今天,开发算法和软件来解决计量综合的问题,即为特定问题寻找最佳测量算法。提出了算法支持,以便从计量上综合测量路径并确定所开发测量仪器的测量误差。测量路径由串联的几个块组成&#x…

用于设计和分析具有恒定近心点半径的低推力螺旋轨迹研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

ShardingJDBC——基于JPA的读写分离实战

摘要 本博文主要介绍基于JPA的读写分离实战,帮助大家更好的学会使用读写分离。透明化读写分离所带来的影响,让使用方尽量像使用一个数据库一样使用主从数据库集群,是ShardingSphere读写分离模块的主要设计目标。 一、读写分离库的场景和设计…

一文了解tcp/ip协议的运行原理

接触代理ip的人都了解https/sock5等ip协议,那么TCP/IP 协议又是什么? 一、什么是TCP/IP 协议? TCP/IP 协议实际上是一系列网络通信协议的一个统称,他负责具体的数据传输工作,核心的两个协议包括TCP以及IP&#xff0c…

启动服务报错:Command line is too long Shorten command line for xxx or also for Spri

ommand line is too long. Shorten command line for ProjectApprovalApplication or also for Spring Boot default configuration. 启动springboot 项目的时候报错 解决方案: 点击提示中的:default:然后在弹出窗口中选择:JAR xx…

Apache Struts2漏洞复现之s2-005漏洞复现

0x01 声明: 仅供学习参考使用,请勿用作违法用途,否则后果自负。 0x02 简介: Apache Struts 2是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构。它利用并延伸了Java ServletAPI,鼓励开发者采用MVC架构…

LNMT架构

所谓的LNMT架构 指的就是Linux操作系统上部署Nginx web服务器、MySQL数据库服务器、Tomcat中间件服务器 L linux N nginx M mysql T tomcat 单机部署 1,安装 apache-tomcat 2,移动目录 3,复制第二个tomcat 4,…