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.pswp.cn/diannao/72711.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72711.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72711.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

電商項目-秒殺系統(四)秒殺異步下單防止重復秒殺

一、 防止惡意刷單解決 在生產場景下&#xff0c;可能會有一些人會惡意訪問當前網站&#xff0c;來進行惡意的刷單。這樣會造成當前系統出現一些業務上的業務混亂&#xff0c;出現臟數據&#xff0c;或者造成后端訪問壓力大等問題。 一般要解決這個問題的話&#xff0c;前端可…

原生android 打包.aar到uniapp使用

1.原生安卓里面引入uniapp官方提供的包文件&#xff1a; uniapp-v8-release.aar 2.提供uniapp調用的接口&#xff0c;新建類文件繼承UniModule&#xff0c; package com.dermandar.panoramal;import com.scjt.lib.certlib;import io.dcloud.feature.uniapp.annotation.UniJSM…

Android 多用戶相關

Android 多用戶相關 本文主要記錄下android 多用戶相關的adb 命令操作. 1: 獲取用戶列表 命令: adb shell pm list users 輸出如下: Users:UserInfo{0:機主:c13} running默認只有一個用戶, id為0 &#xff0c;用戶狀態為運行 2: 創建新用戶 命令&#xff1a; adb shell …

基于Spring Boot的高校就業招聘系統的設計與實現(LW+源碼+講解)

專注于大學生項目實戰開發,講解,畢業答疑輔導&#xff0c;歡迎高校老師/同行前輩交流合作?。 技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容&#xff1a;…

前端安全面試題匯總及參考答案

目錄 簡述 XSS 攻擊的原理及三種常見類型(存儲型、反射型、DOM 型) 如何在前端防御 XSS 攻擊?列舉編碼、過濾、CSP 策略的具體實現方式 富文本編輯器場景下如何安全處理用戶輸入的 HTML 內容? 如何通過 HttpOnly 屬性增強 Cookie 安全性?它與 XSS 防御的關系是什么? …

Linux驅動開發(1.基礎創建)

序言&#xff1a;從高層邏輯到底層硬件的回歸 在當今的軟件開發中&#xff0c;我們習慣于用高級語言構建抽象層——通過框架、庫和云服務快速實現功能。這種“軟邏輯”的便利性讓開發效率倍增&#xff0c;卻也逐漸模糊了我們對計算機本質的認知&#xff1a;一切代碼終將落地為…

Gradle本地配置文件分享

Gradle本地配置文件分享 allprojects {repositories {mavenLocal()maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }maven { name "Bstek" ; url "https://nexus.bsdn.org/content/groups/public/" }ma…

deepseek 本地部署

deepseek 本地部署 純新手教學&#xff0c;手把手5分鐘帶你在本地部署一個私有的deepseek&#xff0c;再也不用受網絡影響。流暢使用deepseek&#xff01;&#xff01;&#xff01; 如果不想看文章&#xff0c;指路&#xff1a;Deep seek R1本地部署 小白超詳細教程 &#xff0…

HTML學習筆記(全)

基本結構 <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title></title> </head> <body></body> </html> 基本標簽元素 標題&#xff08;heading&#xff09; <h1>一級標題</h1> &…

騰訊云對象存儲服務(COS)

騰訊云對象存儲服務&#xff08;COS&#xff09; 安全、可擴展、低成本的云存儲解決方案 騰訊云 對象存儲服務&#xff08;COS&#xff0c;Cloud Object Storage&#xff09; 是一種高可靠、高性能、可擴展的云存儲服務&#xff0c;專為海量非結構化數據&#xff08;如圖片、…

從ETL到數倉分層:大數據處理的“金字塔”構建之道

在當今數據驅動的時代&#xff0c;大數據處理已成為企業決策和業務優化的核心。而ETL&#xff08;Extract, Transform, Load&#xff09;作為數據處理的基石&#xff0c;其背后的數倉分層理念更是決定了數據處理的效率與質量。本文將深入探討ETL工作中的數倉分層理念&#xff0…

數字孿生對于新基建的價值淺析,算是拋磚引玉。

數字孿生&#xff08;Digital Twin&#xff09;作為一項融合物理世界與數字世界的關鍵技術&#xff0c;在新基建中扮演著虛實協同、智能決策、全生命周期管理的核心角色&#xff0c;其價值貫穿于基礎設施的設計、建設、運維到優化全流程。 一、核心價值&#xff1a;虛實映射與智…

從零開始實現大語言模型(十三):預訓練大語言模型GPTModel

1. 前言 使用梯度下降算法通過下一個token預測任務預訓練大語言模型GPTModel&#xff0c;前向傳播流程每次會輸入一個batch的長度均為context_len的訓練樣本&#xff0c;執行 batch_size context_len \text{batch\_size}\times\text{context\_len} batch_sizecontext_len次下…

QWQ大模型評測榜單

評測榜單說明 在數學推理基準AIME24上&#xff0c;QwQ-32B達到了79.5分&#xff0c;幾乎與DeepSeek-R1-617B的79.8分持平&#xff0c;遠超OpenAI o1-mini的63.6分&#xff0c;及相同尺寸的R1蒸餾模型。 在編程能力方面&#xff0c;QwQ-32B 在LiveCodeBench上獲得了63.4分&…

bash: uwsgi: 未找到命令

針對你提出的“bash: uwsgi: command not found”問題&#xff0c;以下是一些可能的解決方案&#xff0c;請按照步驟逐一排查&#xff1a; ?1、檢查uwsgi命令是否正確?&#xff1a; 確保你輸入的命令是uwsgi&#xff0c;而不是uWSGI或其他變體。 ?2、確認uwsgi是否已安裝?&…

超圖(Hypergraph)

超圖&#xff08;Hypergraph&#xff09;是圖結構學習&#xff08;Graph Learning&#xff09;中的一種擴展形式&#xff0c;它比傳統圖&#xff08;Graph&#xff09;更具表達能力&#xff0c;適用于建模復雜的多元關系。 超圖是一種由 超節點&#xff08;Hypernodes&#xff…

PyTorch中的線性變換:nn.Parameter VS nn.Linear

self.weight nn.Parameter(torch.randn(in_channels, out_channels)) 和 self.linear nn.Linear(in_channels, out_channels) 并不完全一致&#xff0c;盡管它們都可以用于實現線性變換&#xff08;即全連接層&#xff09;&#xff0c;但它們的使用方式和內部實現有所不同。 …

鴻蒙生態日日新,夸克、順豐速運、駕校一點通等多款應用功能更新

3月5日鴻蒙生態日日新PLOG&#xff1a;吉事辦、健康甘肅等政務服務App上架原生鴻蒙應用市場&#xff1b;夸克、順豐速運、駕校一點通等多款應用功能更新。

基于SpringBoot的智慧停車場小程序(源碼+論文+部署教程)

運行環境 ? 前端&#xff1a;小程序 Vue ? 后端&#xff1a;Java ? IDE工具&#xff1a;IDEA&#xff08;可自行選擇&#xff09; HBuilderX 微信開發者工具 ? 技術棧&#xff1a;小程序 SpringBoot Vue MySQL 主要功能 智慧停車場微信小程序主要包含小程序端和…

致同報告:香港財政赤字加劇,擴大稅基與增收迫在眉睫

2月26日香港政府2025-26年度財政預算案&#xff0c;&#xff08;以下簡稱“預算案”&#xff09;發布&#xff0c;香港財政司司長陳茂波提出一系列旨在減少開支并振興香港經濟的措施&#xff0c;以應對日益增長的財政赤字。主要提案包括對所有公務員實施凍薪、針對性稅務寬減措…