Skip to main content
Back to articles

Logical Replication ของ PostgreSQL ใช้ Publication และ Subscription

Logical replication ส่งการเปลี่ยนแปลงข้อมูลระดับตารางจาก publisher ไป subscriber อธิบายหลักการใช้งาน กรณีที่เหมาะ และข้อควรระวังจากเอกสารทางการ

Logical Replication ของ PostgreSQL ใช้ Publication และ Subscription

Logical replication ส่งการเปลี่ยนแปลงข้อมูลระดับตารางจาก publisher ไป subscriber เหมาะกับการแยกงานอ่านหรือย้ายข้อมูลบางตารางไปยังระบบใหม่ บทความนี้สรุปแนวคิดจากเอกสารทางการของ PostgreSQL และจุดที่ควรตรวจเมื่อนำไปใช้จริง

ภาพรวม

PostgreSQL มีทั้งกลไกธุรกรรม การจัดเก็บ และตัววางแผนคิวรี การเปลี่ยนค่าเพียงจุดหนึ่งอาจกระทบประสิทธิภาพ การกู้คืน และความถูกต้องของข้อมูล

หัวข้อนี้ตอบโจทย์เฉพาะเรื่อง: Logical replication ส่งการเปลี่ยนแปลงข้อมูลระดับตารางจาก publisher ไป subscriber จึงควรเริ่มจากปัญหาที่ต้องแก้และผลลัพธ์ที่คาดหวัง ไม่ใช่เพียงเปิดฟีเจอร์เพราะมีอยู่ในเครื่องมือ

หลักการทำงาน

ฝั่งต้นทางประกาศ publication และฝั่งปลายทางสร้าง subscription เพื่อรับข้อมูลและการเปลี่ยนแปลงต่อเนื่อง

ให้ตรวจทั้งสถานะที่เครื่องมือรายงานและผลลัพธ์ปลายทางที่ผู้ใช้หรือระบบอื่นได้รับ หากสองส่วนไม่ตรงกัน ควรกลับไปตรวจค่าตั้งต้นและขอบเขตที่ฟีเจอร์นี้รับผิดชอบก่อนเปลี่ยนค่าเพิ่มเติม

เหมาะกับงานแบบไหน

เหมาะกับการแยกงานอ่านหรือย้ายข้อมูลบางตารางไปยังระบบใหม่

ก่อนทดลอง ให้ระบุสิ่งที่จะใช้วัดผล เช่น เวลาตอบสนอง ความพร้อมใช้งาน ความถูกต้องของข้อมูล หรือภาระการดูแล แล้วเทียบกับสภาพเดิม วิธีนี้ช่วยให้รู้ว่าฟีเจอร์แก้ปัญหาจริงหรือย้ายภาระไปอีกจุดหนึ่ง

ขั้นตอนนำไปใช้

  1. เก็บค่าปัจจุบันและตัวเลขก่อนเปลี่ยน เช่น latency และขนาดตาราง
  2. ทดสอบกับข้อมูลที่มีขนาดและรูปแบบใกล้ production
  3. เตรียม backup ที่กู้คืนได้ และตรวจสถิติหลังเปลี่ยน

เริ่มจากขอบเขตเล็กและเก็บผลทดสอบไว้กับการเปลี่ยนแปลง หากจะใช้ใน production ให้กำหนดผู้ติดตามผลและเงื่อนไขที่จะหยุดการขยายการใช้งาน

ข้อควรระวัง

DDL และ sequence ไม่ได้ถูกซิงก์เหมือนข้อมูลตารางเสมอ ต้องวางแผน schema และ cutover

แปลงข้อควรระวังนี้เป็นรายการตรวจในการทบทวนงาน เพราะปัญหาจากค่าตั้งต้นอาจไม่แสดงทันทีในสภาพแวดล้อมทดสอบ

สรุป

Logical replication ส่งการเปลี่ยนแปลงข้อมูลระดับตารางจาก publisher ไป subscriber เหมาะกับการแยกงานอ่านหรือย้ายข้อมูลบางตารางไปยังระบบใหม่ ก่อนนำไปใช้กับงานหลัก ควรตรวจผลตามขั้นตอนข้างต้นและทบทวนข้อจำกัดของระบบที่มีอยู่

อ่านเพิ่มเติม: เอกสารทางการของ PostgreSQL