Postgres-XL安装与配置

接上篇《初识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 <

配置文件看着挺长,其实理顺了之后发现要配置的地方其实就那么几块。
完成配置文件之后,一切就变得随心所欲,你需要做的只是执行pgxc_ctl,在其交互式环境中执行init all 即可完成所有节点的初始化可启动。之后执行monitor all 查看所有节点的状态。pgxc_ctl还能完成启停节点、增删节点等一系列操作,具体可以参考官方操作文档:http://files.postgres-xl.org/...

先到这里,有时间的话写一下我在试用PGXL过程中遇到的问题以及可用性评估等。

你可能感兴趣的:(集群,postgresql)