Để đả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.
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
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
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
systemctl start pgpool2
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']
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.
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.