🐘 Cài Đặt PostgreSQL
🐧 Cài Đặt trên Ubuntu
1. 📦 Thêm Repository PostgreSQL
# Cài đặt các gói phụ thuộc
sudo apt install wget ca-certificates
# Thêm PostgreSQL repository key
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo tee /etc/apt/trusted.gpg.d/postgresql.asc
# Thêm PostgreSQL repository
echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
# Cập nhật package list
sudo apt update
2. 💿 Cài Đặt PostgreSQL
Cài đặt phiên bản cụ thể
# PostgreSQL 12
sudo apt install postgresql-12 postgresql-contrib
# PostgreSQL 13
sudo apt install postgresql-13 postgresql-contrib
# PostgreSQL 15
sudo apt install postgresql-15 postgresql-contrib
3. 🔄 Quản Lý Service
# Kiểm tra status
sudo systemctl status postgresql
# Xem các cluster đang chạy
sudo systemctl list-units --type=service | grep postgresql
# Dừng một phiên bản cụ thể
sudo systemctl stop postgresql@13-main
# Khóa cập nhật tự động
sudo apt-mark hold postgresql-12 postgresql-contrib
⚙️ Cấu Hình Cơ Bản
1. 📄 File Cấu Hình
# Backup file cấu hình
sudo cp /etc/postgresql/12/main/postgresql.conf /etc/postgresql/12/main/postgresql.conf.backup
# Chỉnh sửa cấu hình
sudo vi /etc/postgresql/12/main/postgresql.conf
Các thông số quan trọng:
# Network
listen_addresses = '*'
port = 5432
# Memory
shared_buffers = 128MB
work_mem = 4MB
# Logging
log_destination = 'stderr'
logging_collector = on
log_directory = 'log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
mẹo
Đọc thêm hướng dẫn Tinh Chỉnh PostgreSQL để tạo cấu hình tối ưu.
2. 🔒 Cấu Hình Xác Thực
# Chỉnh sửa pg_hba.conf
sudo vi /etc/postgresql/12/main/pg_hba.conf
Thêm các rule:
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 0.0.0.0/0 md5
# IPv6 local connections:
host all all ::1/128 md5
3. 🔄 Khởi Động Lại Service
sudo systemctl restart postgresql
📊 Quản Lý Database
1. 🔑 Truy Cập PostgreSQL
# Đăng nhập với user postgres
sudo -u postgres psql
# Hoặc sử dụng psql trực tiếp
psql -U postgres -h localhost
2. 👥 Tạo User và Database
-- Tạo user mới
CREATE USER myuser WITH PASSWORD 'mypassword';
-- Tạo database
CREATE DATABASE mydb;
-- Cấp quyền
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
3. 💾 Backup và Restore
# Backup database
pg_dump dbname > backup.sql
# Restore database
psql dbname < backup.sql
🛡️ Bảo Mật
1. 🔑 Đổi Mật Khẩu User postgres
ALTER USER postgres WITH PASSWORD 'new_password';
2. 🚫 Giới Hạn Kết Nối
Trong postgresql.conf:
max_connections = 100
📊 Monitoring
1. 📋 Kiểm Tra Logs
# Xem logs PostgreSQL
sudo tail -f /var/log/postgresql/postgresql-12-main.log
2. 👥 Kiểm Tra Kết Nối
-- Xem các kết nối hiện tại
SELECT * FROM pg_stat_activity;
🔧 Xử Lý Sự Cố
1. ⚠️ Các Lỗi Thường Gặp
-
Không thể kết nối
- Kiểm tra status service
- Xác nhận cấu hình listen_addresses
- Kiểm tra pg_hba.conf
-
Authentication failed
- Kiểm tra phương thức xác thực trong pg_hba.conf
- Xác nhận mật khẩu đúng
- Kiểm tra quyền user
2. ⚡ Performance Issues
-- Kiểm tra các query đang chạy lâu
SELECT pid, now() - pg_stat_activity.query_start AS duration, query
FROM pg_stat_activity
WHERE pg_stat_activity.query != ''::text
AND state != 'idle'
AND now() - pg_stat_activity.query_start > interval '5 minutes';