进阶数据库系列(十九):PostgreSQL 基于 Pgpool 实现读写分离

本文详细介绍了如何利用 Pgpool 实现 PostgreSQL 的读写分离和高可用性。Pgpool 作为连接池和负载均衡器,能提高系统性能和可用性。在主从复制的基础上,当主库宕机时,Pgpool 可自动切换到从库,同时支持手动切换。通过配置,可以实现读写分离,简化数据库操作。此外,文章还涉及了看门狗机制,用于监控 pgpool 服务并自动处理故障。
摘要由CSDN通过智能技术生成

前面介绍了 PostgreSQL 事务并发控制主从复制高可用方案、基于 Patroni 高可用架构部署及故障切换、 基于 repmgr 高可用架构实践等相关的知识点,今天我将详细的为大家介绍 PostgreSQL 基于 pgpool 实现读写分离相关知识,希望大家能够从中收获多多!如有帮助,请点在看、转发支持一波!!!

Pgpool 简介

Pgpool 是一个高性能的连接池和负载均衡器,用于 PostgreSQL 数据库。Pgpool 可以作为中间层,位于客户端和 PostgreSQL 服务器之间,来管理连接请求并分配给不同的 PostgreSQL 服务器进行处理,以提高整体的系统性能和可用性。Pgpool 的一些主要功能包括:

  • 连接池:Pgpool在应用程序和数据库之间建立一个连接池,使得多个应用程序可以共享一组数据库连接,避免了重复的连接和断开。

  • 负载均衡:Pgpool可以将客户端请求均衡地分配到多个PostgreSQL服务器上,以实现负载均衡和更好的性能。

  • 高可用性:Pgpool可以检测到PostgreSQL服务器的故障,并自动将客户端请求重新路由到其他可用服务器,从而提高系统的可用性和稳定性。

  • 并行查询:Pgpool可以将大型查询分成几个子查询,然后将这些子查询并行发送到多个PostgreSQL服务器上执行,以提高查询性能。

Image

当使用 Postgresql HA 集群时,应用只需连接 pgpool 即可。

  • 通过 pgpool 实现读写分离,写入操作由 Master 执行,读取操作由 Slave 执行。

  • 由 repmgr 实现流复制,Master 数据自动复制到 Slave。

  • 当 Master 遇故障下线时,由 repmgr 自定选择 Slave 为 Master,并继续执行写入操作。

  • 当某个节点遇故障下线时,由 pgpool 自动断开故障节点的连接,并切换到可用的节点上。

  • 更多关于 PostgreSQL 系列的学习文章,请参阅:PostgreSQL 数据库​,本系列持续更新中。

环境准备

主从复制请看:

主机分配
  • OS:CentOS 7

  • 节点1:master(192.168.36.130)

  • 节点2:slave(192.168.36.131)

  • 节点3:slave(192.168.36.133)

主从切换
手动切换

在上一节中,配置好了流复制结构,接下来模拟主库宕机,进行测试。

  • 主库宕机

在master上执行

pg_ctl stop

会发现测试库报错,连接不上主库。这时我们创建触发文件。

touch /tmp/trigger_file0

也可以放在别的目录,记得要给postgres权限。这时,测试库会变成主库。我们在slave上的测试库中新建测试表,并插入数据。

create database test;
create teble test_1 (id int);
insert into test_1 valuse (1);

将主库的recover.done变为recovery.conf

mv recovery.done recovery.conf

启动主库

pg_ctl start

主库会自动的发现时间线的差异,并拷贝过来。登录主库查询,可以查到数据。

Image

如果你们更改recovery.done,或者进行了别的操作,你会发现数据是不一样的。这是你需要停掉被恢复的库,手动同步时间线。

pg_rewind  --target-pgdata=/home/postgres/data --source-server='host=slave port=5432 user=postgres dbname=postgres'

将主库的recover.done变为recovery.conf

mv recovery.done recovery.conf

再次启动主库。数据就已经同步了。

你可以多次手动切换进行测试,但是你会发现一个问题。触发文件trigger_file0每次在即创建完成后并不会存在,他在切换完成后就消失了。每次都要手动创建文件的话很麻烦,所以使用pgpool进行自动切换。更多关于 PostgreSQL 系列的学习文章,请参阅:PostgreSQL 数据库​,本系列持续更新中。

pgpool 自动切换

下载地址:http://www.pgpool.net/mediawiki/images/

解压编译安装
tar -zxvf pgpool-II-3.6.0.tar.gz -C /opt/
cd /opt/pgpol-II/
./configure –prefix=/opt/pgpool -with-pgsql=path -with-pgsql=/home/postgres
make
make install
添加环境变量
vim 
  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值