Greenplum源碼編譯安裝(單機及集羣模式)徹底攻略

公司有個項目須要安裝greenplum數據庫,讓我這個gp小白非常受傷,在網上各類搜,結果找到的都是TMD坑貨帖子,可是通過4日苦戰,總算是把greenplum的安裝弄了個明白,單機及集羣模式都部署成功,下面由我給你們分享一下整個部署過程,並小分析一下安裝過程當中遇到的各類坑。php

首先,說一下個人環境,CentOS 7.2.1511,64位操做系統,全新安裝,沒有更新過python

[root@mdw ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core) 
[root@mdw ~]# uname -a
Linux mdw 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

由於是用的Vmware 11,因此只是配了內網地址,用SecureCRT遠程,忘了網卡怎麼配的,發個個人配置參考一下linux

[root@mdw ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736 
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=eno167
UUID=a8aa032c-5f5c-4a91-b18d-488b1182ea38
DEVICE=eno16777736
ONBOOT=yes
IPADDR=10.0.0.110
PREFIX=24
GATEWAY=10.0.0.2
DNS1=223.5.5.5
PEERDNS=yes
PEERROUTES=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

安裝以前先關閉selinux和防火牆,之後要開防火牆,能夠只容許gp數據庫端口便可c++

關閉、開啓防火牆
systemctl start firewalld.service#啓動firewall
systemctl stop firewalld.service#中止firewall
systemctl disable firewalld.service#禁止firewall開機啓動
systemctl enable firewalld.service#容許firewall開機啓動

關閉selinux
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
改完後重啓

開啓防火牆,預留gp端口
firewall-cmd --zone=public --permanent --add-port=5432/tcp
重載服務 
firewall-cmd --reload
檢測端口是否開啓
firewall-cmd --query-port=5432/tcp

 在/etc/sysctl.conf文件中加入有關共享內存與網絡參數配置git

vim /etc/sysctl.conf
加入如下內容
net.ipv4.ip_forward = 0
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 1
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.sem = 250 64000 100 512
kernel.shmmax = 500000000
kernel.shmmni = 4096
kernel.shmall = 4000000000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_syn_backlog = 4096
net.core.netdev_max_backlog = 10000
vm.overcommit_memory = 2
net.ipv4.conf.all.arp_filter = 1

在/etc/security/limits.conf中加入限制參數github

* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072

手動執行命令讓參數生效,固然,你也能夠重啓系統sql

sysctl -p

  

1、下面是重頭戲之一:編譯安裝greenplum數據庫

我是在2016年10月3日下載(從github克隆)的源碼,編譯安裝出來的版本是greenplum:4.3.99.00 build dev,postgresql:8.3.23bootstrap

一、下載(克隆)源碼,沒有安裝git的先安裝git,yum一下就行了,源碼包存放的位置本身定vim

yum install -y git
git clone https://github.com/greenplum-db/gpdb

二、由於是編譯安裝,因此須要大量的依賴包,固然也包括擴展項的依賴包和咱們最愛的vim編輯器,羅列以下

yum install -y curl-devel bzip2-devel python-devel openssl-devel wget perl-ExtUtils-Embed libxml2-devel openldap-devel pam pam-devel
yum install -y gcc-c++ libtool libaio bison vim-common.x86_64 vim-enhanced.x86_64 flex net-tools.x86_64 apr-devel
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
pip install psi lockfile paramiko setuptools epydoc psutil
pip install --upgrade setuptools

三、若是yum提示沒有這個包,建議更新一下yum源,你能夠選擇阿里的、新浪的或者163的,這裏以163爲例,記得先yum安裝wget先

cd /etc/yum.repos.d
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
mv centos.repo centos.repo.bak
mv CentOS7-Base-163.repo centos.repo
yum clean all
yum makecache

四、編譯安裝Greenplum,進入gpdb目錄,而後就是編譯安裝的傳統套路了。編譯參數有點長,我這裏分了兩行,你複製的話須要編輯成一整行再粘貼到命令行執行。

cd /data/software/gpdb
./configure --prefix=/data/program/gpsql --with-gssapi --with-pgport=5432 --with-libedit-preferred --with-perl --with-python --with-openssl
--with-pam --with-krb5 --with-ldap --with-libxml --enable-cassert --enable-debug --enable-testutils --enable-debugbreak --enable-depend
make
make install

五、這是參考了一下網上的編譯參數,這個比較全,可是會安裝各類擴展,網上有簡單的,不過我沒試過。若是上面這步中有報錯,絕對是少了必要的依賴包,網上搜一下,再yum一下,從新configure就行。若是是徹底按個人來的,那麼應該沒有問題,到此爲止greenplum安裝完成(PS:個人gp安裝位置爲:/data/program/gpsql)

 

2、重頭戲之二:配置單機模式

我所謂的單機模式是指將Master和segment安裝在一臺機器上,嘗試了網上的各類配置發現並不成功,尤爲是將mdw和sdw都解析成127.0.0.1的設置根本行不通。你能夠嘗試設置Master爲127.0.0.1,而segment爲正式的ip地址,或者按我這麼作:

一、配置hosts解析

vim /etc/hosts
後面添加如下內容:
10.1.5.10 mdw sdw
注:10.1.5.10是虛擬機的ip地址

二、改變greenplum安裝目錄的用戶和用戶組

chown -R gpadmin.gpadmin /data/program/gpsql

三、建立gp數據庫的管理帳戶gpadmin

groupadd gpadmin
useradd -g gpadmin gpadmin
passwd gpadmin
#能夠先設置一個簡單的,之後再改,好比123456

四、切換到gpadmin帳戶下,在家目錄下創建master和segment的數據存放目錄。你也能夠自行設定數據存放目錄,若是你不是以gpadmin創建的目錄,還須要修改目錄的用戶和用戶組,最好是建在家目錄下。

su - gpadmin
mkdir -p /home/gpadmin/masterdata
mkdir -p /home/gpadmin/segmentdata
mkdir -p /home/gpadmin/segmentmirror

五、建立包含全部主機的文件all_hosts

vim /home/gpadmin/all_hosts
加入下面兩行
mdw
sdw

六、建立包含segment主機名的文件

vim /home/gpadmin/seg_hosts
加入下面一行
sdw

七、這還沒完哦,由於mdw是master,而你的master是你的本機,因此要將本機的主機名改爲mdw,記得要改3個地方。固然,你不喜歡mdw,也能夠自行設定,只是後面要作相應的更改

CentOS 7下的改法
先執行
hostnamectl set-hostname "mdw"
執行後會自動修改/etc/hostname文件,你也能夠手動修改/etc/hostname文件
再執行
hostname mdw
最後改
vim /etc/sysconfig/network
mdw
退出,從新登陸,o了

八、將MASTER_DATA_DIRECTORY加入Master主機環境中,修改gpadmin用戶的.bashrc。官方文檔裏,這一步是放在後面的,由於這裏的MASTER_DATA_DIRECTORY路徑是根據你設定的master存儲數據的路徑變更的,這裏我把他提早了。若是你是按個人來的,就沒問題。若是是本身設定的,就修改一下這個路徑,不然後面啓動數據庫的時候會提示找不到MASTER_DATA_DIRECTORY路徑。

cd /home/gpadmin
vim .bashrc
最後添加以下內容
export MASTER_DATA_DIRECTORY=/home/gpadmin/masterdata/gpseg-1
source /data/program/gpsql/greenplum_path.sh
PS:greenplum_path的路徑也是根據你的gp安裝路徑來的,若是和我不同,本身改吧,若果路徑不對,gp命令將沒法執行,會提示沒有這個命令

九、這裏由於master和segment是在同一臺機器,因此不須要作時間同步,若是不在同一臺機器,須要作時間同步

十、將機器中的python庫所有複製到gpdb的python庫目錄下,gp命令都是基於python的,可是他找不到系統的python庫(很奇怪啊!),因而咱們就手動把這些庫拷貝到gp安裝目錄下的python文件夾裏,不然執行gp命令的時候會提示缺這個模塊啊,缺那個模塊啊之類的

\cp -R -f /usr/lib64/python2.7/site-packages/. /data/program/gpsql/lib/python/
PS:python庫下的一些庫是帶.的(隱藏的),通常執行cp命令是要不成的,just按我給的命令來

十一、CentOS 7.2須要執行如下語句,這個錯誤是初始化時遇到的一個錯誤提示,具體是什麼我忘了,just do it,可能CentOS 6.x不會有

echo "RemoveIPC=no" >> /etc/systemd/logind.conf
systemctl restart  systemd-logind.service

十二、編輯gp初始化配置文件,直接編輯一個新文件,不要複製官方目錄裏的再改了,除非你想知道這些東西都是什麼意思

vim /home/gpadmin/gpinitsystem_config
添加如下內容
ARRAY_NAME="EMC Greenplum DW"
SEG_PREFIX=gpseg
PORT_BASE=33000
declare -a DATA_DIRECTORY=(/home/gpadmin/segmentdata)
MASTER_HOSTNAME=mdw
MASTER_DIRECTORY=/home/gpadmin/masterdata
MASTER_PORT=5432
MACHINE_LIST_FILE=/home/gpadmin/seg_hosts
TRUSTED_SHELL=ssh
CHECK_POINT_SEGMENTS=8
ENCODING=UNICODE
MIRROR_PORT_BASE=43000
REPLICATION_PORT_BASE=34000
MIRROR_REPLICATION_PORT_BASE=44000
declare -a MIRROR_DATA_DIRECTORY=(/home/gpadmin/segmentmirror)
PS:注意這裏面的幾個路徑,若是你有多個segment,declare就多加幾個路徑,我這裏只設了一個segment節點,因此只有一個路徑

1三、創建信任關係,主要爲了免密碼登陸的麻煩,若果提示命令不存在,先source一下.bashrc,若是還不對,回到第8步檢查一下你配的路徑

gpssh-exkeys -f /home/gpadmin/all_hosts
PS:這是一個gp命令,不是系統自帶的

1四、初始化數據庫,我曾經由於這一步執行不成功熬了一晚上,各類報錯,各類提示

gpinitsystem -c /home/gpadmin/gpinitsystem_config
注意:
這裏遇到過最麻煩的提示是Unkown Host,在網上各類搜只告訴你host沒有解析到,而後改一下hosts文件就行。可是阿里雲的虛擬機你改他,他仍然提示你解析不到seg的host,
極可能跟阿里雲環境有關,若是你用的是阿里雲虛擬機,建議考慮多幾臺機器作個集羣,不要想着在一臺機器上又作master又作segment

1五、執行完上面這步,會有各類報錯,其餘的報錯你看看日誌裏的錯誤提示就能解決,中途須要你給他個「y",成功後應該在顯示的信息裏看到兩個success的提示,而後用gpstop命令試一試,提示以下信息表示安裝成功(中途要給個"y"):

[gpadmin@mdw ~]$ gpstop
20161002:21:22:46:034307 gpstop:mdw:gpadmin-[INFO]:-Starting gpstop with args: 
20161002:21:22:46:034307 gpstop:mdw:gpadmin-[INFO]:-Gathering information and validating the environment...
20161002:21:22:46:034307 gpstop:mdw:gpadmin-[INFO]:-Obtaining Greenplum Master catalog information
20161002:21:22:46:034307 gpstop:mdw:gpadmin-[INFO]:-Obtaining Segment details from master...
20161002:21:22:46:034307 gpstop:mdw:gpadmin-[INFO]:-Greenplum Version: 'postgres (Greenplum Database) 4.3.99.00 build dev'
20161002:21:22:46:034307 gpstop:mdw:gpadmin-[INFO]:---------------------------------------------
20161002:21:22:46:034307 gpstop:mdw:gpadmin-[INFO]:-Master instance parameters
20161002:21:22:46:034307 gpstop:mdw:gpadmin-[INFO]:---------------------------------------------
20161002:21:22:46:034307 gpstop:mdw:gpadmin-[INFO]:-   Master Greenplum instance process active PID   = 28031
20161002:21:22:46:034307 gpstop:mdw:gpadmin-[INFO]:-   Database                                       = template1
20161002:21:22:46:034307 gpstop:mdw:gpadmin-[INFO]:-   Master port                                    = 5432
20161002:21:22:46:034307 gpstop:mdw:gpadmin-[INFO]:-   Master directory                               = /home/gpadmin/masterdata/gpseg-1
20161002:21:22:46:034307 gpstop:mdw:gpadmin-[INFO]:-   Shutdown mode                                  = smart
20161002:21:22:46:034307 gpstop:mdw:gpadmin-[INFO]:-   Timeout                                        = 120
20161002:21:22:46:034307 gpstop:mdw:gpadmin-[INFO]:-   Shutdown Master standby host                   = Off
20161002:21:22:46:034307 gpstop:mdw:gpadmin-[INFO]:---------------------------------------------
20161002:21:22:46:034307 gpstop:mdw:gpadmin-[INFO]:-Segment instances that will be shutdown:
20161002:21:22:46:034307 gpstop:mdw:gpadmin-[INFO]:---------------------------------------------
20161002:21:22:46:034307 gpstop:mdw:gpadmin-[INFO]:-   Host   Datadir                              Port    Status
20161002:21:22:46:034307 gpstop:mdw:gpadmin-[INFO]:-   sdw    /home/gpadmin/segmentdata/gpseg0     33000   u
20161002:21:22:46:034307 gpstop:mdw:gpadmin-[INFO]:-   sdw    /home/gpadmin/segmentmirror/gpseg0   43000   u

Continue with Greenplum instance shutdown Yy|Nn (default=N):
> y
20161002:21:22:49:034307 gpstop:mdw:gpadmin-[INFO]:-There are 0 connections to the database
20161002:21:22:49:034307 gpstop:mdw:gpadmin-[INFO]:-Commencing Master instance shutdown with mode='smart'
20161002:21:22:49:034307 gpstop:mdw:gpadmin-[INFO]:-Master host=mdw
20161002:21:22:49:034307 gpstop:mdw:gpadmin-[INFO]:-Commencing Master instance shutdown with mode=smart
20161002:21:22:49:034307 gpstop:mdw:gpadmin-[INFO]:-Master segment instance directory=/home/gpadmin/masterdata/gpseg-1
20161002:21:22:50:034307 gpstop:mdw:gpadmin-[INFO]:-Attempting forceful termination of any leftover master process
20161002:21:22:50:034307 gpstop:mdw:gpadmin-[INFO]:-Terminating processes for segment /home/gpadmin/masterdata/gpseg-1
20161002:21:22:50:034307 gpstop:mdw:gpadmin-[INFO]:-No standby master host configured
20161002:21:22:50:034307 gpstop:mdw:gpadmin-[INFO]:-Commencing parallel primary segment instance shutdown, please wait...
20161002:21:22:50:034307 gpstop:mdw:gpadmin-[INFO]:-0.00% of jobs completed
20161002:21:23:00:034307 gpstop:mdw:gpadmin-[INFO]:-100.00% of jobs completed
20161002:21:23:00:034307 gpstop:mdw:gpadmin-[INFO]:-Commencing parallel mirror segment instance shutdown, please wait...
20161002:21:23:00:034307 gpstop:mdw:gpadmin-[INFO]:-0.00% of jobs completed
20161002:21:23:10:034307 gpstop:mdw:gpadmin-[INFO]:-100.00% of jobs completed
20161002:21:23:10:034307 gpstop:mdw:gpadmin-[INFO]:-----------------------------------------------------
20161002:21:23:10:034307 gpstop:mdw:gpadmin-[INFO]:-   Segments stopped successfully      = 2
20161002:21:23:10:034307 gpstop:mdw:gpadmin-[INFO]:-   Segments with errors during stop   = 0
20161002:21:23:10:034307 gpstop:mdw:gpadmin-[INFO]:-----------------------------------------------------
20161002:21:23:10:034307 gpstop:mdw:gpadmin-[INFO]:-Successfully shutdown 2 of 2 segment instances 
20161002:21:23:10:034307 gpstop:mdw:gpadmin-[INFO]:-Database successfully shutdown with no errors reported
20161002:21:23:10:034307 gpstop:mdw:gpadmin-[INFO]:-Cleaning up leftover gpmmon process
20161002:21:23:10:034307 gpstop:mdw:gpadmin-[INFO]:-No leftover gpmmon process found
20161002:21:23:10:034307 gpstop:mdw:gpadmin-[INFO]:-Cleaning up leftover gpsmon processes
20161002:21:23:11:034307 gpstop:mdw:gpadmin-[INFO]:-No leftover gpsmon processes on some hosts. not attempting forceful termination on these hosts
20161002:21:23:11:034307 gpstop:mdw:gpadmin-[INFO]:-Cleaning up leftover shared memory

1六、執行gpstart命令啓動數據庫,而後enjoy it!,至此單機模式greenplum安裝成功

 

3、重頭戲之三:配置集羣模式

一、首先作個簡單的規劃,好比:

10.0.0.105 master
10.0.0.106 segment1
10.0.0.107 segment2
...

二、Master節點的greenplum安裝參照重頭戲之一便可,可是segment的安裝就不要再去編譯了,有更簡單的方法,先賣個關子,後面再說

三、配置host解析,Master節點須要配置本身及全部segment節點的host解析,這裏greenplum可能會提示說master的hostname必須爲mdw,按提示改就行

vim /etc/hosts
10.0.0.105 master
10.0.0.106 segment1
10.0.0.107 segment2
...

四、各個segment節點配置本身的host解析

#in segment1
vim /etc/hosts
10.0.0.106 segment1


#in segment2
vim /etc/hosts
10.0.0.107 segment2

五、在master上建立自身數據存儲目錄

su - gpadmin
mkdir -p /home/gpadmin/masterdata

六、建立包含全部節點的all_hosts

vim /home/gpadmin/all_hosts
加入如下內容
master
segment1
segment2

七、建立包含全部segment節點的seg_hosts

vim /home/gpadmin/seg_hosts
加入下面內容
segment1
segment2

八、在Master節點上爲segment節點安裝greenplum數據庫(經過gpssh),必須在root下進行。這個安裝會自動在segment下安裝數據庫,並建立gpadmin用戶

source /data/program/gpsql/greenplum_path.sh
gpseginstall -f /home/gpadmin/all_hosts -u gpadmin -p 123456

九、在Master上使用gpssh工具爲全部segment主機建立主數據庫和鏡像數據目錄,root下執行便可

gpssh -f /home/gpadmin/seg_hosts -e 'mkdir -p /home/gpadmin/segmentdata'
gpssh -f /home/gpadmin/seg_hosts -e 'mkdir -p /home/gpadmin/segmentmirror'
gpssh -f /home/gpadmin/seg_hosts -e 'chown gpadmin.gpadmin /home/gpadmin/segmentdata'
gpssh -f /home/gpadmin/seg_hosts -e 'chown gpadmin.gpadmin /home/gpadmin/segmentmirror'

十、同步系統時間:這裏用chrony這個軟件進行時間同步,比ntpd簡單、快捷、方便,首先,安裝他

yum install chrony -y

十一、同步系統時間:修改配置文件

vim /etc/chrony.conf
將同步的服務器修改成如下內容,配置文件的原始設置直接刪掉
server 0.asia.pool.ntp.org
server 1.asia.pool.ntp.org
server 2.asia.pool.ntp.org
server 3.asia.pool.ntp.org

十二、同步系統時間:啓用服務,這個服務是個守護進程,能夠設定開機自啓

systemctl start chronyd
systemctl enable chronyd

1三、同步系統時間:設置亞洲時區

timedatectl set-timezone Asia/Shanghai

1四、同步系統時間:啓用NTP同步,同步設定完成,能夠用date看一下全部節點的時間是否是都一致了,不一致的能夠先等一等。若是不行,能夠試試其餘方法同步,這個時間同步是必須的

timedatectl set-ntp yes

1五、將Master機器中的python庫所有複製到gpdb的python庫目錄下,這個也是必須的,爲了保證gp程序能正常進行,但segment節點能夠不用

\cp -R -f /usr/lib64/python2.7/site-packages/. /data/program/gpsql/lib/python/

1六、CentOS 7.2須要執行如下語句,全部主機都要執行,若是你的全部主機都是CentOS 6系列,能夠嘗試略過。能夠在Master上用gpssh執行,本身研究吧

echo "RemoveIPC=no" >> /etc/systemd/logind.conf
systemctl restart  systemd-logind.service

1七、配置初始化文件gpinitsystem_config,declare的路徑根據你全部機器的節點數目來,有幾個segment節點,就有幾個路徑。至於幾個PORT的數值,你能夠作適當修改,應該只要不大於65535就行,也不要過小,以避免和其餘軟件衝突

vim /home/gpadmin/gpinitsystem_config
添加如下內容
ARRAY_NAME="EMC Greenplum DW"
SEG_PREFIX=gpseg
PORT_BASE=33000
declare -a DATA_DIRECTORY=(/home/gpadmin/segmentdata /home/gpadmin/segmentdata)
MASTER_HOSTNAME=mdw
MASTER_DIRECTORY=/home/gpadmin/masterdata
MASTER_PORT=5432
MACHINE_LIST_FILE=/home/gpadmin/seg_hosts
TRUSTED_SHELL=ssh
CHECK_POINT_SEGMENTS=8
ENCODING=UNICODE
MIRROR_PORT_BASE=43000
REPLICATION_PORT_BASE=34000
MIRROR_REPLICATION_PORT_BASE=44000
declare -a MIRROR_DATA_DIRECTORY=(/home/gpadmin/segmentmirror /home/gpadmin/segmentmirror)

1八、系統檢測,看到有一些帖子和教學視頻裏有個gpcheck和gpcheckos命令,能夠在初始化以前對系統進行檢測,可是我安裝的這個版本里根本沒這個命令,因此這裏只是提一下,有知道的小夥伴能夠留個言,可能我太low沒有發現吧。這裏就略過了

1九、配置gpadmin用戶的環境變量,以便執行gp命令。須要切換到gpadmin用戶,完成後source一下,使命令生效。這裏的路徑要和你的安裝路徑一致,不同就改吧

su - gpadmin
cd /home/gpadmin
vim .bashrc
在最後添加如下內容
export MASTER_DATA_DIRECTORY=/home/gpadmin/masterdata/gpseg-1
source /data/program/gpsql/greenplum_path.sh

20、運行配置文件初始化greenplum集羣,這個須要在gpadmin用戶下執行

gpinitsystem -c /home/gpadmin/gpinitsystem_config

2一、等待命令執行完成,中途須要給個"y",安裝完成後會自動運行gp,能夠經過ps查看,有gp進程就表示安裝成功。

2二、這裏值得一提的是,若是在給完"y"後的初始化過程當中有錯誤,會提示你執行一條命令進行回滾操做,執行完成後回滾的腳本會自動刪除。切勿不執行這個回滾腳本就再次初始化,會提示你有的文件已存在,沒法繼續初始化

2三、到此爲止greenplum集羣就安裝完成了,如下的附帶內容是給小白作科普的,大神能夠無視,so enjoy it!

 

4、附帶內容:greenplum的基本備份和恢復,和一些經常使用的命令

本內容是方便小白作數據遷移用的,大神能夠無視。由於pgAdmin 4沒法鏈接greenplum數據庫(人家畢竟是針對Postgresql的),pgAdmin 3能夠鏈接可是會報錯,並且沒有備份和恢復選項(可能不支持linux下的備份和恢復,windows下能不能用不知道,也可能這就是個軟件bug,反正pgAdmin3也不更新了,就沒人鳥了),因此,咱們只能手動備份和恢復了。

一、備份數據庫。其實有不少備份的命令,我選的這個是備份比較全的,由於要把數據從這個數據庫到入到另外一個新庫,因此不僅須要備份表和數據,還要備份其餘的依賴設置等。用這個命令會提示你要建一個mail目錄,是個警告,我直接無視了

gpcrondump -x db -c -g -G -a -q>>gp_db.log
#db改爲你要備份的數據庫

二、備份之後會生成db_dump這個目錄,裏面是備份的數據,在Master上有,在segment節點上也有,導出來,放到新庫對應的文件夾下就行。

三、恢復只須要在Master上執行,中途要你給個"y",若是提示沒有這個庫,你就用pgAdmin3建一個名字同樣的庫,而後在下面這個命令後加一個參數"-e",他會刪掉你建的庫,而後重建,因此不用擔憂恢復的數據庫跟原來的不同。

gpdbrestore -b 20131231
#這串數字改爲你本身的

四、恢復過程會有點長,耐心等待他的提示出來,不要覺得他死機了,發一下個人數據庫的恢復信息給你作參考

[gpadmin@mdw gpseg1]$ gpdbrestore -b 20161003 -e
20161003:05:53:07:014859 gpdbrestore:mdw:gpadmin-[INFO]:-Starting gpdbrestore with args: -b 20161003 -e
20161003:05:53:08:014859 gpdbrestore:mdw:gpadmin-[INFO]:-------------------------------------------
20161003:05:53:08:014859 gpdbrestore:mdw:gpadmin-[INFO]:-Greenplum database restore parameters
20161003:05:53:08:014859 gpdbrestore:mdw:gpadmin-[INFO]:-------------------------------------------
20161003:05:53:08:014859 gpdbrestore:mdw:gpadmin-[INFO]:-Restore type               = Full Database
20161003:05:53:08:014859 gpdbrestore:mdw:gpadmin-[INFO]:-Database to be restored    = XXXXXXX    #這是你恢復的數據庫名
20161003:05:53:08:014859 gpdbrestore:mdw:gpadmin-[INFO]:-Drop and re-create db      = On
20161003:05:53:08:014859 gpdbrestore:mdw:gpadmin-[INFO]:-Restore method             = Restore specific timestamp
20161003:05:53:08:014859 gpdbrestore:mdw:gpadmin-[INFO]:-Restore method             = Restore specific date
20161003:05:53:08:014859 gpdbrestore:mdw:gpadmin-[INFO]:-Restore timestamp          = 20161003170745
20161003:05:53:08:014859 gpdbrestore:mdw:gpadmin-[INFO]:-Restore compressed dump    = On
20161003:05:53:08:014859 gpdbrestore:mdw:gpadmin-[INFO]:-Restore global objects     = Off
20161003:05:53:08:014859 gpdbrestore:mdw:gpadmin-[INFO]:-Array fault tolerance      = f
20161003:05:53:08:014859 gpdbrestore:mdw:gpadmin-[INFO]:-------------------------------------------

Continue with Greenplum restore Yy|Nn (default=N):
> y
20161003:05:53:11:014859 gpdbrestore:mdw:gpadmin-[INFO]:-Dropping Database XXXXXXXX
20161003:05:53:20:014859 gpdbrestore:mdw:gpadmin-[INFO]:-Dropped Database XXXXXXXX
20161003:05:53:20:014859 gpdbrestore:mdw:gpadmin-[INFO]:-Invoking sql file: /home/gpadmin/masterdata/gpseg-1/db_dumps/20161003/gp_cdatabase_1_1_20161003170745
20161003:05:53:42:014859 gpdbrestore:mdw:gpadmin-[INFO]:-gp_restore commandline: gp_restore -i -h mdw -p 5432 -U gpadmin --gp-i --gp-k=20161003170745 --gp-l=p --gp-d=db_dumps/20161003 --gp-c -d "XXXXXXXX": 
20161003:06:09:41:014859 gpdbrestore:mdw:gpadmin-[WARNING]:-gpdbrestore finished but ERRORS were found, please check the restore report file for details
20161003:06:09:41:014859 gpdbrestore:mdw:gpadmin-[INFO]:-Updating AO/CO statistics on mdw
20161003:06:09:41:014859 gpdbrestore:mdw:gpadmin-[INFO]:-No AO/CO tables restored, skipping statistics update...
20161003:06:09:41:014859 gpdbrestore:mdw:gpadmin-[INFO]:-Commencing analyze of XXXXXXXX database, please wait
20161003:06:10:23:014859 gpdbrestore:mdw:gpadmin-[INFO]:-Analyze of XXXXXXXX completed without error

五、以上是備份和恢復的內容,下面給小白們作一下gp科普

科普一:如何受權你的pgAdmin 3鏈接上數據庫

答案是修改greenplum數據庫裏的pg_hba.conf,在master節點主庫裏。改好之後記得重啓數據庫,gpstop一下,再gpstart一下

vim /home/gpadmin/masterdata/gpseg-1/pg_hba.conf
添加一條規則放到全部規則的後面
host     all         all             10.1.33.138/24      md5
第一個all是你要登陸的數據庫
第二個all是你要登陸這個數據庫所使用的用戶名
第三個是容許登陸的ip網段
第四個是登陸驗證方式,md5是須要密碼驗證,不想用密碼就登陸改爲trust就行

科普二:經常使用命令

登陸數據庫:psql -U 用戶名 數據庫名(不加數據庫名,會登陸到默認數據庫)

顯示全部數據庫:\l

顯示數據庫裏的表:\d 數據庫

顯示錶結構:\d 表

進入數據庫:\c 數據庫

退出:\q

幫助:\?

顯示角色:\du

 

科普三:修改用戶密碼

先登陸數據庫,不知道的能夠嘗試登一下postgres這個數據庫

ALTER USER 用戶名 WITH PASSWORD '123456';

 

後記:本人對greenplum瞭解甚少,大神若有高見,可盡情回覆,小弟不勝感激

PS:鑑於網上爬蟲猖獗,博客被盜時有發生,這裏須要來個連接,你們請認準來自博客園的Scoter:http://www.cnblogs.com/scoter2008/

相關文章
相關標籤/搜索