Postgres-XC集群部署实例(单机调试)

本文档详细介绍了如何在单机环境下部署Postgres-XC集群,包括编译安装、初始化各个节点、集群启停步骤以及配置和使用示例。内容源于高铭杰的实践记录,适用于学习和调试。
摘要由CSDN通过智能技术生成

数据库版本:postgresxc 1.1(postgresql 9.2.4)
作者:高铭杰
邮箱:jackgo73@outlook.com
日期:2017年4月8日


Postgres-XC集群部署实例(单机调试)

  开始接触神奇的xc :),边学变记录单机部署pgxc集群的方法,仅供娱乐与调试。后面的实例会继续补充。(使用单用户+切换pg环境变量的脚本在调试代码的时候很方便)

版本 链接
Postgres-XC1.0 1.1 1.2 https://sourceforge.net/projects/postgres-xc/files/?source=navbar
postgres-x2 https://github.com/postgres-x2/postgres-x2

1 部署规划

            gtm  <-----  gtm_standby
          /     \
gtm_proxy00      gtm_proxy01    
  /    \           /    \
cn00  dn00       cn01  dn01
node name port data dir
gtm 9400 $HOME/app/pgsql00
gtm_standby 9401 $HOME/app/pgsql01
gtm_proxy00 9402 $HOME/app/pgsql02
cn00 9403 (pool 10403) $HOME/app/pgsql03
dn00 9404 $HOME/app/pgsql04
gtm_proxy01 9405 $HOME/app/pgsql05
cn01 9406 (pool 10406) $HOME/app/pgsql06
dn01 9407 $HOME/app/pgsql07

2 编译安装

./configure --prefix=$HOME/app/pgsql00 --with-openssl --enable-debug --enable-cassert --enable-thread-safety CFLAGS='-O0' --with-pgport=9400 --enable-depend;make -sj12;make install;

3 初始化

命令执行前请根据上表切换相应的$PGDATA环境变量,可以编写脚本配合alias直接进行切换。
例如在.basesh中加入alias pp='source $HOME/bin/pgenv.sh'
这样的脚本简单方便,在德哥的很多博客(https://github.com/digoal/blog)中有提到,或者email我索取。

3.1 初始化gtm节点
($PGDATA=$HOME/app/pgsql00)

initgtm -Z gtm -D $PGDATA
sed -ir "s/#*nodename.*/nodename = 'gtm'/" $PGDATA/gtm.conf
sed -ir "s/#*listen_addresses.*/listen_addresses= '*'/" $PGDATA/gtm.conf
sed -ir "s/#*port.*/port = 9400/" $PGDATA/gtm.conf
sed -ir "s/#*startup.*/startup = ACT/" $PGDATA/gtm.conf
3.2 初始化gtm_standby节点
($PGDATA=$HOME/app/pgsql01)

initgtm -Z gtm -D $PGDATA
sed -ir "s/#*nodename.*/nodename = 'gtm_standby'/" $PGDATA/gtm.conf
sed -ir "s/#*listen_addresses.*/listen_addresses= '*'/" $PGDATA/gtm.conf
sed -ir "s/#*port.*/port = 9401/" $PGDATA/gtm.conf
sed -ir "s/#*startup.*/startup = STANDBY/" $PGDATA/gtm.conf
sed -ir "s/#*active_host.*/active_host = 'localhost'/" $PGDATA/gtm.conf
sed -ir "s/#*active_port.*/active_port = 9400/" $PGDATA/gtm.conf
3.3 初始化gtm_proxy00, gtm_proxy01节点

gtm_proxy00

($PGDATA=$HOME/app/pgsql02)

initgtm -Z gtm_proxy -D $PGDATA
sed -ir "s/#*nodename.*/nodename = 'gtm_proxy00'/" $PGDATA/gtm_proxy.conf
sed -ir "s/#*port.*/port = 9402/" $PGDATA/gtm_proxy.conf
sed -ir "s/#*gtm_host.*/gtm_host= 'localhost'/" $PGDATA/gtm_proxy.conf
sed -ir "s/#*gtm_port.*/gtm_port = 9400/" $PGDATA/gtm_proxy.conf

gtm_proxy01

($PGDATA=$HOME/app/pgsql05)

initgtm -Z gtm_proxy -D $PGDATA
sed -ir "s/#*nodename.*/nodename = 'gtm_proxy01'/" $PGDATA/gtm_proxy.conf
sed -ir "s/#*port.*/port = 9405/" $PGDATA/gtm_proxy.conf
sed -ir "s/#*gtm_host.*/gtm_host = 'localhost'/" $PGDATA/gtm_proxy.conf
sed -ir "s/#*gtm_port.*/gtm_port = 9400/" $PGDATA/gtm_proxy.conf
3.4 初始化cn节点

cn00

($PGDATA=$HOME/app/pgsql03)

initdb --nodename cn00 -D $PGDATA
sed -ir "s/#*listen_addresses.*/listen_addresses = '*'/" $PGDATA/postgresql.conf
sed -ir "s/#*port.*/port = 9403/" $PGDATA/postgresql.conf
sed -ir "s/#*logging_collector.*/logging_collector= on/" $PGDATA/postgresql.conf
sed -ir "s/#*log_directory.*/log_directory = 'pg_log'/" $PGDATA/postgresql.conf
sed -ir "s/#*log_filename.*/log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'/" $PGDATA/postgresql.conf
sed -ir "s/#*log_rotation_size.*/log_rotation_size = 10MB/" $PGDATA/postgresql.conf
sed -ir "s/#*log_line_prefix.*/log_line_prefix='%p %r %u %d %t %e'/" $PGDATA/postgresql.conf
sed -ir "s/#*log_min_duration_statement.*/log_min_duration_statement= 1000/" $PGDATA/postgresql.conf
sed -ir "s/#*log_timezone.*/log_timezone = 'UTC'/&
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值