Greenplum6.19集群搭建

一,安装说明

1.1环境说明


1、首先确定部署的环境,确定下服务器的端口,一般默认是22的端口;

2、当前这份文档是服务器处于10022端口下部署的(现场生产环境要求,22端口在生产环境存在安全隐患);

3、操作系统Centos7.9;

4、 数据库greenplum-db-6.19.1。

1.2集群介绍


1、本次采用的是4台机器组成的集群:1台机器是master节点,1台机器是standby节点(这个节点相当于master的备用节点),2台机器是segment节点。

2、集群的ip和hostname如下(都是虚拟机环境):

192.168.0.31   mdw(master节点)

192.168.0.32   smdw (standby节点)

192.168.0.33   sdw1 (segment节点)

192.168.0.34   sdw2 (segment节点)

二,安装环境准备


2.1 关闭防火墙(所有节点)


1、配置的时候,要保证所有的机器的网络都是通的,并且每台机器的防火墙都是关闭的,避免存在网络不通的情况。

具体操作:

systemctl stop firewalld (停止防火墙)

systemctl disable firewalld(关闭防火墙)

systemctl status firewalld(查看防火墙状态)

截图如下:

2.2 关闭SELINUX(所有节点)


1、修改/etc/selinux/config文件(在某些系统中,可能是/etc/sysconfig/selinux文件),将SELINUX=enforcing修改为SELINUX=disabled。更新配置之后要重启服务器生效(这个部分可以在2.7操作完之后执行)或者执行:setenforce 0,使其立即生效。

2、具体操作:(每个节点直接执行如下命令)

sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config

截图如下:

注:执行完也可以直接进入/etc/selinux/config的文件查看是否修改完全。

2.3 修改内核配置参数 (所有节点)


1、修改/etc/sysctl.conf文件,其中的配置文件是官方配置的。

具体操作:

cat <<EOF > /etc/sysctl.conf

# kernel.shmall = _PHYS_PAGES / 2

kernel.shmall = 742216

# kernel.shmmax = kernel.shmall * PAGE_SIZE

kernel.shmmax = 3040116736

kernel.shmmni = 4096

vm.overcommit_memory = 2

vm.overcommit_ratio = 95

net.ipv4.ip_local_port_range = 10000 65535

kernel.sem = 500 2048000 200 4096

kernel.sysrq = 1

kernel.core_uses_pid = 1

kernel.msgmnb = 65536

kernel.msgmax = 65536

kernel.msgmni = 2048

net.ipv4.tcp_syncookies = 1

net.ipv4.conf.default.accept_source_route = 0

net.ipv4.tcp_max_syn_backlog = 4096

net.ipv4.conf.all.arp_filter = 1

net.core.netdev_max_backlog = 10000

net.core.rmem_max = 2097152

net.core.wmem_max = 2097152

vm.swappiness = 10

vm.zone_reclaim_mode = 0

vm.dirty_expire_centisecs = 500

vm.dirty_writeback_centisecs = 100

vm.dirty_background_ratio = 0 # See System Memory

vm.dirty_ratio = 0

vm.dirty_background_bytes = 1610612736

vm.dirty_bytes = 4294967296

EOF

截图如下:

2、执行完上述操作后,执行sysctl -p 使配置生效。

具体操作:

sysctl -p

截图如下:

2.4 配置/etc/hosts (所有节点)


1、主要是为之后 Greenplum 能够在各个节点之间相互通信做准备。

具体操作:

vi /etc/hosts

截图如下:

2.5 设置etc/sysconfig/network (所有节点)


1、每个节点机器的设置内容不同。
具体操作(在其他服务器上执行的话,修改hostname)

截图如下:

注:其他节点都需要修改。

2.6 配置资源限制参数etc/security/limits.conf(所有节点)


1、具体操作:
cat <<EOF > /etc/security/limits.conf

* soft nofile 524288

* hard nofile 524288

* soft nproc 131072

* hard nproc 131072

EOF

截图如下:

2.7 修改ssh的连接数(所有节点)


1、具体操作:

cat <<EOF >> /etc/ssh/sshd_config

 MaxStartups 200

 MaxSessions 200

 EOF

截图如下:

2.8 将所有服务器重启(所有节点)

reboot

三,GreenPlum的数据库安装


3.1 添加组和用户(所有节点机器 root 用户操作)


1、创建 gpadmin 用户及用户组,将其作为安装 greenplum 的操作系统用户。

2、如果已经存在,先删除,

具体操作:
groupdel gpadmin
userdel gpadmin

3、创建新的用户和用户组
具体操作:

groupadd gpadmin

useradd -r -m -g gpadmin gpadmin

passwd gpadmin (设置密码)

截图如下:

3.2 集群相互之间ssh免密(所有节点机器 gpadmin 用户操作)


1、具体操作:(操作为master节点)

su gpadmin (进入gpadmin用户)

mkdir -p /home/gpadmin/conf(这个部分提前创建,后续会用到)

cd /home/gpadmin/

ssh-keygen -t rsa (生成密钥对)

ssh-copy-id smdw

ssh-copy-id sdw1

ssh-copy-id sdw2

截图如下:

 注:每个节点都需要这样操作。

验证如下:在gpadmin用户下,ssh smdw 输入后,无需密码直接登录到了smdw服务器。

问题整理:(如果是10002端口这个地方一定需要改)

这个地方出现一个问题,还是不能链接,需要ssh -p 10022  localhost4
是可以访问的。

报错截图:

解决办法:
修改/etc/services文件,将ssh 对应的端口改为10022。

再次验证sss localhost4。
 

3.3 ssh权限互通设置(Master节点)


1、在/home/gpadmin/conf的路径下生成 hostlist,seg_hosts文件:

具体操作:

cd  /home/gpadmin/conf

vi hostlist

#文件内容

mdw

smdw

sdw1

sdw2

vi seg_hosts

#文件内容

sdw1

sdw2

截图如下:

3.4 Greenplum集群安装(所有节点)


1、首先是将greenplum的安装包导入到服务器上(可以新建一个文件夹);、

2、具体操作:
su root (进入root用户)

cd /root/gpadmin (这个安装包的所在位置)

ls (查看安装包,确认位置)

sudo yum install ./open-source-greenplum-db-6.19.1-rhel7-x86_64.rpm (这个是官方的安装步骤,是不需要再去下载依赖的)

chown -R gpadmin:gpadmin /usr/local/greenplum* (安装完之后,这个地方是将这个文件在gpadmin用户赋予权限)

截图如下:

后续安装过程会有一次输入:y (确认操作)

注:所有节点都需要安装。

3.5 使用 gpssh-exkeys 打通所有服务器 (Master节点)


1、使用 gpssh-exkeys 将所有机器的通道打开,这样在每台机器之间跳转,就不需要输入密码。

具体操作:

su gpadmin

cd /usr/local/greenplum-db-6.19.1/

source /usr/local/greenplum-db-6.19.1/greenplum_path.sh

cd /home/gpadmin/conf

gpssh-exkeys -f hostlist

截图如下:

3.6 环境变量配置.bashrc和GPHOME(所有节点机器 gpadmin 用户操作)


1、配置环境变量.bashrc

具体操作:

su gpadmin

mkdir -p /home/gpadmin/data/master (这个部分可以提前创建)
cat <<EOF >> /home/gpadmin/.bashrc

source /usr/local/greenplum-db/greenplum_path.sh

export PGPORT=5432

export PGUSER=gpadmin

export MASTER_DATA_DIRECTORY=/app/gpadmin/data/master/gpseg-1(注意:这个路径是我本人放置数据的文件夹;大家可以自行考虑,根据服务器内存调整位置)

export PGDATABASE=gp_sydb

export LD_PRELOAD=/lib64/libz.so.1 ps

EOF

source /home/gpadmin/.bashrc

截图如下:

2、配置环境变量GPHOME,首先进到文件中直接修改

具体操作:

vi /usr/local/greenplum-db/greenplum_path.sh

添加的路径:GPHOME=/usr/local/greenplum-db

截图如下:

3.7 创建数据文件夹(Master节点)


1、创建各个节点的数据文件夹,该步骤之后 hostlist 文件包含机器下都会创建 data目录,data目录下都会创建master、primary、mirror文件夹。

具体操作:

gpssh -f /home/gpadmin/conf/hostlist

mkdir data

cd data

mkdir master

mkdir primary

mkdir mirror

exit

截图如下:

3.8 连通性检查(主节点 gpadmin 用户操作 )


1、检查各个节点的连通性
具体操作:

gpcheckperf -f /home/gpadmin/conf/hostlist -r N -d /tmp

截图如下:

3.9 初始化配置文件编辑修改(主节点 gpadmin 用户操作 )


1、这里修改初始化文件,首先拷贝一个文件gpinitsystem_config,在修改。

具体操作:
mkdir /home/gpadmin/gpconfigs

cp /usr/local/greenplum/greenplum-db/docs/cli_help/gpconfigs/gpinitsystem_config /home/gpadmin/gpconfigs/gpinitsystem_config (这个部分是一个命令,比较长)

vim /home/gpadmin/gpinitsystem_config
这里先搜索在修改:

# ------------------------以下为配置内容------------------------

# 该项配置设置主节点数据存储位置,括号里边有几个代表每台主机创建几个postgresql数据库实例,即segment的实例数,上边示例是2个。

declare -a DATA_DIRECTORY=(/home/gpadmin/data/primary /home/gpadmin/data/primary)

# 该项配置设置主节点机器名字

MASTER_HOSTNAME=mdw

# 该项配置设置主节点数据存储位置

MASTER_DIRECTORY=/home/gpadmin/data/master

# 该项配置设置是备节点数据存储位置,规则同DATA_DIRECTORY,括号里边数量和DATA_DIRECTORY保持一致。

# greenplum数据分主节点和备节点,主节点挂掉时候备节点数据会启用。

declare -a MIRROR_DATA_DIRECTORY=(/home/gpadmin/data/primary /home/gpadmin/data/primary)

# 该项配置设置默认数据库名字,和环境变量数据库名字保持一致,不然会失败。

DATABASE_NAME=gp_sydb

截图如下:

2、在/home/gpadmin/gpconfigs新增一个配置文件hostfile_gpinitsystem

具体操作:

cd /home/gpadmin/gpconfigs

vi hostfile_gpinitsystem

#新增的内容
sdw1

sdw2

截图如下:

3.10 初始化数据库(主节点 gpadmin 用户操作 )


1、初始化数据库

具体操作:

gpinitsystem -c gpconfigs/gpinitsystem_config -h gpconfigs/hostfile_gpinitsystem
备用:gpinitsystem -c /home/gpadmin/gpconfigs/gpinitsystem_config -h /home/gpadmin/gpconfigs/hostfile_gpinitsystem

截图如下:

 上述应该就是安装好了。

3.11设置远程登录(主节点 gpadmin 用户操作 )


1、如需要Navicat能够链接,需要配置如下:

具体操作:

echo "host all gpadmin 0.0.0.0/0 trust" >> /home/gpadmin/data/master/gpseg-1/pg_hba.conf

gpstop -u (重新加载数据库配置)

截图如下:

3.12 设置standby节点(主节点 gpadmin 用户操作 )


1、standby节点根据之前的步骤,就已经完成了配置

具体操作:

gpinitstandby -s smdw

截图如下:

2、验证standby节点是否完成配置

在standby的服务器上,验证相关端口是否运行

具体操作:

ps -ef|grep postgres

截图如下:

至此,GP集群安装完成,并设置好了standby。

四,Greenplum数据库验证


4.1登录验证(主节点 gpadmin 用户操作 )


1、登录验证

具体操作:

psql -d postgres

截图如下:

2、navicat登录验证

截图如下:

3、查看集群状态验证,在主节点上操作命令

具体操作:

Gpstate

截图如下:

4.2其他greenplum命令(主节点 gpadmin 用户操作 )


1、命令如下

• 关闭gpstop

• 启动gpstart

• 状态查看gpstate

• help命令查看所有命令

psql -d postgres 进入psql命令行执行help

\h 查看SQL命令

? 查看psql命令

问题:安装greenplum集群,执行gpssh-exkeys -f 报错
环境:CentOS7.8 端口是10022 
问题分析,主要是gpssh-exkeys默认是22端口,将其中的一些命令改加上端口

问题截图:

处理办法:

打开gpssh-exkeys脚本,

修改一:

errfile = os.path.join(tempDir, 'sshcheck.err')
cmd = 'ssh -p 10022 -o "BatchMode=yes" -o "StrictHostKeyChecking=no" %s true 2>%s' % (hostname, errfile)

修改二:

    for remoteHost in GV.allHosts:
         cmd = ['ssh','-p','10022','[email protected]'+ remoteHost.host(), '-o', 'BatchMode=yes', '-o', 'StrictHostKeyChecking=yes',  'true']

修改三:

cmd = ('scp -P 10022 -q -o "BatchMode yes" -o "NumberOfPasswordPrompts 0" ' + '%s %s %s %s %s:.ssh/ 2>&1' % (remoteAuthKeysFile, remoteKnownHostsFile, remoteIdentity, remoteIdentityPub, canonicalize(h.host()))) h.popen(cmd)
修改四:

for h in GV.newHosts:
            cmd = ('scp -P 10022 -q -o "BatchMode yes" -o "NumberOfPasswordPrompts 0" ' +
                   '%s %s %s %s %s:.ssh/ 2>&1'
                   % (GV.authorized_keys_fname,
                      GV.known_hosts_fname,
                      GV.id_rsa_fname,
                      GV.id_rsa_pub_fname,
                      canonicalize(h.host())))
            h.popen(cmd)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SAP DOI EXCEL宏的使用

OAOR里上传EXCEL模版 屏幕初始化PBO创建DOI EXCEL对象&#xff0c;并填充EXCEL内容 *&---------------------------------------------------------------------* *& Module INIT_DOI_DISPLAY_9100 OUTPUT *&--------------------------------------------…

排序算法漫游:从冒泡到堆排的底层逻辑与性能厮杀

各位看官早安午安晚安呀 如果您觉得这篇文章对您有帮助的话 欢迎您一键三连&#xff0c;小编尽全力做到更好 欢迎您分享给更多人哦 今天我们来学习七大排序算法 一&#xff1a;直接插入排序 直接插入排序是一种简单的插入排序法&#xff0c;其基本思想是&#xff1a; 把待排序…

【VBA】WPS/PPT设置标题字体

通过VBA&#xff0c;配合左上角的快速访问工具栏&#xff0c;实现自动化调整 选中文本框的 字体位置、大小、颜色。 配合quicker更加便捷 Sub DisableAutoWrapAndFormat()Dim shp As Shape 检查是否选中了一个形状&#xff08;文本框&#xff09;If ActiveWindow.Selection.Typ…

大语言模型从理论到实践(第二版)-学习笔记(绪论)

大语言模型的基本概念 1.理解语言是人工智能算法获取知识的前提 2.语言模型的目标就是对自然语言的概率分布建模 3.词汇表 V 上的语言模型&#xff0c;由函数 P(w1w2 wm) 表示&#xff0c;可以形式化地构建为词序列 w1w2 wm 的概率分布&#xff0c;表示词序列 w1w2 wm…

Qt常用控件之 纵向列表QListWidget

纵向列表QListWidget QListWidget 是一个纵向列表控件。 QListWidget属性 属性说明currentRow当前被选中的是第几行。count一共有多少行。sortingEnabled是否允许排序。isWrapping是否允许换行。itemAlignment元素的对齐方式。selectRectVisible被选中的元素矩形是否可见。s…

使用 Apache POI 实现 Excel 单元格合并

在日常工作中&#xff0c;Excel 是一个不可或缺的工具&#xff0c;尤其是在处理大量数据时。为了提升数据的可读性和美观性&#xff0c;我们经常需要对 Excel 中的单元格进行合并操作。本文将介绍如何使用 Apache POI 库在 Java 中实现 Excel 单元格的合并&#xff0c;并提供一…

leetcode日记(84)交错字符串

很明显的动态规划&#xff0c;就是怎么用想了一段时间。&#xff08;开始还怀疑过是不是双指针&#xff0c;发现不行&#xff0c;因为会出现s3的下一个字符同时能够匹配到两个字符串字符的情况&#xff09; 然后就是构建数组dp[101][101]&#xff0c;数组代表前x个s1字符和前y…

【Linux———信号精讲】

你是怎么做到的&#xff0c;给了她想要的爱............................................................................................ 文章目录 前言 一、【信号入门】 1.1、【生活角度的信号】 1.2、【ctrl c与z】 1.3、【信号的发送与记录】 1.4、【信号处理常见方式…

【原创】springboot+vue核酸检测管理系统设计与实现

个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;源码获取&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交给天意。 研究…

Qt6.8.2创建WebAssmebly项目使用FFmpeg资源

Qt6新出了WebAssmebly功能&#xff0c;可以将C写的软件到浏览器中运行&#xff0c;最近一段时间正在研究这方便内容&#xff0c;普通的控件响应都能实现&#xff0c;今天主要为大家分享如何将FFmpeg中的功能应用到浏览器中。 开发环境&#xff1a;window11&#xff0c;Qt6.8.2…

LeetCode 解题思路 12(Hot 100)

解题思路&#xff1a; 定义三个指针&#xff1a; prev&#xff08;前驱节点&#xff09;、current&#xff08;当前节点&#xff09;、nextNode&#xff08;临时保存下一个节点&#xff09;遍历链表&#xff1a; 每次将 current.next 指向 prev&#xff0c;移动指针直到 curre…

用数据唤醒深度好眠,时序数据库 TDengine 助力安提思脑科学研究

在智能医疗与脑科学快速发展的今天&#xff0c;高效的数据处理能力已成为突破创新的关键。安提思专注于睡眠监测与神经调控&#xff0c;基于人工智能和边缘计算&#xff0c;实现从生理体征监测、智能干预到效果评估的闭环。面对海量生理数据的存储与实时计算需求&#xff0c;安…

玩转若依二次开发之若依框架Springboot+Vue3

目录 一、使用&#xff08;非重点&#xff09; 0.准备工作 1.下载git地址 2.配置信息 3.系统启动 4.DIY主题样式和文案 二、使用&#xff08;重点&#xff09; 1.单表生成Java和vue3代码 1.1.创建用户表 1.2.生成Java和vue3代码 1.3.把生成代码复制到项目中 1.4.重…

llamafactory大模型微调教程(周易大模型案例)

1.环境说明 操作系统&#xff1a;ubuntu 20 基础模型&#xff1a;Qwen2.5-1.5B-Instruct 工具&#xff1a;llamafactory GPU&#xff1a;四张4090 2、环境部署 2.1 下载基础模型 # 1、下载 modelscope pip install modelscope#2、模型下载 cd /data/ cat >> download…

06 HarmonyOS Next性能优化之LazyForEach 列表渲染基础与实现详解 (一)

温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; 目录 一、代码结构概览二、详细代码解析1. 数据源管理实现2. 数据结构定义3. 优化的列表项组件4. 主列表组件实现 一、代码结构概览 本文将详细解…

【Linux】线程同步与互斥

线程同步与互斥 一.线程互斥1.互斥相关概念2.互斥锁 Mutex3.互斥锁接口4.互斥锁实现原理5.互斥锁封装 二.线程同步1.同步相关概念2.条件变量 Condition Variable3.条件变量接口4.条件变量封装5.信号量 Semaphore6.信号量接口7.信号量封装 三.生产者 - 消费者模型1.基于 Blockin…

基于大数据的电影情感分析推荐系统

【大数据】基于大数据的电影情感分析推荐系统&#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 本系统通过结合Flask框架、Vue前端、LSTM情感分析算法以及pyecharts和numpy、pandas等技术&#x…

网络安全配置截图 网络安全i

网络安全概念及规范 1.网络安全定义 网络安全的概述和发展历史 网络安全 广义的网络安全&#xff1a;Cyber Security&#xff08;网络空间安全&#xff09; 网络空间有独立且相互依存的信息基础设施和网络组成&#xff0c;包括互联网、电信网、计算机系统、嵌入式处理器和控…

测试用例详解

一、通用测试用例八要素   1、用例编号&#xff1b;    2、测试项目&#xff1b;   3、测试标题&#xff1b; 4、重要级别&#xff1b;    5、预置条件&#xff1b;    6、测试输入&#xff1b;    7、操作步骤&#xff1b;    8、预期输出 二、具体分析通…

mybatis映射文件相关的知识点总结

mybatis映射文件相关的知识点总结 mybatis官网地址 英文版&#xff1a;https://mybatis.org/mybatis-3/index.html 中文版&#xff1a;https://mybatis.p2hp.com/ 搭建环境 /* SQLyog Ultimate v10.00 Beta1 MySQL - 8.0.30 : Database - mybatis-label *****************…