การทำ Replication & High Availability (Streaming Replication, Logical Replication)

Sharing is caring!

ระบบฐานข้อมูลที่มีขนาดใหญ่และสำคัญ มักไม่สามารถหยุดทำงานได้ ดังนั้นการทำ 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 ReplicationLogical Replication
ระดับPhysical (WAL)Logical (SQL)
ข้อมูลที่เลือกได้ทั้ง Databaseเลือก Table ได้
Use CaseHigh AvailabilityData 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

Leave a Reply

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *