centos6.5下postgres-XC集群安装与配置(有standby案例)

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介:

前言

最近在学习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这台机器上运行如下命令:

[root@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这台机器上运行如下命令:

[root@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)

 

以上说明全部安装成功。

 



本文转自 jxzhfei  51CTO博客,原文链接:http://blog.51cto.com/jxzhfei/1679908


相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
3月前
|
Linux 网络安全 Apache
CentOS 7.2配置Apache服务httpd(上)
CentOS 7.2配置Apache服务httpd(上)
348 1
|
2月前
|
存储 监控 Linux
在 CentOS 7 中如何对未分配的大容量硬盘进行分区和挂载。通过具体案例,详细说明了使用 `fdisk` 创建分区、格式化分区、创建挂载点以及临时和永久挂载分区的步骤
本文介绍了在 CentOS 7 中如何对未分配的大容量硬盘进行分区和挂载。通过具体案例,详细说明了使用 `fdisk` 创建分区、格式化分区、创建挂载点以及临时和永久挂载分区的步骤。此外,还分享了一些实践经验,帮助读者更好地管理和优化磁盘空间。
208 8
|
2月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
217 2
|
3月前
|
Java jenkins 持续交付
Centos7下docker的jenkins下载并配置jdk与maven
通过上述步骤,您将成功在CentOS 7上的Docker容器中部署了Jenkins,并配置好了JDK与Maven,为持续集成和自动化构建打下了坚实基础。
156 1
|
3月前
|
存储 监控 Linux
在 CentOS 7 中如何对新硬盘进行分区、格式化、挂载及配置最佳实践
本文详细介绍了在 CentOS 7 中如何对新硬盘进行分区、格式化、挂载及配置最佳实践,包括使用 `fdisk` 创建分区、`mkfs` 格式化分区、创建挂载点、编辑 `/etc/fstab` 实现永久挂载等步骤,旨在有效管理服务器磁盘空间,提高系统稳定性和可维护性。
527 1
|
3月前
|
Linux PHP Apache
CentOS 7.2配置Apache服务httpd(下)
CentOS 7.2配置Apache服务httpd(下)
62 1
|
3月前
|
安全 Linux 数据库连接
CentOS 7环境下DM8数据库的安装与配置
【10月更文挑战第16天】本文介绍了在 CentOS 7 环境下安装与配置达梦数据库(DM8)的详细步骤,包括安装前准备、创建安装用户、上传安装文件、解压并运行安装程序、初始化数据库实例、配置环境变量、启动数据库服务、配置数据库连接和参数、备份与恢复、以及安装后的安全设置、性能优化和定期维护等内容。通过这些步骤,可以顺利完成 DM8 的安装与配置。
482 0
|
3月前
|
Linux
CentOS-Stream-9配置chfs
通过上述步骤,您就可以在CentOS Stream 9上配置并运行CHFS,为用户提供基于HTTP的文件分享服务。请注意,实际操作时应根据CHFS的具体版本和文档进行适当调整。
84 0
|
2月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第16天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括配置系统源、安装 SQL Server 2019 软件包以及数据库初始化,确保 SQL Server 正常运行。
103 4
|
2月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。
128 1