当前位置:   article > 正文

postgresql集群编译安装_pg数据库集群搭建

pg数据库集群搭建
  1. postgreSQL集群部署
  2. 1环境准备(三台服务器全部执行)

2.1.1 准备三台虚拟机

服务器名称

服务器IP

描述

Pgsql-0

xxx.xxx.xxx.xxx

master节点

Pgsql-1

xxx.xxx.xxx.xxx

slave1节点

Pgsql-2

xxx.xxx.xxx.xxx

slave2节点

2.1.2 安装编译需要的相关依赖(三台服务器全部执行)

yum install -y gcc readline-devel zlib-devel openssl-devel automake autoconf libtool make -y

yum install -y bison flex -y

yum install docbook-dtds docbook-style-xsl libxslt -y

2.1.3 创建用户(三台服务器全部执行)

创建组 groupadd postgres

创建用户 useradd -g postgres postgres

    1. 编译安装(三台服务器全部执行)

2.2.1 上传pgsql编译包

上传pgsql的编译包到/opt目录下,并解压

2.2.2 执行编译命令

进入到解压好的目录,执行如下命令:

./configure --prefix=/usr/local/pgsql/postgresql-12.2

 make

 

make install

执行完上面的三个命令后,可以看到在 /usr/local/pgsql 下已经安装好了 pgsql

 

执行如下命令:

chown -R postgres:postgres /usr/local/pgsql

 

 

    1. 初始化数据库(三台服务器全部执行)

2.3.1 初始化数据库

执行如下命令,创建数据库文件夹。

mkdir -p /usr/local/pgsql/postgresql-12.2/data

 

 执行命令,切换用户。

su postgres

执行命令,初始化数据库。

/usr/local/pgsql/postgresql-12.2/bin/initdb -D /usr/local/pgsql/postgresql-12.2/data/

 

 

2.3.2 修改配置文件

执行命令:

cd /usr/local/pgsql/postgresql-12.2/data/

cp postgresql.conf postgresql.conf_bak

vi postgresql.conf

 

 

修改 listen_addresses = '*' 前面的#号需要去掉。

增加最大连接数

max_connections = 1000

保存 postgresql.conf 文件。

vi /usr/local/pgsql/postgresql-12.2/data/pg_hba.conf

执行命令:

在文件底部,增加如下配置,并保存文件

host  all  all  0.0.0.0/0  password

 

 执行命令:

su root

修改环境变量,执行命令

vi /etc/profile

在文件末尾,添加如下配置

export PGHOME=/usr/local/pgsql/postgresql-12.2

export PGDATA=/usr/local/pgsql/postgresql-12.2/data

PATH=$PATH:$HOME/bin:$PGHOME/bin

执行命令,让新增的配置生效

source /etc/profile

    1. 数据库操作(master节点)

2.4.1 启动数据库

su postgres

/usr/local/pgsql/postgresql-12.2/bin/pg_ctl -D /usr/local/pgsql/postgresql-12.2/data/ -l logfile start

 

 

2.4.2 修改默认密码

psql -U postgres

ALTER USER postgres with encrypted password '你的密码';

2.4.3 停止数据库

/usr/local/pgsql/postgresql-12.2/bin/pg_ctl -D /usr/local/pgsql/postgresql-12.2/data/ stop

    1. 集群配置

2.5.1 创建同步用户(master节点)

执行如下命令:

su postgres

psql -U postgres

CREATE ROLE rep login replication encrypted password 'rep';

 

 

2.5.2 修改pg_hba.conf

vi /usr/local/pgsql/postgresql-12.2/data/pg_hba.conf

在末尾增加如下配置

host replication rep 0.0.0.0/0 password

 

 

2.5.3 修改 postgresql.conf文件

配置如下配置

archive_mode = on   #开启归档模式

archive_command = 'cp %p /usr/local/pgsql/postgresql-12.2/data/%f'   #归档命令

wal_level = replica    #热备模式

 

 

重启数据库,执行命令:

/usr/local/pgsql/postgresql-12.2/bin/pg_ctl -D /usr/local/pgsql/postgresql-12.2/data/ stop

/usr/local/pgsql/postgresql-12.2/bin/pg_ctl -D /usr/local/pgsql/postgresql-12.2/data/ -l logfile start

从节点测试连通性

psql -h 10.10.12.75 -U postgres

 

 

    1. Slave节点配置

2.6.1 删除从库

执行命令:

su postgres

rm -rf /usr/local/pgsql/postgresql-12.2/data/*

2.6.2 主库同步数据到从库

su postgres

/usr/local/pgsql/postgresql-12.2/bin/pg_basebackup -h (master节点ip) -p 5432 -U rep -Fp -Xs -Pv -R -D /usr/local/pgsql/postgresql-12.2/data/

输入密码:rep

 

 

2.6.3 修改 standby.signal文件

执行命令:

vi /usr/local/pgsql/postgresql-12.2/data/standby.signal

增加配置:

standby_mode = on

2.6.4 修改 postgresql.conf 文件

执行命令:

vi /usr/local/pgsql/postgresql-12.2/data/postgresql.conf

修改如下配置:

primary_conninfo = 'host=10.10.12.75 port=5432 user=rep password=rep'

wal_level = replica #热备模式

hot_standby = on #说明这台机器不仅用于数据归档,还可以用于数据查询 hot_standby_feedback = on #r出现错误复制,向主机反馈

重启数据库,执行命令:

/usr/local/pgsql/postgresql-12.2/bin/pg_ctl -D /usr/local/pgsql/postgresql-12.2/data/ stop

/usr/local/pgsql/postgresql-12.2/bin/pg_ctl -D /usr/local/pgsql/postgresql-12.2/data/ -l logfile start

    1. 集群测试

2.7.1 检查集群(master节点)

执行如下命令:

su postgres

psql -U postgres

select client_addr,sync_state from pg_stat_replication;

 

 

创建测试数据库,执行命令:

create database test;

在slave节点查看已经创建的数据库,发现数据已经同步过来了。

 

2.7.2 从节点创建数据库

执行命令:

create database test;

可以看见从节点是个只读数据库

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/449872
推荐阅读
相关标签
  

闽ICP备14008679号