🔄 PgBouncer
PgBouncer là một công cụ quản lý kết nối (connection pooler) cho PostgreSQL. Nó giúp giảm tải và cải thiện hiệu suất của cơ sở dữ liệu bằng cách tái sử dụng các kết n ối hiện có thay vì tạo kết nối mới mỗi khi có yêu cầu.
⭐ Tính năng chính
- 🔁 Connection Pooling: Tái sử dụng các kết nối để giảm tải
- ⚖️ Load Balancing: Phân phối tải đều giữa các kết nối
- 🚫 Connection Limiting: Giới hạn số kết nối để tránh quá tải
- 🔐 Authentication: Hỗ trợ nhiều phương thức xác thực
🛠️ Cài đặt và Cấu hình
1. 📥 Cài đặt PgBouncer
# Debian/Ubuntu
sudo apt update
sudo apt install pgbouncer
2. ⚙️ Cấu hình cơ bản
Chỉnh sửa file cấu hình chính /etc/pgbouncer/pgbouncer.ini
:
[databases]
* = host=localhost port=5432
[pgbouncer]
# Chế độ pool:
# - session: sau khi client ngắt kết nối (mặc định)
# - transaction: sau khi giao dịch hoàn tất
# - statement: sau khi câu lệnh hoàn tất
pool_mode = transaction
# Giới hạn kết nối
max_client_conn = 5000
# Cấu hình xác thực
auth_type = md5
auth_file = /etc/pgbouncer/userlist.txt
# Danh sách admin users
admin_users = my_db_user
3. 🔒 Cấu hình xác thực
Tạo và chỉnh sửa file /etc/pgbouncer/userlist.txt
:
📌 PostgreSQL < 14
"my_db_user" "md5badc318d987f61146c6ad8e15d84a111"
Tạo mật khẩu MD5:
echo "md5"$(echo -n 'YourdbpasswordYourdbusername' | md5sum | awk ' { print $1 } ')
📌 PostgreSQL ≥ 14
"my_db_user" "SCRAM-SHA-256$4096:lLN4+i05+kpeffD4s3rRiw==$Oq62iUGamAaF5cpB+agWV4u3xfc5cZCRtvMhmA+Zm3E=:hHkCesEi0p0wLWk1uUEeTtJTYLXHKDLdy2te3VAOe8s="
Lấy hash SCRAM-SHA-256:
psql -h localhost -p 5432 -Atq -U postgres -d postgres -c "SELECT concat('\"', usename, '\" \"', passwd, '\"') FROM pg_shadow"