原始碼編譯安裝Greenplum資料庫
文章目錄
概述
Greenplum的二進位制檔案和RPM包檔案下載的渠道有限,有時可能會不太好下載對應的版本,有需要的可以使用原始碼編譯的方式安裝Greeplum。雖然可以但是遇到的問題可能會多一些。
下載原始碼包
這次所安裝的gp版本是5.6,首先在官網上下載好原始碼
網址:
https://github.com/greenplum-db/gpdb/releases?after=5.8.1
安裝一些常用的依賴
必須安裝
所有機器以 root 許可權,在Terminal 中執行下列命令 (需聯網執行 yum 下載安裝相應包)
安裝pip也需要幾步:
安裝pip命令
yum -y install epel-release
yum -y install python-pip
[[email protected] ~]# yum -y install rsync coreutils glib2 lrzsz sysstat e4fsprogs xfsprogs ntp readline-devel zlib zlib-devel openssl openssl-devel pam-devel libxml2-devel libxslt-devel python-devel tcl-devel gcc make smartmontools flex bison perl perl-devel perl-ExtUtils* OpenIPMI-tools openldap openldap-devel logrotate gcc-c++ python-py
[ [email protected] ~]# yum -y install bzip2-devel libevent-devel apr-devel curl-devel ed python-paramiko python-devel
[[email protected] ~]# wget https://bootstrap.pypa.io/get-pip.py
[[email protected] ~]# python get-pip.py
[[email protected] ~]# pip install lockfile paramiko setuptools epydoc psutil
[ [email protected] ~]# pip install --upgrade setuptools
安裝c++ 11
目前來看GCC是對C++11支援程度最高最多的編譯器,但需要GCC4.8及以上版本
編譯時報錯:
configure: error: *** A compiler with support for C++11 language features is required.
-
獲取GCC 4.9.4包:wget http://gcc.skazkaforyou.com/releases/gcc-4.8.2/gcc-4.8.2.tar.gz;
-
解壓縮:tar -xf gcc-4.9.4.tar.gz;
-
進入到目錄gcc-4.9.4,執行:./contrib/download_prerequisites。這個神奇的指令碼檔案會幫我們下載、配置、安裝依賴庫,可以節約我們大量的時間和精力。
建立輸出目錄併到目錄裡:mkdir gcc-build-4.9.4;cd gcc-build-4.9.4;
…/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib。–enable-languages表示你要讓你的gcc支援那些語言,–disable-multilib不生成編譯為其他平臺可執行程式碼的交叉編譯器。–disable-checking生成的編譯器在編譯過程中不做額外檢查,也可以使用–enable-checking=xxx來增加一些檢查; -
編譯:make;注意此步和上一步,比較耗時;
-
安裝:make install;
-
驗證:gcc -v;或者g++ -v,如果顯示的gcc版本仍是以前的版本,就需要重啟系統;或者可以檢視gcc的安裝位置:which gcc;然後在檢視版本 /usr/local/bin/gcc -v,通常gcc都安裝在該處位置,如果顯示為;
[[email protected] gpdb-5.6.0]# c++ -v
Using built-in specs.
COLLECT_GCC=c++
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-unknown-linux-gnu/4.9.4/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
Thread model: posix
gcc version 4.9.4 (GCC)
開始編譯
解壓下載的greenplum包,並進入。
執行
./configure --prefix=/usr/local/greenplum-5.6
編譯出錯:
configure: error: GPOS header files are required for Pivotal Query Optimizer (orca)
這個問題解決時在編譯命令上加上:–dsiable
./configure --prefix=/usr/local/greenplum-5.6 --disable orca
編譯無錯之後
make
make install
按greenplum正常步驟安裝
其他的常見的安裝步驟,和bin檔案與RPM包安裝的步驟一致。
安裝完成之後可以看一下狀態資訊。
20181015:18:39:51:005936 gpstart:mdw:gpadmin-[INFO]:-Process results...
20181015:18:39:51:005936 gpstart:mdw:gpadmin-[INFO]:-----------------------------------------------------
20181015:18:39:51:005936 gpstart:mdw:gpadmin-[INFO]:- Successful segment starts = 4
20181015:18:39:51:005936 gpstart:mdw:gpadmin-[INFO]:- Failed segment starts = 0
20181015:18:39:51:005936 gpstart:mdw:gpadmin-[INFO]:- Skipped segment starts (segments are marked down in configuration) = 0
20181015:18:39:51:005936 gpstart:mdw:gpadmin-[INFO]:-----------------------------------------------------
20181015:18:39:51:005936 gpstart:mdw:gpadmin-[INFO]:-Successfully started 4 of 4 segment instances
20181015:18:39:51:005936 gpstart:mdw:gpadmin-[INFO]:-----------------------------------------------------
20181015:18:39:51:005936 gpstart:mdw:gpadmin-[INFO]:-Starting Master instance mdw directory /gpdata/gp-5.6/master/gpseg-1
20181015:18:39:52:005936 gpstart:mdw:gpadmin-[INFO]:-Command pg_ctl reports Master mdw instance active
20181015:18:39:52:005936 gpstart:mdw:gpadmin-[INFO]:-No standby master configured. skipping...
20181015:18:39:52:005936 gpstart:mdw:gpadmin-[INFO]:-Database successfully started
[[email protected] ~]$
[[email protected] ~]$ psql postgres
psql (8.3.23)
Type "help" for help.
postgres=#
postgres=#
postgres=# SELECT * from gp_segment_configuration ;
dbid | content | role | preferred_role | mode | status | port | hostname | address | replication_port
------+---------+------+----------------+------+--------+-------+----------+--------------+------------------
1 | -1 | p | p | s | u | 5432 | mdw | mdw |
2 | 0 | p | p | s | u | 40000 | sdw1 | 192.168.2.63 |
4 | 2 | p | p | s | u | 40000 | sdw2 | 192.168.2.64 |
3 | 1 | p | p | s | u | 40001 | sdw1 | 192.168.2.63 |
5 | 3 | p | p | s | u | 40001 | sdw2 | 192.168.2.64 |
(5 rows)
一些細節問題
原始碼在安裝Greenplum 的最大問題,個人感覺就是會存在一些Python包缺失的之類的錯誤。而且此錯誤報錯資訊很少,可查的來源也不多。很可能陷入僵局。所以在安裝之前,得確保所有的節點都安裝好各種的Python依賴。
第二次新增
在第一天建立好資料庫之後,在第二天的安裝監控軟體greecplum cc的過程中,出現大量的問題,主要的問題就是編譯安裝的資料庫,缺少各類動態庫或依賴關係。而這些東西在編譯時就可以通過新增引數直接新增。但是當時並不清楚。所以就決定重新編譯安裝一次
新的configure選項
./configure --with-perl --with-python --with-libxml --enable-gpperfmon --disable-orca --prefix=/usr/local/gpdb-5.6
此編譯選項也會存在一些依賴包的問題,需要逐個解決
我遇到的問題
plpython動態庫
這個問題的主要原因還是因為編譯時的引數沒有加 with Python 會導致一些動態庫沒有安裝上,例如這個報錯,plpythonu
(這個問題是在安裝greenplum cc的過程的報錯)
將–with-python引數加到編譯語句中,重新編譯安裝
確少UUID相關
解決方法是
yum install uuid-dev
類似apu的錯誤
這個錯誤在餘哥的幫助下找到一個方法
http://www.linuxfromscratch.org/blfs/view/cvs/general/apr-util.html
給個友情連結。