Đảm bảo rằng PostgreSQL đã được cài đặt trên cả hai máy (master và slave). Bạn có thể cài đặt bằng lệnh sau (trên Ubuntu/Debian):
sudo apt update sudo apt install postgresql
postgresql.conf
Mở tệp cấu hình:
sudo nano /etc/postgresql/{version}/main/postgresql.conf
Thêm hoặc chỉnh sửa các dòng sau:
listen_addresses = '*' wal_level = replica max_wal_senders = 3 wal_keep_segments = 64
listen_addresses
: Để PostgreSQL lắng nghe các kết nối từ các máy khác.wal_level
: Cần thiết để cho phép replication.max_wal_senders
: Số lượng kết nối WAL sender tối đa.wal_keep_segments
: Số lượng segment WAL được giữ lại.pg_hba.conf
Mở tệp cấu hình:
sudo nano /etc/postgresql/{version}/main/pg_hba.conf
Thêm dòng sau để cho phép kết nối replication:
host replication all {slave_ip}/32 md5
Thay {slave_ip}
bằng địa chỉ IP của máy slave.
Khởi động lại dịch vụ PostgreSQL để áp dụng các thay đổi:
sudo systemctl restart postgresql
Truy cập vào PostgreSQL bằng tài khoản postgres
:
sudo -u postgres psql
Tạo một người dùng để replication:
CREATE ROLE replicator WITH REPLICATION LOGIN PASSWORD 'your_password';
Trước khi sao chép dữ liệu, bạn cần tắt dịch vụ PostgreSQL trên máy slave:
sudo systemctl stop postgresql
Sử dụng lệnh pg_basebackup
để sao chép dữ liệu từ máy master:
pg_basebackup -h {master_ip} -D /var/lib/postgresql/{version}/main -U replicator -P --wal-method=stream
Thay {master_ip}
bằng địa chỉ IP của máy master.
recovery.conf
Tạo một tệp recovery.conf
trong thư mục dữ liệu của PostgreSQL trên máy slave:
sudo nano /var/lib/postgresql/{version}/main/recovery.conf
Thêm các dòng sau vào tệp:
standby_mode = 'on' primary_conninfo = 'host={master_ip} port=5432 user=replicator password=your_password' trigger_file = '/tmp/postgresql.trigger.5432'
Khởi động lại dịch vụ PostgreSQL trên máy slave:
sudo systemctl start postgresql
Để kiểm tra xem replication có hoạt động hay không, bạn có thể sử dụng câu lệnh sau trên máy Slave:
SELECT * FROM pg_stat_replication;
Nếu replication được thiết lập thành công, bạn sẽ thấy thông tin về các kết nối từ máy Master.
ping
.ufw
để mở cổng 5432:sudo ufw allow 5432/tcp