PG集群(PostgreSql环境)搭建

编程

centos PG集群搭建

一、安装PG

1、安装之前首先查看软件是否已经安装

rpm -qa | grep postgresql

#若存在,需要卸载使用 yum remove postgresql

2、安装postgresql和postgresql-server

能够访问外网

# 获取源

sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# 安装

sudo yum install -y postgresql12-server

不能访问外网

# 如果不能访问外网,yum是用不了的,卸载原有的pg也只能通过rpm -e 包名 挨个进行删除

# 离线安装

rpm -Uvh --force --nodeps *

3、环境变量

创建目录,给与权限

cd /data/

mkdir pgdata

chown -R postgres:postgres ./pgdata

修改环境变量

vi /usr/lib/systemd/system/postgresql-12.service

# 修改 Environment

Environment=PGDATA=/data/pgdata/ #PGDATA一般是数据盘

# 重载

systemctl daemon-reload

4、启动数据库

# 初始化数据库

/usr/pgsql-12/bin/postgresql-12-setup initdb

# 启动

systemctl start postgresql-12

5、创建用户

su - postgres

psql

# 用于pgpool

create role pgpool with login password "postgres";

# 用于主从

create role repl login replication encrypted password "postgres";

# 修改postgres密码

alter user postgres with password "postgres";

二、配置主从

主节点配置

1、pg_hba.conf

# 修改data(/data/pgdata)下面的配置

vi /data/pgdata/pg_hba.conf

# 追加

host all all 0.0.0.0/0 md5

host replication repl 本机ip/32 trust

host replication repl 节点1 ip/32 trust #从节点1

...

host replication repl 节点n ip/32 trust #从节点n

host all all 本机ip 最后一位替换为0/24 md5

2、postgresql.conf

# 修改data(/data/pgdata)下面的配置

vi /data/pgdata/postgresql.conf

# 修改内容

listen_addresses = "*" #开启后子节点才能访问

archive_mode = on

max_connections = 21000

archive_command = "cp "%p" "/var/lib/pgsql/archivedir/%f""

max_wal_senders = 10

max_replication_slots = 10

wal_level = replica

hot_standby = on

wal_log_hints = on

从节点配置

1、拉取主库配置

#删除从库data目录下文件

rm ‐rf data/*

# 拉取主库配置,主库记得开5432端口

pg_basebackup -h 主节点ip -U repl -D /data/pgdata -X stream -P

# 开通端口

iptables -I INPUT -p tcp --dport 5432 -j ACCEPT

2、修改配置文件

# postgresql.conf修改内容

primary_conninfo = "host=主节点ip port=5432 user=repl(主节点对应账号) password=密码"

recovery_target_timeline = latest

hot_standby = on

max_standby_streaming_delay = 30s

wal_receiver_status_interval = 10s

hot_standby_feedback = on

# 12以上版本配置上有些变化

# 1.将recovery.conf文件里的配置合并到主配置文件postgresql.conf中

# 2.设置启用备库参数standby_mode,12之后废弃了这个参数,切换到备库建立空文件standby.signal进行触发。

# standby.signal修改内容

standby_mode = on

3、重启服务

#重启

systemctl restart postgresql-12

#也可以stop再start

systemctl stop postgresql-12

systemctl start postgresql-12

三、验证

# 进入主库

su - postgres

# 进入sql

psql

# 查询同步状态,完成的话显示n行

select client_addr,usename,backend_start,application_name,sync_state,sync_priority FROM pg_stat_replication;

# 添加数据库

CREATE DATABASE test;

# 进入从库查看,发现新的库test

# 执行新建操作,警告only-read

四、其他

# 备份数据库

pg_dump dbname > outfile

# 导入数据库

psql dbname < infile


# 可用于测试主从是否完成

# 添加数据库

CREATE DATABASE test;

# 删除数据库

DROP DATABASE test;


# 查看已安装的软件包

rpm -qa | grep postgresql

# 离线删除软件包

rpm -e 包名

以上是 PG集群(PostgreSql环境)搭建 的全部内容, 来源链接: utcz.com/z/519874.html

回到顶部