ระบบฐานข้อมูลที่มีขนาดใหญ่และสำคัญ มักไม่สามารถหยุดทำงานได้ ดังนั้นการทำ Replication และ High Availability (HA) จึงเป็นหัวใจสำคัญในการดูแลระบบ โดยเฉพาะใน PostgreSQL ซึ่งมีการรองรับทั้ง Streaming Replication และ Logical Replication บทความนี้จะอธิบายรายละเอียด วิธีการตั้งค่า ข้อดีข้อเสีย และ Best Practices
Replication คืออะไร?
Replication คือกระบวนการคัดลอกข้อมูลจากฐานข้อมูลหลัก (Primary) ไปยังฐานข้อมูลสำรอง (Replica/Standby) เพื่อให้มีข้อมูลที่ซิงโครไนซ์กัน สามารถใช้เพื่อ:
- High Availability → หาก Primary ล่ม Replica จะทำงานแทน
- Load Balancing → กระจาย Query ไปยัง Replica
- Disaster Recovery → กู้คืนข้อมูลจาก Replica
Streaming Replication
Streaming Replication เป็นการทำ Replication ระดับ Physical โดยการคัดลอก WAL (Write Ahead Log) จาก Primary ไปยัง Standby แบบ Real-time
การตั้งค่า Streaming Replication
1. ตั้งค่า Primary Server
# postgresql.conf wal_level = replica max_wal_senders = 10 wal_keep_size = 64 # pg_hba.conf host replication replicator 192.168.1.20/32 md5
2. สร้าง User สำหรับ Replication
CREATE ROLE replicator WITH REPLICATION LOGIN PASSWORD 'secret';
3. ตั้งค่า Standby Server
# สั่งให้ Standby ดึง WAL Log จาก Primary primary_conninfo = 'host=192.168.1.10 port=5432 user=replicator password=secret'
Logical Replication
Logical Replication ทำงานในระดับ SQL Statement สามารถเลือก Table หรือ Data บางส่วนที่ต้องการ Replicate ได้ เหมาะกับการ Sync ข้อมูลระหว่างระบบต่าง ๆ
การตั้งค่า Logical Replication
1. ตั้งค่า Publisher (Primary)
CREATE PUBLICATION my_pub FOR TABLE customers, orders;
2. ตั้งค่า Subscriber (Replica)
CREATE SUBSCRIPTION my_sub CONNECTION 'host=192.168.1.10 dbname=mydb user=replicator password=secret' PUBLICATION my_pub;
เปรียบเทียบ Streaming Replication และ Logical Replication
คุณสมบัติ | Streaming Replication | Logical Replication |
---|---|---|
ระดับ | Physical (WAL) | Logical (SQL) |
ข้อมูลที่เลือกได้ | ทั้ง Database | เลือก Table ได้ |
Use Case | High Availability | Data Integration |

High Availability (HA)
High Availability คือการทำให้ระบบพร้อมใช้งานตลอดเวลา แม้ว่า Server หลักจะล่ม PostgreSQL สามารถทำ HA ร่วมกับเครื่องมือเสริม เช่น:
- Patroni → จัดการ Failover อัตโนมัติ
- Pgpool-II → Load Balancer + Connection Pool
- Keepalived → ใช้ Virtual IP สำหรับ Failover
Best Practices
- เลือก Replication ให้เหมาะกับ Use Case
- ใช้ Monitoring เพื่อตรวจสอบการ Sync
- ทดสอบ Failover เป็นประจำ
- ใช้เครื่องมือเสริม เช่น Patroni หรือ Pgpool-II
สรุป
Replication & High Availability เป็นหัวใจของระบบขนาดใหญ่ที่ต้องการความเสถียรและไม่หยุดชะงัก Streaming Replication เหมาะกับ HA และ Disaster Recovery ส่วน Logical Replication เหมาะกับ Data Integration และการ Sync ข้อมูลบางส่วน การผสมผสานทั้งสองแบบ พร้อมเครื่องมือ HA จะทำให้ระบบมีความมั่นคงสูงสุด
SEO Keywords
PostgreSQL Replication,Streaming Replication,Logical Replication,PostgreSQL High Availability,Database Replication,PostgreSQL Failover,Replication vs High Availability