设为首页 收藏本站
查看: 1155|回复: 0

[经验分享] centos6.5下postgres-XC集群安装与配置(有standby案例)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-7-31 09:27:12 | 显示全部楼层 |阅读模式
前言
最近在学习postgresql,工作中需要,买了一本《PostgreSQL 修炼之道》按照上面操作,几次按照上面的都是失败。后面查看很多资料后,才成功。这是根据这本书第十九章内容修改的地方,希望给广大学习爱好者帮助。最后希望那些作者,把书写的详细一些,把自己做成功的案例写出来。
一、系统环境
系统平台:centos 6.5
postgres-XC版本: pgxc-v1.2.1.tar.gz
防火墙关闭   selinux设置SELINUX=disabled
二、集群规划
主机名
IP地址
角色
端口
nodename
数据目录
gtm
172.16.0.101
Gtm
6666
gtm
/home/pgxc/gtm
standby
172.16.0.102
Gtm的备库
6666
standby
/home/pgxc/gtm_standby
cd1
172.16.0.103
Coordinator
5432
co1
/home/pgxc/coordinator
Datanode
5433
dn1
/home/pgxc/pgdata
Gtm Proxy
6666
gtmproxy01
/home/pgxc/gtm_proxy
cd2
172.16.0.104
Coordinator
5432
co2
/home/pgxc/coordinator
Datanode
5433
dn2
/home/pgxc/pgdata
Gtm Proxy
6666
gtmproxy02
/home/pgxc/gtm_proxy
cd3
172.16.0.105
Coordinator
5432
co3
/home/pgxc/coordinator
Datanode
5433
dn3
/home/pgxc/pgdata
Gtm Proxy
6666
gtmproxy03
/home/pgxc/gtm_proxy

三、安装依赖包(五台操作)
yum install -y bison flex perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel python-devel gcc-c++   openssl-devel cmake
四、增加用户(五台操作)
groupadd pgxc
useradd pgxc -g pgxc
passwd pgxc

五、源码安装(五台操作)
tar zxvf pgxc-v1.2.1.tar.gz
cd postgres-xc-1.2.1/
./configure --prefix=/opt/pgxc --with-perl --with-python
gmake
gmake install
六、配置环境变量(五台操作)
su - pgxc
vi .bash_profile
export PGHOME=/opt/pgxc
export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib
export DATE=`date +"%Y%m%d%H%M"`
export PATH=$PGHOME/bin:$PATH:.
export MANPATH=$PGHOME/share/man:$MANPATH
alias rm='rm -i'
alias ll='ls -lh'

source .bash_profile

七、初始化GTM
在172.16.0.101这台机器上运行如下命令:
[iyunv@gtm ~]# su - pgxc
[pgxc@gtm ~]$ initgtm -Z gtm -D /home/pgxc/gtm
编辑/home/pgxc/gtm/gtm.conf文件,如下:

nodename = 'gtm'
listen_addresses = '*'
port = 6666  
startup = ACT
配置项的说明如下。
nodename:指定节点的名称,可能指定为任意的一个名称,不能与其他节点的名称重复。
listen_address:GTM监听的IP地址,“*”在所有的IP地址上监听
port:GTM监控的端口
startup:确定GTM启动后是主库还是standby。如果是主库,设置为“ACT”,如果是standby,则设置为“STANDBY”。
八、初始化GTM的备库
在172.16.0.102这台机器上运行如下命令:
[iyunv@standby ~]# su - pgxc
[pgxc@standby ~]$ initgtm -Z gtm -D /home/pgxc/gtm_standby
编辑/home/pgxc/gtm_standby/gtm.conf文件,如下:

nodename = 'standby'
listen_addresses = '*'
port = 6666
startup = STANDBY
active_host = '172.16.0.101'  
active_port =6666  
配置项的说明如下。
startup:因为是GTM的备库,所以要设置为“STANDBY”。
active_host:指定连接GTM主库的IP地址
active_port:指定连接GTM备库的端口。

九、初始化GTM Proxy
在172.16.0.103,172.16.0.104,172.16.0.105这三台机器pgxc用户上,分别执行以下命令:
initgtm -Z gtm_proxy -D /home/pgxc/gtm_proxy

172.16.0.103中配置文件 /home/pgxc/gtm_proxy/gtm_proxy.conf的内容如下:
nodename = 'gtmproxy01'
port = 6666  
gtm_host = '172.16.0.101'
gtm_port = 6666

172.16.0.104中配置文件 /home/pgxc/gtm_proxy/gtm_proxy.conf的内容如下:
nodename = 'gtmproxy02'
port = 6666  
gtm_host = '172.16.0.101'
gtm_port = 6666

172.16.0.105中配置文件 /home/pgxc/gtm_proxy/gtm_proxy.conf的内容如下:
nodename = 'gtmproxy03'
port = 6666  
gtm_host = '172.16.0.101'
gtm_port = 6666

十、初始化Coordinator 、数据节点
1.在172.16.0.103这台机器上运行如下命令:
initdb -D /home/pgxc/coordinator --nodename co1 -E UTF8 --local=C -U pgxc -W
initdb -D /home/pgxc/pgdata --nodename dn1 -E UTF8 --local=C -U pgxc -W

172.16.0.103这台机器上 coordinator配置文件/home/pgxc/coordinator/postgresql.conf的内容如下:
# - Connection Settings -
listen_addresses = '*'
port = 5432
max_connections = 100
# DATA NODES AND CONNECTION POOLING
#-------------------------------------------
pooler_port = 6667
min_pool_size = 1
max_pool_size = 100
# GTM CONNECTION
#----------------------
gtm_host = '172.16.0.101'
gtm_port = 6666  
pgxc_node_name = 'co1'
172.16.0.103这台机器上 coordinator配置文件/home/pgxc/coordinator/pg_hba.conf的内容如下:
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
host    all             all             172.16.0.0/24           trust
host    all             all             0.0.0.0/0               md5

172.16.0.103这台机器上数据节点配置文件/home/pgxc/pgdata/postgresql.conf的内容如下:
# - Connection Settings -
listen_addresses = '*'
port = 5433
max_connections = 100
# DATA NODES AND CONNECTION POOLING
#----------------------------------------
pooler_port = 6668   
#min_pool_size = 1  
max_pool_size = 100  

# GTM CONNECTION
#---------------------------
gtm_host = '172.16.0.101'
gtm_port = 6666
pgxc_node_name = 'dn1'

172.16.0.103这台机器上数据节点配置文件/home/pgxc/pgdata/pg_hba.conf的内容如下:
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
host    all             all             172.16.0.0/24           trust
host    all             all             0.0.0.0/0               md5

2.在172.16.0.104这台机器上运行如下命令:
initdb -D /home/pgxc/coordinator --nodename co2 -E UTF8 --local=C -U pgxc -W
initdb -D /home/pgxc/pgdata --nodename dn2 -E UTF8 --local=C -U pgxc -W

172.16.0.104这台机器上 coordinator配置文件/home/pgxc/coordinator/postgresql.conf的内容如下:
# - Connection Settings -
listen_addresses = '*'
port = 5432
max_connections = 100
# DATA NODES AND CONNECTION POOLING
#-------------------------------------------
pooler_port = 6667
min_pool_size = 1
max_pool_size = 100
# GTM CONNECTION
#----------------------
gtm_host = '172.16.0.101'
gtm_port = 6666  
pgxc_node_name = 'co2'
172.16.0.104这台机器上 coordinator配置文件/home/pgxc/coordinator/pg_hba.conf的内容如下:
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
host    all             all             172.16.0.0/24           trust
host    all             all             0.0.0.0/0               md5

172.16.0.104这台机器上数据节点配置文件/home/pgxc/pgdata/postgresql.conf的内容如下:
# - Connection Settings -
listen_addresses = '*'
port = 5433
max_connections = 100
# DATA NODES AND CONNECTION POOLING
#----------------------------------------
pooler_port = 6668   
#min_pool_size = 1  
max_pool_size = 100  

# GTM CONNECTION
#---------------------------
gtm_host = '172.16.0.101'
gtm_port = 6666
pgxc_node_name = 'dn2'

172.16.0.104这台机器上数据节点配置文件/home/pgxc/pgdata/pg_hba.conf的内容如下:
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
host    all             all             172.16.0.0/24           trust
host    all             all             0.0.0.0/0               md5

3. 在172.16.0.105这台机器上运行如下命令:
initdb -D /home/pgxc/coordinator --nodename co3 -E UTF8 --local=C -U pgxc -W
initdb -D /home/pgxc/pgdata --nodename dn3 -E UTF8 --local=C -U pgxc -W

172.16.0.105这台机器上 coordinator配置文件/home/pgxc/coordinator/postgresql.conf的内容如下:
# - Connection Settings -
listen_addresses = '*'
port = 5432
max_connections = 100
# DATA NODES AND CONNECTION POOLING
#-------------------------------------------
pooler_port = 6667
min_pool_size = 1
max_pool_size = 100
# GTM CONNECTION
#----------------------
gtm_host = '172.16.0.101'
gtm_port = 6666  
pgxc_node_name = 'co3'
172.16.0.105这台机器上 coordinator配置文件/home/pgxc/coordinator/pg_hba.conf的内容如下:
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
host    all             all             172.16.0.0/24           trust
host    all             all             0.0.0.0/0               md5

172.16.0.105这台机器上数据节点配置文件/home/pgxc/pgdata/postgresql.conf的内容如下:
# - Connection Settings -
listen_addresses = '*'
port = 5433
max_connections = 100
# DATA NODES AND CONNECTION POOLING
#----------------------------------------
pooler_port = 6668   
#min_pool_size = 1  
max_pool_size = 100  

# GTM CONNECTION
#---------------------------
gtm_host = '172.16.0.101'
gtm_port = 6666
pgxc_node_name = 'dn3'

172.16.0.105这台机器上数据节点配置文件/home/pgxc/pgdata/pg_hba.conf的内容如下:
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
host    all             all             172.16.0.0/24           trust
host    all             all             0.0.0.0/0               md5

十一、启动集群
启动集群的顺序为:
GTM
GTM Standby
GTP-Proxy
Datanodes
Coordinators
启动上面示例的集群的方法如下。
在172.16.0.101机器启动gtm,命令如下:
[pgxc@gtm ~]$ gtm_ctl -Z gtm start -D /home/pgxc/gtm

在172.16.0.102机器启动gtm standby,命令如下:
[pgxc@standby ~]$ gtm_ctl -Z gtm_standby start -D /home/pgxc/gtm_standby

可以用下面的命令查看gtm和gtm standby是否启动:
[pgxc@gtm ~]$ gtm_ctl -Z gtm status -D /home/pgxc/gtm
gtm_ctl: server is running (PID: 2091)
"-D" "/home/pgxc/gtm"
1 master

[pgxc@standby ~]$ gtm_ctl -Z gtm_standby status -D /home/pgxc/gtm_standby
gtm_ctl: server is running (PID: 2095)
"-D" "/home/pgxc/gtm_standby"
0 slave

以上说明启动成功。

启动完gtm和gtm_standby后,就可以启动gtm_proxy了。在172.17.0.103,172.16.0.104,172.16.0.105这三台机器上运行如下命令:
gtm_ctl -Z gtm_proxy start -D /home/pgxc/gtm_proxy

启动完gtm_proxy就可以启动Datanodes了。在上述三台机器分别运行如下命令来启动:
pg_ctl start -D /home/pgxc/pgdata -Z datanode

最后启动Coordinators。在上述三台机器上运行如下命令启动:
pg_ctl start -D /home/pgxc/coordinator -Z coordinator

十二、配置集群节点信息
在各个Coordinator上,执行如下命令:
下面就执行172.16.0.103主机器上的。其它的大家自己操作。
psql -p 5432 postgres
[pgxc@cd1 ~]$ psql -p 5432 postgres
psql (PGXC , based on PG 9.3.2)
Type "help" for help.

postgres=# select * from pgxc_node;
node_name | node_type | node_port |  node_host   | nodeis_primary | nodeis_preferred |   node_id   
-----------+-----------+-----------+--------------+----------------+------------------+-------------
co1       | C         |      5432 | localhost    | f              | f     
           |  1344656819

postgres=#create node dn1 with(type='datanode',host='172.16.0.103',port=5433,primary,preferred);

postgres=#create node dn2 with(type='datanode',host='172.16.0.104',port=5433);

postgres=#create node dn3 with(type='datanode',host='172.16.0.105',port=5433);

postgres=#create node co2 with(type='coordinator',host='172.16.0.104',port=5432);

postgres=#create node co3 with(type='coordinator',host='172.16.0.105',port=5432);


postgres=# select * from pgxc_node;
node_name | node_type | node_port |  node_host   | nodeis_primary | nodeis_preferred |   node_id   
-----------+-----------+-----------+--------------+----------------+------------------+-------------
co1       | C         |      5432 | localhost    | f              | f                |  1344656819
dn1       | D         |      5433 | 172.16.0.103 | t              | t                |  -560021589
dn2       | D         |      5433 | 172.16.0.104 | f              | f                |   352366662
dn3       | D         |      5433 | 172.16.0.105 | f              | f                |  -700122826
co2       | C         |      5432 | 172.16.0.104 | f              | f                |   474101254
co3       | C         |      5432 | 172.16.0.105 | f              | f                | -1046823559
(6 rows)

postgres=#select pgxc_pool_reload();

十三、测试
[pgxc@cd1 ~]$ psql -p 5432 postgres
psql (PGXC , based on PG 9.3.2)
Type "help" for help.
postgres=# select * from pgxc_node;
node_name | node_type | node_port |  node_host   | nodeis_primary | nodeis_preferred |   node_id   
-----------+-----------+-----------+--------------+----------------+------------------+-------------
co1       | C         |      5432 | localhost    | f              | f                |  1344656819
dn1       | D         |      5433 | 172.16.0.103 | t              | t                |  -560021589
dn2       | D         |      5433 | 172.16.0.104 | f              | f                |   352366662
dn3       | D         |      5433 | 172.16.0.105 | f              | f                |  -700122826
co2       | C         |      5432 | 172.16.0.104 | f              | f                |   474101254
co3       | C         |      5432 | 172.16.0.105 | f              | f                | -1046823559
(6 rows)

postgres=# create database text;
CREATE DATABASE

postgres=# \l
                         List of databases
   Name    | Owner | Encoding | Collate | Ctype | Access privileges
-----------+-------+----------+---------+-------+-------------------
postgres  | pgxc  | UTF8     | C       | C     |
template0 | pgxc  | UTF8     | C       | C     | =c/pgxc          +
           |       |          |         |       | pgxc=CTc/pgxc
template1 | pgxc  | UTF8     | C       | C     | =c/pgxc          +
           |       |          |         |       | pgxc=CTc/pgxc

text      | pgxc  | UTF8     | C       | C     |
(4 rows)

以上说明全部安装成功。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-92580-1-1.html 上篇帖子: linux awk命令详解 下篇帖子: Linux下的内核编译与模块操作 standby
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表