人大金仓分析型数据库系统扩容(五)

news/2024/12/29 19:52:44/

目录

初始化新节点

扩容文件

初始化新节点

失败回滚

监控扩容状态


初始化新节点

        使用gpexpand工具创建并初始化新节点实例,并创建扩容schema。这些过程完成后,运行gpexpand检测扩容schema是否被创建,如果成功则做表重分布。

扩容文件

        要开始扩容,gpexpand要求一个包含关新节点和主机信息的输入文件。 如果运行gpexpand但不指定输入文件,该工具会显示一个交互式来收集所需的信息并且自动创建一个输入文件。如果使用交互式创建输入文件,可以在提示符中指定一个含有扩容主机列表的文件。 如果平台或者命令shell限制主机列表的长度,使用-f指定主机就是唯一的办法。

        在运行gpexpand在交互模式中创建一个输入文件之前,确保了解:

  • 新主机的数量
  • 新主机名
  • 现有主机中使用的镜像策略
  • 每个主机要增加的实例数量

        该工具会基于这些信息、dbid、content ID以及gp_segment_configuration中存储的数据目录值自动生成一个输入文件,并将该文件保存在当前目录中。

        运行gpexpand。该工具显示关于如何准备扩容操作的信息,并且它会提示退出或者继续,在交互中,输入Y以继续:

$ gpexpand -f /home/mppadmin/new_hosts_file

        除非用户用-f指定了一个主机文件,用户会被提示输入主机名。 可以输入新扩容主机的主机名组成的由逗号分隔的列表。例如:

> sdw4, sdw5, sdw6, sdw7

         如果只对现有主机增加节点,在这个提示符处留一个空行。 不要指定localhost或者任何现有的主机名。

        输入在用户的系统中使用的镜像策略(如果有)。 选项是spread|grouped|none。默认设置是grouped。输入要增加的主节点的数量(如果有)。 默认情况下,新主机会被用与现有主机相同数量的主节点初始化。 输入一个大于零的数字可以为每个主机增加节点数量。 用户输入的数字将是在所有主机上初始化的额外节点的数量。

        如果用户在增加新的主节点,为这些新的节点输入新的主数据目录的根目录。 不要指定真实的数据目录名称,目录会由gpexpand基于现有数据目录名称自动创建。例如,如果用户的现有数据目录像下面这样:

/gpdata/primary/gp0
/gpdata/primary/gp1

        那么输入下面的内容(每一个提示输入一个)来指定两个新的主节点的数据目录:

/gpdata/primary
/gpdata/primary

         当初始化运行时,该工具会在/gpdata/primary下面创建新目录gp2以及gp3。如果用户在增加新的镜像节点,为这些新的节点输入新的镜像数据目录的根目录。 不要指定数据目录名称,目录会由gpexpand基于现有数据目录名称自动创建。

        在用户已经输入所有要求的信息后,该工具会生成一个输入文件并且把它保存在当前目录中。例如:

gpexpand_inputfile_yyyymmdd_145134

初始化新节点

        运行gpexpand工具,通过-i指定输入文件。例如:

gpexpand -i gpexpand_inputfile_yyyymmdd_145134
        工具检测扩容schema是否存在。 如果gpexpand schema存在,在开始一个新扩容操作前通过gpexpand -c删除它。当初始化完成,可以连到数据库查看扩容schema。 gpexpand schema存在于postgres数据库中。

失败回滚

        如果扩容在初始化步骤失败,而数据库没有启动,用户必须首先通过运行gpstart -m命令以master-only模式重启数据库。用下列命令回滚失败的扩容:

gpexpand --rollback

监控扩容状态

        在任何时候,可以运行带有-x标记的gpstate命令来检查集群扩容状态:

$ gpstate -x

        如果扩容schema存在于postgres数据库,gpstate -x报告扩容的进度。 在扩容的第一阶段,gpstate报告节点初始化的进度。 在第二阶段,gpstate报告表重分布的进度,和重分布是否暂停或运行。


http://www.ppmy.cn/news/1101309.html

相关文章

nodejs 爬虫 axios 异步爬虫 教程 【一】

axios 自定义headers axios.defaults.headers.common["User-Agent"] "Googlebot/2.1 (http://www.google.com/bot.html)"; 运行环境: node :v18 const axios require("axios"); axios.defaults.headers.common["U…

Mac通过brew安装PostgreSQL保姆级实践步骤

PostgreSQL数据库是必须要掌握的数据库之一,如果使用Mac系统的安装postgresql有两种方式,一种是从官网下载图形化dmg安装包,另一种是使用Homebrew管理工具安装。搜索引擎能搜到很多教程,但是一些复制拼接的博客和年代久远的教程会…

Android学习之路(14) Context详解

一. 简介 在 Android 开发中、亦或是面试中都离不开四大组件的身影,而在创建或启动这些组件时,并不能直接通过 new 关键字后跟类名来创建实例对象,而是需要有它们各自的上下文环境,也就是本篇文章要讨论的 Context。 1.1 Contex…

YOLO目标检测——口罩规范佩戴数据集+已标注xml和txt格式标签下载分享

实际项目应用:目标检测口罩佩戴检测数据集的应用场景涵盖了公共场所监控、疫情防控管理、安全管理与控制以及人员统计和分析等领域。这些应用场景可以帮助相关部门和机构更好地管理口罩佩戴情况,提高公共卫生和安全水平,保障人们的健康和安全…

缓存夺命连环问

1. 为什么要用缓存? 用缓存,主要有两个用途:高性能、高并发。 高性能 假设这么个场景,你有个操作,一个请求过来,吭哧吭哧你各种乱七八糟操作 MySQL,半天查出来一个结果,耗时 600m…

解决ul元素不能跟div同一行显示的办法

现象如下: html结构如下: 可以看到div和ul是同级元素。 为什么这里ul换行了呢! 这里要敲黑板了! 因为ul是块级元素!也就是独占一行,跟div一样。 如果需要ul跟div在同一行显示,则要求ul前面相…

D. Sorting By Multiplication

Problem - D - Codeforces 思路:我们首先考虑当只能乘以正数时,那么变为单调增的方法就是找所有w[i]>w[i1]的对数,因为如果存在一个w[i]>w[i1],那么我们一定至少需要进行一次操作,并且我们还知道我们进行一次操…

java_日期时间API

文章目录 一、JDK8之前的日期时间API1.1 System类的currentTimeMillis()1.2 两个Date类1.2.1 java.util.Date包下的1.2.2 java.sql.Date包下的 一、JDK8之前的日期时间API 1.1 System类的currentTimeMillis() 获取当前时间对应的毫秒数,long类型 当前时间与1970年1…