centos7搭建postgresql主从(主备)架构

本篇介绍如何在centos7系统搭建一个postgresql主备集群实现最近的HA(高可用)架构。后续更高级的HA模式都是基于这个最基本的主备搭建。

节点规划

ip 主机名 用途
192.168.182.4 node1 主库(读写)
192.168.182.5 node2 备库(只读)

安装PG

在主、备两台节点分别安装好pg11。

参考我的另一篇文章:
https://blog.csdn.net/IndexMan/article/details/131646090

配置主从

4主库执行,以下操作无特殊情况在postgres用户下执行

  • 修改postgresql.conf,修改如下配置项:
# 在文件中修改(此配置仅用于远程访问, 流复制后续还有额外配置):
listen_addresses = '*'
port = 15432
max_connections = 1500       # 最大连接数,据说从机需要大于或等于该值
wal_level = replica
max_wal_senders = 2   		#最多有2个流复制连接
wal_keep_segments = 16  	
wal_sender_timeout = 60s	#流复制超时时间
  • 修改pg_hba.conf,添加图中红框中2行配置
vim pg_hba.conf

在这里插入图片描述

  • 赋予权限(root执行)
chown -R postgres:postgres /var/run/postgresql/
  • 启动PG
pg_ctl start
  • 创建流复制用户
su - postgres
psql -h localhost -p 15432
create role replica login replication encrypted password 'abc123';
SELECT rolname from pg_roles;

从库执行

  • 赋权
chown -R postgres:postgres /var/run/postgresql/
  • 从主库复制数据文件到本地
# 先清空原有数据文件(如非空)
rm -rf /home/postgres/pgdata/*
# 执行复制
pg_basebackup -h 192.168.182.4 -p 15432 -U replica -Fp -Xs -Pv -R -D /home/postgres/pgdata

# 输入主库中创建的replica用户密码后,开始同步

在这里插入图片描述

  • 更改/home/postgres/pgdata目录权限为700
chmod -R 700 /home/postgres/pgdata/
  • 启动PG
pg_ctl start

在这里插入图片描述

验证主从

主库操作
select * from pg_stat_replication;
在这里插入图片描述
select pg_is_in_recovery();
在这里插入图片描述

  • 创建数据库、表然后插入1条数据
    在这里插入图片描述

备库执行
select pg_is_in_recovery();
在这里插入图片描述

  • 查看数据是否正常同步
    在这里插入图片描述
  • 测试插入数据
    在这里插入图片描述

配置自启动服务

主、备2台都执行

vim /usr/lib/systemd/system/postgresql-11.service
# 将PGDATA修改为: /home/postgres/pgdata

systemctl enable postgresql-11.service
systemctl start postgresql-11.service

在这里插入图片描述

  • 查看启动状态
systemctl status postgresql-11

在这里插入图片描述

posted @ 2023-07-11 18:56  一锤子技术员  阅读(135)  评论(0编辑  收藏  举报  来源