Rumah pangkalan data tutorial mysql PostgreSQL数据库连接池PgBouncer的搭建

PostgreSQL数据库连接池PgBouncer的搭建

Jun 07, 2016 pm 05:29 PM
postgresql

最近有些项目我们是采用PostgreSQL进行后端数据库,由于要对客户端的连接使用类型和连接数进行控制,因此我们采用PgBouncer来进行

最近有些项目我们是采用PostgreSQL进行后端数据库,由于要对客户端的连接使用类型和连接数进行控制,因此我们采用PgBouncer来进行实施。

PgBouncer相关的基本文档pgsqldb中文站已经有不少文档,这里我就不再作过多的说明,我将集中对其中的几个要点和我实践中遇到的问题和大家分享一下。
OK,肺话也不多少,开始正题吧;D

PgBouncer介绍
什么是PgBouncer?
PgBouncer是一个轻量级的数据库连接池。download

PgBouncer的作用
PgBouncer可以在后端数据库和前端应用间建立连接的桥梁,由PgBouncer去处理和后端数据库的连接关系。
对客户端连接进行限制,预防过多或者恶意的连接请求。
PgBouncer的特点
内存消耗低(默认为2k/连接),因为Bouncer不需要每次都接受完整的数据包
可以把不同的数据库连接到一个机器上,而对客户端保持透明
支持在线的重新配置而无须重启
仅支持V3协议,因此后端版本须>=7.4
开始使用PgBouncer
基本ini文件配置(假设我们创建了新的ini文件/usr/local/pgsql/conf/pgbouncer.ini)
1. 添加目标数据库的连接字符串,这个表示PgBouncer将会在哪些后端数据库中建立连接,比如:

template1 = host=127.0.0.1 port=5432 dbname=template1
2. 设定PgBouncer的监听端口, port=5555,默认为6000

3. 创建用户列表文件并添加用户信息,此用户为允许客户端使用的连接用户名,比如:
A. @www.linuxidc.com:[~]$ echo "user" "password" > /usr/local/pgsql/user.txt
B. 在ini设定:auth_file = /usr/local/pgsql/user.txt
4. 创建admin用户,在配置中添加:admin_users = user,用户可以使用此用户名连接pgbouncer并查看运行状况等,
注意:此用户必须为user.txt文件中已经存在的用户。

启动并测试连接/查看运行状况
1. 启动:pgbouncer -d pgbouncer.ini
2. 测试连接:psql -h 127.0.0.1 -p 6000 -U user template1
3. 通过admin用户连接pgbouncer查看配置:
psql -h 127.0.0.1 -p 6000 -U user pgbouncer
pgbouncer=# show config;
3. 通过admin用户连接pgbouncer查看运行情况:

pgbouncer=# show stats;
pgbouncer=# show lists;
pgbouncer=# show pools;
pgbouncer=# show databases;
#其余运行参数可以通过如下命令查看
pgbouncer=# show help;
4. 参数修改:如果修改了ini文件中相关参数,需要通过命令告知bouncer重新读取配置内容:

pgbouncer=# reload;
 PgBouncer连接类型
会话池连接:即以一个session为生命期,当客户端断开的时候,才断开并释放连接回连接池
事务连接:服务器连接只是在一个事务的过程里赋予客户端的
语句连接:在每个查询结束之后,服务器的连接都会立即放回连接池。在这种模式下将不允许多语句的事务。否则,会给出如下提示,,比如
test=# begin;
 ERROR:  Long transactions not allowed
  server closed the connection unexpectedly
  This probably means the server terminated abnormally
  before or while processing the request.
 The connection to the server was lost. Attempting reset: Succeeded.
客户端连接方式
这里我简单说明一下客户端不同连接方式时服务器端的处理方式,以perl中为例:
$dbh = DBI -> connect('dbi:Pg:dbname=test;host=127.0.0.1;port=6000', 'postgres', ' ' ) or die $DBI::errstr;
客户端为AutoCommit时,transaction类型 = statements类型
pool类型为transaction类型,如果客户端不为AutoCommit时,必须显示Commit,否则连接不释放
pool类型为statements类型时,连接不支持长语句,因此客户端必须AutoCommit,否则依然会报错
AutoCommit配置为:

{'AutoCommit' => 0}
连接参数配置及客户端状态
max_client_conn
这个为允许客户端连接的最大数目
你可以通过show clients进行查看,当客户段连接大于此设置时,客户端会得到类似如下信息:
psql: ERROR:  no more connections allowed
default_pool_size
这个为当前连接池中允许的最大处理连接
比如default_pool_size=3,如果在连接池没有空余连接的情况下,如果已经连接的客户端尝试通过PgBouncer向后端执行查询请求,
则客户端会一直处理等待状态,当有空余的连接释放时,比如其他的客户端断开连接时,PgBouncer才会把此请求放如连接池中,
向后端提出服务请求,后端收到请求后,才执行请求返回结果,比如
template1=# select * from test;
 --no result
以上测试都是基于 pgbouncer version 1.1.1 + psql (PostgreSQL) 8.3.3

linux

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1663
14
Tutorial PHP
1264
29
Tutorial C#
1237
24
MySQL dan PostgreSQL: Perbandingan prestasi dan petua pengoptimuman MySQL dan PostgreSQL: Perbandingan prestasi dan petua pengoptimuman Jul 13, 2023 pm 03:33 PM

MySQL dan PostgreSQL: Perbandingan Prestasi dan Petua Pengoptimuman Semasa membangunkan aplikasi web, pangkalan data adalah komponen yang sangat diperlukan. Apabila memilih sistem pengurusan pangkalan data, MySQL dan PostgreSQL adalah dua pilihan biasa. Kedua-duanya ialah sistem pengurusan pangkalan data hubungan sumber terbuka (RDBMS), tetapi terdapat beberapa perbezaan dalam prestasi dan pengoptimuman. Artikel ini akan membandingkan prestasi MySQL dan PostgreSQL dan memberikan beberapa petua pengoptimuman. Perbandingan prestasi membandingkan dua pengurusan pangkalan data

MySQL dan PostgreSQL: Amalan Terbaik dalam Pembangunan Web MySQL dan PostgreSQL: Amalan Terbaik dalam Pembangunan Web Jul 14, 2023 pm 02:34 PM

MySQL dan PostgreSQL: Amalan Terbaik dalam Pembangunan Web Pengenalan: Dalam dunia moden pembangunan web, pangkalan data merupakan komponen penting. Apabila memilih pangkalan data, pilihan biasa ialah MySQL dan PostgreSQL. Artikel ini akan merangkumi amalan terbaik untuk menggunakan MySQL dan PostgreSQL dalam pembangunan web dan menyediakan beberapa contoh kod. 1. Senario yang boleh digunakan MySQL sesuai untuk kebanyakan aplikasi web, terutamanya yang memerlukan prestasi tinggi, kebolehskalaan dan kemudahan penggunaan.

MySQL dan PostgreSQL: Keselamatan Data dan Strategi Sandaran MySQL dan PostgreSQL: Keselamatan Data dan Strategi Sandaran Jul 13, 2023 pm 03:31 PM

MySQL dan PostgreSQL: Keselamatan Data dan Strategi Sandaran Pengenalan: Dalam masyarakat moden, data telah menjadi bahagian penting dalam perniagaan dan kehidupan peribadi. Untuk sistem pengurusan pangkalan data, keselamatan data dan strategi sandaran adalah penting, kedua-duanya untuk melindungi data daripada kehilangan atau kerosakan dan untuk memastikan kebolehpercayaan dan integriti data yang dipulihkan. Artikel ini akan memberi tumpuan kepada keselamatan data dan strategi sandaran dua sistem pangkalan data hubungan arus perdana, MySQL dan PostgreSQL. 1. Keselamatan data: (1) Hak pengguna

Pelajari fungsi pangkalan data dalam bahasa Go dan laksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan data PostgreSQL Pelajari fungsi pangkalan data dalam bahasa Go dan laksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan data PostgreSQL Jul 31, 2023 pm 12:54 PM

Pelajari fungsi pangkalan data dalam bahasa Go dan laksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan data PostgreSQL Dalam pembangunan perisian moden, pangkalan data adalah bahagian yang amat diperlukan. Sebagai bahasa pengaturcaraan yang berkuasa, bahasa Go menyediakan pelbagai fungsi operasi pangkalan data dan kit alat, yang boleh melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan pangkalan data dengan mudah. Artikel ini akan memperkenalkan cara mempelajari fungsi pangkalan data dalam bahasa Go dan menggunakan pangkalan data PostgreSQL untuk operasi sebenar. Langkah 1: Pasang pemacu pangkalan data dalam bahasa Go untuk setiap pangkalan data

Bagaimana untuk menggunakan pangkalan data PostgreSQL dalam pengaturcaraan PHP? Bagaimana untuk menggunakan pangkalan data PostgreSQL dalam pengaturcaraan PHP? Jun 12, 2023 am 09:27 AM

Dengan perkembangan teknologi pangkalan data, sistem pengurusan pangkalan data juga menyediakan pelbagai pilihan Pembangun boleh memilih pangkalan data yang paling sesuai mengikut keperluan dan pilihan mereka. Sebagai sistem pangkalan data hubungan sumber terbuka termaju, PostgreSQL semakin menarik perhatian dan penggunaan oleh pembangun. Jadi, bagaimana untuk menggunakan pangkalan data PostgreSQL dalam pengaturcaraan PHP? 1. Pasang dan konfigurasikan pangkalan data PostgreSQL Sebelum menggunakan PostgreSQL, anda perlu memasang dan mengkonfigurasinya. pertama

MySQL dan PostgreSQL: Bagaimana untuk mengoptimumkan prestasi pertanyaan pangkalan data? MySQL dan PostgreSQL: Bagaimana untuk mengoptimumkan prestasi pertanyaan pangkalan data? Jul 12, 2023 pm 03:15 PM

MySQL dan PostgreSQL: Bagaimana untuk mengoptimumkan prestasi pertanyaan pangkalan data? Gambaran Keseluruhan: Prestasi pertanyaan pangkalan data adalah pertimbangan penting semasa membangunkan aplikasi. Prestasi pertanyaan yang baik meningkatkan responsif aplikasi dan pengalaman pengguna. Artikel ini akan memperkenalkan beberapa kaedah untuk mengoptimumkan prestasi pertanyaan pangkalan data, memfokuskan pada dua pangkalan data yang biasa digunakan, MySQL dan PostgreSQL. Pengoptimuman indeks pangkalan data: Indeks pangkalan data merupakan faktor penting dalam meningkatkan prestasi pertanyaan. Indeks boleh mempercepatkan carian data dan mengurangkan masa pengimbasan pertanyaan.

Perancangan dan penskalaan kapasiti pangkalan data: MySQL lwn. PostgreSQL Perancangan dan penskalaan kapasiti pangkalan data: MySQL lwn. PostgreSQL Jul 12, 2023 pm 01:43 PM

Perancangan dan pengembangan kapasiti pangkalan data: MySQL vs. PostgreSQL Pengenalan: Dengan perkembangan pesat Internet dan kemunculan era data besar, perancangan dan pengembangan kapasiti pangkalan data telah menjadi semakin penting. MySQL dan PostgreSQL ialah dua sistem pengurusan pangkalan data hubungan (RDBMS) yang popular. Mereka mempunyai ciri yang berbeza dan senario yang boleh digunakan dalam perancangan dan pengembangan kapasiti pangkalan data. Artikel ini akan membandingkan kedua-dua pangkalan data dan memberikan beberapa contoh kod untuk menunjukkan perbezaannya. 1. MySQ

Menggunakan PostgreSQL dalam Go: Panduan Lengkap Menggunakan PostgreSQL dalam Go: Panduan Lengkap Jun 18, 2023 am 09:28 AM

Bahasa Go ialah bahasa pengaturcaraan yang pantas dan cekap sesuai untuk membina perkhidmatan web dan aplikasi bahagian belakang. PostgreSQL ialah sistem pengurusan pangkalan data hubungan sumber terbuka yang menjanjikan untuk memberikan kebolehpercayaan, skalabiliti dan keselamatan data yang lebih tinggi. Dalam artikel ini, kami akan mendalami penggunaan PostgreSQL dalam Go dan memberikan beberapa contoh dan petua kod praktikal. Memasang dan menyediakan PostgreSQL Pertama, kita perlu memasang dan menyediakan PostgreSQL. Boleh didapati di laman web rasmi

See all articles