Để đảm bảo tính sẵn sàng cao (High Availability – HA) trong PostgreSQL, bạn có thể áp dụng nhiều phương pháp và công nghệ khác nhau. Dưới đây là một hướng dẫn chi tiết với các bước cụ thể và mã mẫu đi kèm.
1. Streaming Replication
Mô tả: Streaming Replication cho phép sao chép dữ liệu từ một máy chủ chính sang một hoặc nhiều máy chủ phụ theo thời gian thực.
Bước 1: Cấu hình máy chủ chính
Chỉnh sửa tệp cấu hình postgresql.conf
trên máy chủ chính:
# Thêm vào trong postgresql.conf
wal_level = replica
max_wal_senders = 3
wal_keep_segments = 64
Chỉnh sửa tệp pg_hba.conf
để cho phép kết nối từ máy chủ phụ:
# Thêm vào pg_hba.conf
host replication all /32 md5
Bước 2: Tạo user cho replication
CREATE ROLE replicator WITH REPLICATION PASSWORD 'your_password' LOGIN;
Bước 3: Sao chép dữ liệu từ máy chủ chính sang máy chủ phụ
pg_basebackup -h -D /var/lib/postgresql/12/main -U replicator -P -X stream
Bước 4: Cấu hình máy chủ phụ
Tạo tệp recovery.conf
trong thư mục dữ liệu của máy chủ phụ:
# Tạo tệp recovery.conf
standby_mode = 'on'
primary_conninfo = 'host= port=5432 user=replicator password=your_password'
trigger_file = '/tmp/postgresql.trigger.5432'
Bước 5: Khởi động lại máy chủ phụ
systemctl start postgresql
2. Failover Clustering
Mô tả: Sử dụng các công cụ để tự động chuyển đổi vai trò giữa máy chủ chính và phụ khi có sự cố.
Bước 1: Cài đặt Patroni
# Trên máy chủ chính và phụ, cài đặt Patroni
sudo apt-get install patroni
Bước 2: Cấu hình Patroni
Tạo tệp cấu hình patroni.yml
:
scope: mycluster
namespace: db
name: postgres
restapi:
listen: 0.0.0.0:8008
connect_address: :8008
etcd:
host: :2379
bootstrap:
dcs:
etcd:
hosts: :2379
initdb:
- encoding: UTF8
- locale: en_US.UTF-8
Bước 3: Khởi động Patroni
patroni /path/to/patroni.yml
3. Load Balancing
Mô tả: Sử dụng công cụ như Pgpool-II hoặc HAProxy để phân phối lưu lượng truy cập đến các máy chủ khác nhau.
Bước 1: Cài đặt Pgpool-II
# Cài đặt Pgpool-II
sudo apt-get install pgpool2
Bước 2: Cấu hình Pgpool-II
Chỉnh sửa tệp cấu hình pgpool.conf
:
backend_hostname0 = ''
backend_port0 = 5432
backend_weight0 = 1
backend_hostname1 = ''
backend_port1 = 5432
backend_weight1 = 1
Bước 3: Khởi động Pgpool-II
4. Giám sát và Cảnh báo
Mô tả: Sử dụng các công cụ giám sát để theo dõi tình trạng của cơ sở dữ liệu và gửi cảnh báo khi có vấn đề xảy ra.
Bước 1: Cài đặt Prometheus và Grafana
# Cài đặt Prometheus
sudo apt-get install prometheus
# Cài đặt Grafana
sudo apt-get install grafana
Bước 2: Cấu hình Prometheus
Chỉnh sửa tệp cấu hình prometheus.yml
để theo dõi PostgreSQL:
scrape_configs:
- job_name: 'postgresql'
static_configs:
- targets: [':9187']
5. Kiểm tra và Bảo trì
Mô tả: Thực hiện các bài kiểm tra phục hồi và bảo trì định kỳ để đảm bảo quy trình hoạt động hiệu quả.
Bước 1: Thực hiện kiểm tra phục hồi
# Thực hiện lệnh khôi phục từ sao lưu
pg_restore -U username -d target_db mydb.backup
Bước 2: Ghi chú quy trình Ghi chú các bước thực hiện và kiểm tra để cải thiện quy trình phục hồi trong tương lai.
Kết luận
Bằng cách áp dụng các phương pháp và công nghệ trên, bạn có thể đảm bảo tính sẵn sàng cao cho PostgreSQL. Việc cấu hình chính xác, giám sát liên tục và kiểm tra định kỳ là rất quan trọng để duy trì hiệu suất và khả năng phục hồi của hệ thống.