postgresql pgsql 连接池 pgBouncer(详细)

news2024/11/25 13:14:57

适用连接池可以有效的降低反复连接造成的损耗
2023.9.28更新,演示:1.20.1版本

没有安装pgsql的可以参考:pgsql编译安装

一、编译安装

包安装更简单,就是不能选版本

1.pgBouncer下载地址

链接:github项目地址
链接:pgbouncer官网

2.下载

进入目录

cd /usr/local

官网下载

wget https://www.pgbouncer.org/downloads/files/1.20.1/pgbouncer-1.20.1.tar.gz

或者
github下载

wget https://github.com/pgbouncer/pgbouncer/releases/download/pgbouncer_1_20_1/pgbouncer-1.20.1.tar.gz

3.解压

tar -zxvf pgbouncer-1.20.1.tar.gz && cd pgbouncer-1.20.1

4.依赖安装

apt-get install libevent-dev libsystemd-dev

5.编译安装

更多参数参考官方文档:官方文档

./configure --prefix=/usr/local --with-systemd --with-pam
make && make install

安装完成后提示相关文件位置如下:
在这里插入图片描述

二、模式和原理

(一)会话模式

实际使用第二级的比较多

1.Session pooling/会话连接池

这种方式和不用连接池差不多,效果不明显
session,会话级连接,在客户端连接的生命周期内,连接池分配一个连接给它,直到客户端断开连接,分配的连接才会回到连接池中。

2.Transaction pooling/事务连接池(推荐)

服务器连接只有在一个事务里的时候才赋予客户端。在 PgBouncer 注意到事务结束的时候,服务器将会放回连接池中。这是一个 hack,因为它打破了应用对后段连接的看法。只有在应用配合这样的使用模式,没有使用会破坏这种使用模式的时候才能用这个连接方式。参阅下标获取会破坏 这种模式的特性。

3.Statement pooling/语句连接池

最激进的模式。这是事务连接池的一个扭曲的变种 - 不允许多语句的事务。这就意味着是在客户端强制“autocomit”模式,主要是给 PL/Proxy 用的。

三、配置、管理

(一)配置文件

1.建立配置文件

个人习惯将配置文件存放到/etc目录下

mkdir /etc/pgbouncer

复制配置文件

cp /usr/local/share/doc/pgbouncer/pgbouncer.ini /etc/pgbouncer

2.创建需要的目录

创建日志目录和日志文件

mkdir -p /var/pgbouncer

移交所有权给postgres用户(linux的pgsql,习惯上用这个用户)

chown postgres:postgres /var/pgbouncer

3.编辑配置文件

vi /etc/pgbouncer/pgbouncer.ini

添加数据库连接[database]下
账号密码是pgsql的账号密码,用于连接已有的pgsql数据库
这里的最前面的名称main_pg,就是关联的后面的源数据库的postgres库,连接时用main_pg作为虚拟的数据库,代替后面的localhost:5432的postgres数据库,相当于一个别名,到时候连接的时候就连接这个main_pg虚拟的数据库

main_pg = host=localhost port=5432 dbname=postgres user=postgres password=abc123456 

修改log和pid地址

在这里插入图片描述
允许外部访问
listen_addr = *

修改admin_users
如果没有认证,这个参数就失效了

admin_users = postgres

修改每个池最大连接数
找到max_client_conn,修改为1000,删除前面的;

max_client_conn = 1000

修改连接池数
找到default_pool_size ,修改为200,删除前面的;

default_pool_size = 200

修改连接池模式
找到pool_mode = session,修改为下面的,并删除前面的;

pool_mode = transaction

设置ignore_startup
删除前面的;

ignore_startup_parameters = extra_float_digits

(二)连接文件配置

1.复制认证文件

cp /usr/local/share/doc/pgbouncer/userlist.txt /etc/pgbouncer

2.编辑数据库账号密码文件

vi /etc/pgbouncer/userlist.txt

改成类似如下的形式,前面是pgsql的用户名,postgres是默认的账号名,密码为明文密码,
形如以下部分

"postgres" "abc123456"

这个密码是连接pgbouncer的密码,可以和pgsql源库的密码不一致,这样也是相当于多了一层保护

(三)systemctl管理

1.复制systemctl文件

cp /usr/local/share/doc/pgbouncer/pgbouncer.service /lib/systemd/system

2.编辑文件

vi /lib/systemd/system/pgbouncer.service

修改ExecStart地址(编译完成后会提示)
按照我的目录是/usr/local/bin

在这里插入图片描述

3.启动程序

systemctl daemon-reload && systemctl start pgbouncer

4.查看状态

systemctl status pgbouncer

(四)连接测试

1.进入pgBouncer的psql

su postgres
psql -p 6432 pgbouncer

密码为上面设定的连接文件里的密码

2.pgbouncer自带的命令

显示所有配置

show config; 

显示所有客户连接

show clients;

显示所有的源数据库

show servers;

四、使用

1.连接原理

使用psql连接pgbouncer的main_pg数据库(pgbouncer此时连接main_pg的源数据库)
通过这种方式实现了pgsql的池。

psql -h localhost -p 6432 -U postgres -d main_pg

此时在源数据库中输入命令即可查询到pgbouncer的连接

select * from pg_stat_activity;

2.后端程序中调用

在这个案例中,后端连接6432端口的main_pg数据库,即可对应原来的5432端口的postgres数据库
只需要修改连接地址即可,无需调整后端逻辑(除非变成第三种模式,不推荐)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1048555.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023软件测试面试八股文大全(含答案)

1、B/S架构和C/S架构区别 B/S 只需要有操作系统和浏览器就行,可以实现跨平台,客户端零维护,维护成本低,但是个性化能力低,响应速度较慢 C/S响应速度快,安全性强,一般应用于局域网中&#xff0c…

java一体化智慧工地信息管理平台源码 智慧工地APP源码

智慧工地云平台是专为建筑施工领域所打造的一体化信息管理平台。通过大数据、云计算、人工智能、物联网和移动互联网等高科技技术手段,将施工区域各系统数据汇总,建立可视化数字工地。同时,围绕人、机、料、法、环等各方面关键因素&#xff0…

探索ClickHouse——连接Kafka和Clickhouse

安装Kafka 新增用户 sudo adduser kafka sudo adduser kafka sudo su -l kafka安装JDK sudo apt-get install openjdk-8-jre下载解压kafka 可以从https://downloads.apache.org/kafka/下找到希望安装的版本。需要注意的是,不要下载路径包含src的包,否…

QQ聊天记录文件怎么恢复?这3个方法亲测有效

QQ为用户提供了聊天、语音、视频、在线游戏、社交分享等丰富的功能,满足了用户的各种通讯以及娱乐需求。无论是现在还是过去,QQ仍然在我们的生活中扮演着重要的角色。 如果在使用QQ的过程中,发现文件过期或者被删除了该怎么办?qq…

480439-15-4,一种具有荧光单体的pH敏感性染料Fluorescein O-methacrylate

产品简介:荧光素O-甲基丙烯酸酯是一种具有荧光单体的pH敏感性染料。它可以通过490 nm的激发光谱和520 nm的发射光谱进行表征。它具有荧光素,其是一种负电荷最少的指示剂。它的特性包括生物相容性、无毒性,以及在水溶液中的良好分散性。 CAS号…

Vue3最佳实践 第六章 Pinia,Vuex与axios,VueUse 1(Pinia)

Pinia状态管理 在 Vue3 中项目中组件之间传递数据时,可以使用 Props 和 Emit,还可以使用 Provide/Inject 来代替 Props 和 Emit。Props 和 Emit 只能在具有父子关系的组件之间传递数据,所以层级越深,过程就越复杂。为了解决此类问…

brew 安装MySQL 5.7

写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成…

【云原生】k8s集群调度

目录 一、调度约束 1.1List-Watch工作机制 1.2调度过程 二、指定调度节点 2.1修改成 nodeSelector 调度方式 三、亲和性 (1)节点亲和性 (2)Pod 亲和性 3.1 键值运算关系 四、污点(Taint) 和 容忍(Tolerations) 4.1污点(…

搭建 Prometheus 对服务进行监控

前言: 服务平时没啥问题,一到过节我放假,它也想放假,所以只能找个监工看着了。当前市面上主流的监工方案是 zabbix 和 prometheus,没有优劣之分,只是适用场景略有区别。我这边的需求就主要是监控服务的端口…

温度与振动监测技术在电机故障智能诊断中的应用

在现代工业生产中,电机是许多设备和机械的核心驱动力。然而,电机故障可能会导致生产中断、设备损坏以及生产成本的增加。为了避免这些问题,工业设备状态监测技术应运而生。本文将探讨如何利用先进的设备状态监测技术,尤其是温度和…

各种业务场景调用API代理的API接口教程

API代理的API接口在各种业务场景中具有广泛的应用,本文将介绍哪些业务场景可以使用API代理的API接口,并提供详细的调用教程和代码演示,同时,我们还将讨论在不同场景下使用API代理的API接口所带来的好处。 哪些业务场景可以使用AP…

C# 字符串和正则表达式

C# 字符串和正则表达式 System.String 类StringBuilder 成员格式化字符串正则表达式 System.String 类 StringBuilder 成员 格式化字符串 正则表达式

央国企信创改造难在何处?先行建设国产身份域管可少走弯路

据统计,全球超 91% 的具规模企业将 Microsoft Active Directory (微软AD)作为数字化身份的基础底座。通常企业达到 300 人以上规模开始建设 AD,而高科技企业早在 50-60 人左右规模时就开始搭建。 AD身份域管是企业身份的事实标准 …

货物寄到英国选择什么物流比较划算?

随着全球化的发展,越来越多的企业开始将产品销售到海外市场,其中英国作为一个重要的贸易伙伴,吸引了大量的中国企业的关注。然而,如何将货物安全、快速地运送到英国,成为了众多企业面临的一个问题。那么,货…

拥抱数字正义时代,看AIGC如何驱动法律变革

人工智能,作为科技领域的代表,目前正在逐步渗透并应用于各个领域。大到政府的社会治理,小到提问的识别延伸,AI已悄然走进了生活中的各个领域。单说人民法院的司法工作中,随机分案的程序设计、音字转换的功能实现、裁判…

04、EL和JSTL核心技术

目录 1 EL表达式(熟悉) 1.1 基本概念 1.2 主要功能 1.3 访问内置对象的数据 1.3.1访问方式 1.3.2 执行流程 1.4 访问请求参数的数据 1.5 访问Bean对象的属性 1.5.1 访问方式 1.5.2 主要区别 1.6 访问集合中的数据 1.7 常用的内置对象 …

二叉树题目:二叉树剪枝

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题:二叉树剪枝 出处:814. 二叉树剪枝 难度 4 级 题目描述 要求 给定二叉树的根结点 root \texttt{root} root,返回移除了所有…

LEO天线,全球市场总体规模,头部前八大厂商排名及市场份额

LEO天线全球市场总体规模 据QYResearch调研团队最新报告“全球LEO天线市场报告2023-2029”显示,预计2029年全球LEO天线市场规模将达到3545.3百万美元,未来几年年复合增长率CAGR为29.6%。 主要驱动因素: 近年来,全球航天工业的投资激增&#…

React antd Table点击下一页后selectedRows丢失之前页选择内容的问题

一、问题 使用了React antd 的<Table>标签&#xff0c;是这样记录选中的行id与行内容的&#xff1a; <TabledataSource{data.list}rowSelection{{selectedRowKeys: selectedIdsInSearchTab,onChange: this.onSelectChange,}} // 表格是否可复选&#xff0c;加 type: …

NFT Insider#109:The Sandbox推出了首个足球小将 NFT 作品集,YGG Web3 游戏峰会即将开启!

引言&#xff1a;NFT Insider由NFT收藏组织WHALE Members、BeepCrypto联合出品&#xff0c;浓缩每周NFT新闻&#xff0c;为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周报将从NFT市场数据&#xff0c;艺术新闻类&#xff0c;游戏新闻类&#xff0c;虚拟世界类&#…