PostgreSQL Streaming Replication สตรีมข้อมูล Write-Ahead Log (WAL) จากโหนดหลัก (Master) ไปยังโหนดสำรอง (Standby/Slave) อย่างต่อเนื่อง สร้างสำเนาฐานข้อมูล Near-real-time สำหรับ High Availability และ Fault Tolerance
Master Read/Write WAL → Slave 1, Slave 2 Read-only
การตั้งค่า Master Node
1. เปิดใช้งาน WAL Archiving
แก้ไข postgresql.conf
archive_mode = on archive_command = 'cp %p /var/lib/pgsql/12/archive/%f' wal_level = replica max_wal_senders = 3
2. อนุญาตการเชื่อมต่อ Replication
แก้ไข pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD host replication repluser 192.168.1.20/32 md5
3. สร้าง Replication User
CREATE ROLE repluser WITH REPLICATION LOGIN PASSWORD 'securepass';
Restart PostgreSQL บน Master หลังเปลี่ยนแปลงเหล่านี้
การตั้งค่า Slave Node
1. Base Backup จาก Master
sudo -u postgres pg_basebackup -h master_ip -D /var/lib/pgsql/12/data -U repluser -P -R
2. ตั้งค่า recovery.conf
สร้าง /var/lib/pgsql/12/data/recovery.conf
standby_mode = 'on' primary_conninfo = 'host=master_ip port=5432 user=repluser password=securepass' restore_command = 'cp /var/lib/pgsql/12/archive/%f "%p"'
3. เริ่ม Slave
sudo systemctl start postgresql-12 sudo systemctl enable postgresql-12
ตรวจสอบ Replication
รันบน Master เพื่อตรวจสอบ Replicas ที่เชื่อมต่อ
SELECT client_addr, state, sync_state FROM pg_stat_replication;
client_addr | state | sync_state ----------------+-----------+------------ 192.168.1.20 | streaming | async
Manual Failover
หาก Master ล้มเหลว
- ตัดการ Replication จาก Master ที่ล้มเหลว
- บน Slave ตั้ง
recovery_target_timeline = 'latest'ในrecovery.conf - Restart PostgreSQL บน Slave ที่โปรโมท
- ตรวจสอบ Slaves อื่นเชื่อมต่อ Master ใหม่ด้วย
pg_stat_replication
สรุป
PostgreSQL 12 Streaming Replication บน CentOS 8 เกี่ยวข้องกับการตั้งค่า WAL Archiving และการเข้าถึง Replication บน Master, สร้าง Base Backup และ recovery.conf บน Slave, แล้วตรวจสอบด้วย pg_stat_replication Manual Failover โปรโมท Slave เป็น Master เมื่อจำเป็น
