Postgres-XL安裝與配置

joyeu發表於2016-09-13

接上篇《初識Postgres-XL》https://segmentfault.com/a/11…
寫一下Postgres-XL(簡稱PGXL)的部署與測試。

第一節 安裝
安裝很簡單,原始碼安裝,和PG的安裝基本相同,可能比PG多一個依賴庫。在所有節點上執行相同操作。

./configure
make 
make install

如果執行./configure報錯則根據提示安裝相應的庫即可,如readline-devel等。預設的安裝目錄是/usr/local/pgsql,和原生PG相同,很順手。需要注意的是pgxc_ctl這個工具需要單獨編譯安裝,在原始碼包的contrib/pgxc_ctl/目錄下執行make && make install即可。

第二節 配置
叢集的配置可以通過兩種方式完成:
第一種,手動配置:首先通過initgtm、initdb命令在相應的節點上初始化GTM、GTM Proxy(非必須)初始化Coordinator和Datanode節點,然後依次啟動GTM、Coordinator和Datanode。不推介這種方式,不細說。
第二種,通過pgxc_ctl這個工具配置管理叢集:使用pgxc_ctl配置叢集之前需要在當前節點和叢集各個節點之間做ssh免密碼認證,執行pgxc_ctl的節點可以是叢集內的任意一個節點也可以是叢集外的節點。這個工具的原理大概是通過ssh執行各種bash命令完成叢集各節點的配置與啟動,非常方便,可以完全控制整個叢集與各個節點。pgxc_ctl的官方操作手冊在這裡:http://files.postgres-xl.org/…
配置過程如下:
直接執行pgxc_ctl,進入pgxc_ctl命令列環境,第一次執行會在主目錄下生成pgxc_ctl目錄,其中包括配置檔案與日誌,首次執行pgxc_ctl會提示沒找到配置檔案,因為此時還沒有配置檔案,在pgxc_ctl命令列中執行prepare,會生成預設的配置檔案pgxc_ctl.conf,此時q退出命令列,編輯生成的配置檔案,再次執行pgxc_ctl時就會使用這個配置檔案。
我的叢集配置是這樣的:三臺機器,地址分別是172.17.0.2、172.17.0.4、172.17.0.5,一臺跑GTM,另外兩臺同時跑Coordinator和Datanode節點,暫不考慮高可用配置。下面將我在pgxc_ctl.conf中的配置貼出來,省去了無關配置與註釋:


#---- OVERALL -----------------------------------------------------
pgxcOwner=postgres              # owner of the Postgres-XC databaseo cluster.
pgxcUser=$pgxcOwner             # OS user of Postgres-XC owner
tmpDir=/tmp                     # temporary dir used in XC servers
localTmpDir=$tmpDir             # temporary dir used here locally
configBackup=n                  # If you want config file backup, specify y to this value.

#---- GTM Master --------------------------------------------------
gtmName=gtm
gtmMasterServer=172.17.0.2
gtmMasterPort=6666
gtmMasterDir=/pgdata/gtm
gtmExtraConfig=none                     # Will be added gtm.conf for both Master and Slave (done at initilization only)
gtmMasterSpecificExtraConfig=none       # Will be added to Master`s gtm.conf (done at initialization only)
#---- GTM Slave -----------------------------------------------
gtmSlave=n         # Specify y if you configure GTM Slave. 
#---- GTM Proxy -----------------------------------------------
gtmProxy=n  

#---- Coordinators ------------------------------------------------
#---- shortcuts ----------
coordMasterDir=/pgdata/coord
coordSlaveDir=/pgdata/coord
coordArchLogDir=/pgdata/coord/archive
#---- Overall ------------
coordNames=(c1 c2)              # Master and slave use the same name
coordPorts=(5432 5432)          # Master ports
poolerPorts=(5433 5433)         # Master pooler ports
coordPgHbaEntries=(0.0.0.0/0)   # 
#---- Master -------------
coordMasterServers=(172.17.0.4 172.17.0.5)   # none means this master is not available
coordMasterDirs=($coordMasterDir $coordMasterDir)
coordMaxWALsernder=0                         # max_wal_senders 
coordMaxWALSenders=($coordMaxWALsernder $coordMaxWALsernder)  # 
#---- Slave -------------
coordSlave=n       
#---- Configuration files---
coordExtraConfig=coordExtraConfig       # Extra configuration file for coordinators.  
cat > $coordExtraConfig <<EOF
#================================================
# Added to all the coordinator postgresql.conf
# Original: $coordExtraConfig
log_destination = `stderr`
logging_collector = on
log_directory = `pg_log`
listen_addresses = `*`
coordSpecificExtraConfig=(none none)
coordExtraPgHba=none    # Extra entry for pg_hba.conf.
coordSpecificExtraPgHba=(none none)

#---- Datanodes ---------------------------------------------------
#---- Shortcuts --------------
datanodeMasterDir=/pgdata/datanode
datanodeSlaveDir=/pgdata/datanode
datanodeArchLogDir=/pgdata/datanode/archive
#---- Overall ---------------
datanodeNames=(d1 d2)
datanodePorts=(15432 15432)       # Master ports
datanodePoolerPorts=(5434 5434)   # Master pooler ports
datanodePgHbaEntries=(0.0.0.0/0)  # 
#---- Master ----------------
datanodeMasterServers=(172.17.0.4 172.17.0.5)   # none means this master is not available.
datanodeMasterDirs=($datanodeMasterDir $datanodeMasterDir)
datanodeMaxWalSender=0      
datanodeMaxWALSenders=($datanodeMaxWalSender $datanodeMaxWalSender)
#---- Slave -----------------
datanodeSlave=n  
# ---- Configuration files ---
datanodeExtraConfig=none        # Extra configuration file for datanodes.  
datanodeSpecificExtraConfig=(none none)
datanodeExtraPgHba=none         # Extra entry for pg_hba.conf.
datanodeSpecificExtraPgHba=(none none)

#---- WAL archives ----------------------------------------------
walArchive=n   

#   ----End of Configuration Section----

配置檔案看著挺長,其實理順了之後發現要配置的地方其實就那麼幾塊。
完成配置檔案之後,一切就變得隨心所欲,你需要做的只是執行pgxc_ctl,在其互動式環境中執行init all 即可完成所有節點的初始化可啟動。之後執行monitor all 檢視所有節點的狀態。pgxc_ctl還能完成啟停節點、增刪節點等一系列操作,具體可以參考官方操作文件:http://files.postgres-xl.org/…

先到這裡,有時間的話寫一下我在試用PGXL過程中遇到的問題以及可用性評估等。

相關文章