1. 程式人生 > >原始碼編譯安裝Greenplum資料庫

原始碼編譯安裝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.
  1. 獲取GCC 4.9.4包:wget http://gcc.skazkaforyou.com/releases/gcc-4.8.2/gcc-4.8.2.tar.gz;

  2. 解壓縮:tar -xf gcc-4.9.4.tar.gz;

  3. 進入到目錄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來增加一些檢查;

  4. 編譯:make;注意此步和上一步,比較耗時;

  5. 安裝:make install;

  6. 驗證: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
給個友情連結。