公司有個項目須要安裝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/