PostgreSQL 之 Pgpool概述

Pgpool-II作为PostgreSQL的中间件,提供了连接池、负载均衡和故障切换等功能。它支持主从结构,能实现虚拟IP的自动接管。本文介绍Pgpool-II的安装、配置和管理命令,并演示了如何通过Pgpool访问数据库。

 作者:瀚高PG实验室 (Highgo PG Lab)

Pgpool-II简介

1.相当于中间件,位于应用程序和PG服务端之间;

2.提供连接池、负载均衡、自动故障切换等功能,负载均衡只针对读操作,写操作只发生在主节点上;

3.Pgpool-II自身也可以配置为主从结构,避免单点故障,对外提供虚拟IP地址,当主节点故障后,从节点提升为新的主节点并接管虚拟IP;

Pgpool-II体系结构

 

Pgpool的下载地址

Downloads - pgpool Wiki

Pgpool-II四种模式(O 意味着“可用”, X 意味着“不可用)

 

Pgpool-II主要配置文件

配置文件

用途

pcp.conf     

用于管理、查看节点信息,如加入新节点。该文件主要是存储用户名及md5形式的密码             

pgpool.conf  

用于设置pgpool的模式,主次数据库的相关信息等                                

pool_hba.conf

用于认证用户登录方式,如客户端IP限制等,类似于postgresql的pg_hba.conf文件               

pool_passwd  

用于保存相应客户端登录帐号名及md5密码                                               

Pgpool-II主要的脚本文件

以下脚本文件都会在pgpool.conf配置文件中指定路径

1)failover脚本 -->failover.sh  #完成主备库角色的切换 ,主要有两种方式,推荐使用方式 pg_ctl promote命令。

2)Online Recovery脚本-->basebackup.sh 和 pgpool_remote_start

basebackup.sh 主要是以在线备份恢复的方式重新构建备库
pgpool_remote_start 执行数据库启动命令

Pgpool的安装参考

Installation of Pgpool-II

启动和关闭pgpool

1)启动命令

pgpool             ##直接启动,不输出调试信息

pgpool启动在后台,开启debug模式,debug日志输出到/tmp/pgpool.log。

pgpool -n -d > /tmp/pgpool.log 2>&1 &

2) 关闭命令

pgpool [-m {s[mart]|f[ast]|i[mmediate]}] stop

stop有三个模式:"smart", "fast", "immediate"

smart       等待客户端断开后关闭

fast        不等待客户端断开,立刻关闭

immediate   等同于fast模式

注意:

pgpool的启动和关闭顺序,启动时先主后备,关闭时先备后主。

如果pgpool没有正常关闭,下次启动可能会异常。

通过Pgpool访问数据库示例

启动pgpool后,使用端口9999和VIP地址连接数据库

psql -h 192.168.137.200 -p 9999 -d testdb

psql (9.5.7)

Type "help" for help.

psql -p 9999 d testdb -c “show pool_nodes;”

 node_id | hostname | port | status | lb_weight |  role   | select_cnt | load_balance_node | replication_delay

---------+----------+------+--------+-----------+---------+------------+-------------------+-------------------

 0       | db1      | 1921 | up     | 0.500000  | primary | 0          | false             | 0

 1       | db2      | 1921 | up     | 0.500000  | standby | 0          | true              | 0

Pgpool-II的其他管理命令

1)show命令

show pool_nodes;   #显示所有已配置节点的列表,以pgpool链接数据库后执行

show pool_status;    #显示Pgpool-II配置参数的当前值

show pool_version;   #显示Pgpool-II版本信息

show pool_processes;  #显示所有Pgpool-II进程的列表

show pool_pools;        #显示Pgpool-II连接池列表

2)pcp管理命令列表

命令名称

作用

pcp_attach_node

为pgpool-II关联一个节点

pcp_detach_node

从pgpool-II脱离一个节点

pcp_node_count

显示数据库节点的总数

pcp_node_info

显示指定的节点信息

pcp_pool_status

显示pgpool.conf中定义的参数值

pcp_proc_count

显示Pgpool-II子进程ID的列表

pcp_proc_info

显示Pgpool-II子进程ID的信息。

pcp_promote_node

指定新节点作为Pgpool-II的主节点

pcp_recovery_node

在线恢复一个节点

pcp_stop_pgpool

停止pgpool-II

pcp_watchdog_info

显示Pgpool-II的watchdog状态

pcp命令示例:

pcp_node_count     #显示数据库节点的总数

pcp_node_info [-h db1 -U postgres] 0   #显示指定的节点信息

pcp_watchdog_info -h db1 -U postgres   #显示Pgpool-II的watchdog状态

pcp_pool_status -h db1 -U postgres |more  #显示pgpool.conf中定义的参数值

pcp_detach_node -n 1 #将指定的节点1从Pgpool-II中分离出来

pcp_attach_node -n 1  #将指定节点附加到Pgpool-II

测试数据库failover故障转移(目标是业务访问的连续性不受影响!)

1)模拟备机故障

 a.手动关掉备节点数据库

 b.手动关闭备节点服务器

2)模拟主机故障

 a.手动关掉主节点数据库

 b.手动关闭主节点服务器

3)使用pcp_recovery_node恢复节点1

pcp_recovery_node -n 0 -d > /tmp/reco.log    #在正常主节点执行恢复备节点

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值