แยก Failure Domain
กระจาย Primary / Replica คนละ Worker ด้วย Anti-affinity และข้าม Zone เมื่อรองรับ พร้อม Capacity สำหรับ Recovery
RUK-COM / MANAGED DATABASE CLUSTERS
Database Cluster สำหรับระบบสำคัญขององค์กร ออกแบบ Replication, Failover และ Recovery ให้เหมาะกับงาน พร้อมทีม Ruk-Com ดูแลตั้งแต่ Architecture จนถึงวันที่ต้องกู้คืนจริง
HIGHLIGHT / CLOUDNATIVEPG
PostgreSQL บน Kubernetes ด้วย CloudNativePG
KUBERNETES + CLOUDNATIVEPG
Solution แนะนำสำหรับทีมที่ต้องการดูแล PostgreSQL ผ่าน Kubernetes API ใช้ CloudNativePG Operator จัดการ Cluster, Streaming Replication, Failover และวงจร Backup โดยคง Data Path ของ PostgreSQL ให้ชัดเจน
PostgreSQL บน Kubernetes ที่แยก Write Service, Read Service และ WAL replication ชัดเจน Operator จัดการ Lifecycle และ Failover; PgBouncer ลด connection ส่วน PVC, Backup และ PITR แยกหน้าที่ครบ
Write = คำสั่งเขียนเข้า Database · Read = ผลลัพธ์ที่ส่งกลับ Client (คำสั่ง SELECT วิ่งเข้า Database ในทิศตรงข้าม)
Write ผ่าน PgBouncer → cluster-rw → Primary; Read result กลับจาก Replica ผ่าน cluster-ro ไปยังแอป Primary ส่ง WAL ตรงไป Replica และแต่ละ Pod มี PVC ของตัวเอง
PgBouncer เป็นตัวเลือกและอยู่หน้า cluster-rw; cluster-ro ชี้เฉพาะ Replica ส่วน cluster-r (ไม่วาด) อ่านได้จากทุก instance Operator/API เป็น Control plane; ไม่ใช่เส้นทาง SQL การกู้ PITR สร้าง Cluster ใหม่แยกจาก Failover สีแดงคือ Write request เข้าสู่ฐานข้อมูล สีเขียวคือ Read result กลับสู่ Client; คำสั่ง SELECT วิ่งสวนทางกับผลลัพธ์ สีส้มคือ Replication และเส้นประสีน้ำเงินคือ Monitor / Control Barman แสดงแยกเป็นขั้นตอนเพื่อให้อ่านง่าย แต่ทำงานเป็น Sidecar ภายใน Primary Pod ที่เป็นแหล่ง Backup ในตัวอย่างนี้ ไม่ใช่เครื่อง Backup เพิ่มเติม
เอกสารอ้างอิง ↗
Client เขียนผ่าน cluster-rw และอ่านจาก Replica ผ่าน cluster-ro ส่วน cluster-r ใช้อ่านจากทุก Instance ที่ Ready ได้ เลือก Endpoint ตามความต้องการด้านความสดของข้อมูล เพิ่ม PgBouncer ได้เมื่อต้องการ Connection Pooling
ใช้ Barman Cloud plugin เก็บ Base Backup และ WAL Archive ไปยัง Object Storage กู้คืนด้วย PITR บน Cluster ใหม่ แล้วตรวจข้อมูลก่อนเปลี่ยน Client ไม่เขียนทับ Production เดิม
เชื่อมกับ Ruk-Com Object Storage →PRODUCTION CHECKLIST
กระจาย Primary / Replica คนละ Worker ด้วย Anti-affinity และข้าม Zone เมื่อรองรับ พร้อม Capacity สำหรับ Recovery
ตรวจ IOPS, Latency, WAL headroom และ CSI ที่รองรับการขยาย Volume แต่ละ Instance เก็บข้อมูลของตัวเอง
Async ให้ความคล่องตัว ส่วน Synchronous replication และ Failover quorum ต้องแลกกับ Latency และความพร้อมในบางสถานการณ์
ควบคุมสิทธิ์ให้น้อยเท่าที่จำเป็น ดูแล Secret และ Certificate แยกจาก Backup ของ Database
ใช้ Metrics และ Logs ติดตาม Replication lag, WAL retention, Archive และ Backup พร้อม Alert ที่มี Runbook รองรับ
ทดสอบ Switchover, Restore และ Reconnect พร้อม Resource requests และ PDB ที่เหมาะสม PDB ไม่ป้องกัน Hardware Failure
PITR ต้องมี Base Backup และ WAL ต่อเนื่องถึงจุดกู้คืน พร้อมสิทธิ์และ Key ที่ใช้งานได้ การเลือก Sync Policy ไม่ใช่คำรับประกันว่าไม่มีข้อมูลสูญหายในทุกเหตุการณ์
CHOOSE YOUR DATABASE
เลือก Engine และ Mode แล้วลองจำลอง Node Failure, Failover และการ Sync กลับ ดูเส้นทาง Client, Replication และ Recovery แยกกันอย่างชัดเจน
Client ส่ง SQL ผ่าน ProxySQL 2 โหนด ทั้งสอง Primary รับเขียนได้และส่ง binlog หากัน ส่วน Secondary เพิ่มเติมใช้รองรับงานอ่าน
Write = คำสั่งเขียนเข้า Database · Read = ผลลัพธ์ที่ส่งกลับ Client (คำสั่ง SELECT วิ่งเข้า Database ในทิศตรงข้าม)
ProxySQL แยกเส้นทางอ่านและเขียน Primary ทั้งคู่ทำงานพร้อมกันและส่ง binlog ไปยังคู่ของตน
แสดง ProxySQL 2 โหนดตามค่าเริ่มต้น โหนดเส้นประคือส่วนขยายที่เปิดใช้งานในตัวอย่างนี้ จำนวนที่วาดไม่ใช่จำนวนขั้นต่ำ สีแดงคือ Write request เข้าสู่ฐานข้อมูล สีเขียวคือ Read result กลับสู่ Client; คำสั่ง SELECT วิ่งสวนทางกับผลลัพธ์ สีส้มคือ Replication และเส้นประสีน้ำเงินคือ Monitor / Control เส้นทางอ่านที่วาดเป็นตัวอย่าง ทั้งสอง Proxy ใช้กลุ่มโหนดตามบทบาทเดียวกัน
เอกสารอ้างอิง ↗SQL ผ่าน ProxySQL 2 โหนด งานเขียนไป Primary เดียว งานอ่านใช้ Secondary ได้ ProxySQL ตรวจสุขภาพและจัดเส้นทาง แต่ไม่ได้รับประกันการเลื่อน Secondary อัตโนมัติ
Write = คำสั่งเขียนเข้า Database · Read = ผลลัพธ์ที่ส่งกลับ Client (คำสั่ง SELECT วิ่งเข้า Database ในทิศตรงข้าม)
Primary รับเขียนและส่ง binlog แบบ asynchronous ไป Secondary ทั้งสอง ProxySQL ช่วยกระจายงานอ่าน
แสดง ProxySQL 2 โหนดตามค่าเริ่มต้น โหนดเส้นประคือส่วนขยายที่เปิดใช้งานในตัวอย่างนี้ จำนวนที่วาดไม่ใช่จำนวนขั้นต่ำ สีแดงคือ Write request เข้าสู่ฐานข้อมูล สีเขียวคือ Read result กลับสู่ Client; คำสั่ง SELECT วิ่งสวนทางกับผลลัพธ์ สีส้มคือ Replication และเส้นประสีน้ำเงินคือ Monitor / Control เส้นทางอ่านที่วาดเป็นตัวอย่าง ทั้งสอง Proxy ใช้กลุ่มโหนดตามบทบาทเดียวกัน
เอกสารอ้างอิง ↗Client ส่ง SQL ผ่าน ProxySQL 2 โหนด ทั้งสอง Primary รับเขียนได้และส่ง binlog หากัน ส่วน Secondary เพิ่มเติมใช้รองรับงานอ่าน
Write = คำสั่งเขียนเข้า Database · Read = ผลลัพธ์ที่ส่งกลับ Client (คำสั่ง SELECT วิ่งเข้า Database ในทิศตรงข้าม)
ProxySQL แยกเส้นทางอ่านและเขียน Primary ทั้งคู่ทำงานพร้อมกันและส่ง binlog ไปยังคู่ของตน
แสดง ProxySQL 2 โหนดตามค่าเริ่มต้น โหนดเส้นประคือส่วนขยายที่เปิดใช้งานในตัวอย่างนี้ จำนวนที่วาดไม่ใช่จำนวนขั้นต่ำ สีแดงคือ Write request เข้าสู่ฐานข้อมูล สีเขียวคือ Read result กลับสู่ Client; คำสั่ง SELECT วิ่งสวนทางกับผลลัพธ์ สีส้มคือ Replication และเส้นประสีน้ำเงินคือ Monitor / Control เส้นทางอ่านที่วาดเป็นตัวอย่าง ทั้งสอง Proxy ใช้กลุ่มโหนดตามบทบาทเดียวกัน
เอกสารอ้างอิง ↗SQL ผ่าน ProxySQL 2 โหนด งานเขียนไป Primary เดียว งานอ่านใช้ Secondary ได้ ProxySQL ตรวจสุขภาพและจัดเส้นทาง แต่ไม่ได้รับประกันการเลื่อน Secondary อัตโนมัติ
Write = คำสั่งเขียนเข้า Database · Read = ผลลัพธ์ที่ส่งกลับ Client (คำสั่ง SELECT วิ่งเข้า Database ในทิศตรงข้าม)
Primary รับเขียนและส่ง binlog แบบ asynchronous ไป Secondary ทั้งสอง ProxySQL ช่วยกระจายงานอ่าน
แสดง ProxySQL 2 โหนดตามค่าเริ่มต้น โหนดเส้นประคือส่วนขยายที่เปิดใช้งานในตัวอย่างนี้ จำนวนที่วาดไม่ใช่จำนวนขั้นต่ำ สีแดงคือ Write request เข้าสู่ฐานข้อมูล สีเขียวคือ Read result กลับสู่ Client; คำสั่ง SELECT วิ่งสวนทางกับผลลัพธ์ สีส้มคือ Replication และเส้นประสีน้ำเงินคือ Monitor / Control เส้นทางอ่านที่วาดเป็นตัวอย่าง ทั้งสอง Proxy ใช้กลุ่มโหนดตามบทบาทเดียวกัน
เอกสารอ้างอิง ↗Client ใช้ ProxySQL 2 โหนดเพื่อเข้าถึงฐานข้อมูลที่รับเขียนได้หลายโหนด การรับรอง write set ช่วยให้สมาชิกในกลุ่มที่มี quorum รักษาความสอดคล้อง
Write = คำสั่งเขียนเข้า Database · Read = ผลลัพธ์ที่ส่งกลับ Client (คำสั่ง SELECT วิ่งเข้า Database ในทิศตรงข้าม)
สมาชิกทั้งสี่รับงานได้ โดยโหนดเส้นประคือส่วนขยายในตัวอย่าง ส่ง write set ระหว่างสมาชิก ไม่ใช่โครงสร้าง Primary เดียวกับ Secondary
แสดง ProxySQL 2 โหนดตามค่าเริ่มต้น โหนดเส้นประคือส่วนขยายที่เปิดใช้งานในตัวอย่างนี้ จำนวนที่วาดไม่ใช่จำนวนขั้นต่ำ สีแดงคือ Write request เข้าสู่ฐานข้อมูล สีเขียวคือ Read result กลับสู่ Client; คำสั่ง SELECT วิ่งสวนทางกับผลลัพธ์ สีส้มคือ Replication และเส้นประสีน้ำเงินคือ Monitor / Control เส้นทางอ่านที่วาดเป็นตัวอย่าง ทั้งสอง Proxy ใช้กลุ่มโหนดตามบทบาทเดียวกัน เส้น Replication แสดงการแลกเปลี่ยน writeset ภายในกลุ่ม ไม่ใช่การส่งต่อแบบ chain replication
เอกสารอ้างอิง ↗Client ส่ง SQL ผ่าน ProxySQL 2 โหนด ทั้งสอง Primary รับเขียนได้และส่ง binlog หากัน ส่วน Secondary เพิ่มเติมใช้รองรับงานอ่าน
Write = คำสั่งเขียนเข้า Database · Read = ผลลัพธ์ที่ส่งกลับ Client (คำสั่ง SELECT วิ่งเข้า Database ในทิศตรงข้าม)
ProxySQL แยกเส้นทางอ่านและเขียน Primary ทั้งคู่ทำงานพร้อมกันและส่ง binlog ไปยังคู่ของตน
แสดง ProxySQL 2 โหนดตามค่าเริ่มต้น โหนดเส้นประคือส่วนขยายที่เปิดใช้งานในตัวอย่างนี้ จำนวนที่วาดไม่ใช่จำนวนขั้นต่ำ สีแดงคือ Write request เข้าสู่ฐานข้อมูล สีเขียวคือ Read result กลับสู่ Client; คำสั่ง SELECT วิ่งสวนทางกับผลลัพธ์ สีส้มคือ Replication และเส้นประสีน้ำเงินคือ Monitor / Control เส้นทางอ่านที่วาดเป็นตัวอย่าง ทั้งสอง Proxy ใช้กลุ่มโหนดตามบทบาทเดียวกัน
เอกสารอ้างอิง ↗SQL ผ่าน ProxySQL 2 โหนด งานเขียนไป Primary เดียว งานอ่านใช้ Secondary ได้ ProxySQL ตรวจสุขภาพและจัดเส้นทาง แต่ไม่ได้รับประกันการเลื่อน Secondary อัตโนมัติ
Write = คำสั่งเขียนเข้า Database · Read = ผลลัพธ์ที่ส่งกลับ Client (คำสั่ง SELECT วิ่งเข้า Database ในทิศตรงข้าม)
Primary รับเขียนและส่ง binlog แบบ asynchronous ไป Secondary ทั้งสอง ProxySQL ช่วยกระจายงานอ่าน
แสดง ProxySQL 2 โหนดตามค่าเริ่มต้น โหนดเส้นประคือส่วนขยายที่เปิดใช้งานในตัวอย่างนี้ จำนวนที่วาดไม่ใช่จำนวนขั้นต่ำ สีแดงคือ Write request เข้าสู่ฐานข้อมูล สีเขียวคือ Read result กลับสู่ Client; คำสั่ง SELECT วิ่งสวนทางกับผลลัพธ์ สีส้มคือ Replication และเส้นประสีน้ำเงินคือ Monitor / Control เส้นทางอ่านที่วาดเป็นตัวอย่าง ทั้งสอง Proxy ใช้กลุ่มโหนดตามบทบาทเดียวกัน
เอกสารอ้างอิง ↗Client ใช้ ProxySQL 2 โหนดเพื่อเข้าถึงฐานข้อมูลที่รับเขียนได้หลายโหนด การรับรอง write set ช่วยให้สมาชิกในกลุ่มที่มี quorum รักษาความสอดคล้อง
Write = คำสั่งเขียนเข้า Database · Read = ผลลัพธ์ที่ส่งกลับ Client (คำสั่ง SELECT วิ่งเข้า Database ในทิศตรงข้าม)
สมาชิกทั้งสี่รับงานได้ โดยโหนดเส้นประคือส่วนขยายในตัวอย่าง ส่ง write set ระหว่างสมาชิก ไม่ใช่โครงสร้าง Primary เดียวกับ Secondary
แสดง ProxySQL 2 โหนดตามค่าเริ่มต้น โหนดเส้นประคือส่วนขยายที่เปิดใช้งานในตัวอย่างนี้ จำนวนที่วาดไม่ใช่จำนวนขั้นต่ำ สีแดงคือ Write request เข้าสู่ฐานข้อมูล สีเขียวคือ Read result กลับสู่ Client; คำสั่ง SELECT วิ่งสวนทางกับผลลัพธ์ สีส้มคือ Replication และเส้นประสีน้ำเงินคือ Monitor / Control เส้นทางอ่านที่วาดเป็นตัวอย่าง ทั้งสอง Proxy ใช้กลุ่มโหนดตามบทบาทเดียวกัน เส้น Replication แสดงการแลกเปลี่ยน writeset ภายในกลุ่ม ไม่ใช่การส่งต่อแบบ chain replication
เอกสารอ้างอิง ↗Client เชื่อมต่อ PostgreSQL โดยตรง งานเขียนไป Primary เดียวและอ่านจาก Secondary ได้ตามการตั้งค่า ไม่มี proxy จัดการ failover อัตโนมัติ
Write = คำสั่งเขียนเข้า Database · Read = ผลลัพธ์ที่ส่งกลับ Client (คำสั่ง SELECT วิ่งเข้า Database ในทิศตรงข้าม)
Primary ส่ง WAL ไปยัง Secondary แบบ asynchronous งานเขียนและงานอ่านแยกตามบทบาท สมาชิกเส้นประเป็นส่วนขยายในตัวอย่าง
ภาพแสดง Primary 1, Secondary 1 และ Secondary เพิ่มเติม 1 โหนด เส้นประคือส่วนขยายที่เปิดใช้ในตัวอย่าง สีแดงคือ Write request เข้าสู่ฐานข้อมูล สีเขียวคือ Read result กลับสู่ Client; คำสั่ง SELECT วิ่งสวนทางกับผลลัพธ์ สีส้มคือ Replication และเส้นประสีน้ำเงินคือ Monitor / Control
เอกสารอ้างอิง ↗Client ส่ง SQL ผ่าน Pgpool-II ที่ active โดย Watchdog ประสานกับ proxy standby งานเขียนไป Primary และงานอ่านใช้ Secondary ได้ Pgpool-II ตรวจสุขภาพเพื่อจัดการ failover
Write = คำสั่งเขียนเข้า Database · Read = ผลลัพธ์ที่ส่งกลับ Client (คำสั่ง SELECT วิ่งเข้า Database ในทิศตรงข้าม)
Primary ส่ง WAL ไปยัง Secondary แบบ asynchronous งานเขียนและงานอ่านแยกตามบทบาท สมาชิกเส้นประเป็นส่วนขยายในตัวอย่าง
ภาพแสดง Pgpool-II active 1 และ standby เพิ่มเติม 2 โหนด พร้อมฐานข้อมูล 3 โหนด การทำสำเนา WAL เป็น asynchronous ไม่ใช่ Patroni สีแดงคือ Write request เข้าสู่ฐานข้อมูล สีเขียวคือ Read result กลับสู่ Client; คำสั่ง SELECT วิ่งสวนทางกับผลลัพธ์ สีส้มคือ Replication และเส้นประสีน้ำเงินคือ Monitor / Control
เอกสารอ้างอิง ↗แยก Write endpoint ไป Primary และ Read endpoint ไป Replica ผ่าน HAProxy โดยใช้ PgBouncer เป็น connection pool เพิ่มเติม Patroni จัดการบทบาทร่วมกับ etcd quorum ส่วน WAL ส่งตรงระหว่าง PostgreSQL
Write = คำสั่งเขียนเข้า Database · Read = ผลลัพธ์ที่ส่งกลับ Client (คำสั่ง SELECT วิ่งเข้า Database ในทิศตรงข้าม)
HAProxy ส่ง Write ไป Node 2 ที่ถือ leader lock งานอ่านใช้ Replica; PgBouncer ลดจำนวน connection และ WAL วิ่งจาก Primary ไป Replica โดยตรง
ภาพอ้างอิงแสดง PostgreSQL 3 โหนดและ Replica ที่ขยายเพิ่มได้ พร้อม etcd 3 โหนด; PgBouncer และ VIP เป็นตัวเลือก HAProxy ตรวจบทบาทผ่าน Patroni; etcd ไม่เก็บ SQL หรือ WAL ระบบนี้แยกจาก CloudNativePG สีแดงคือ Write request เข้าสู่ฐานข้อมูล สีเขียวคือ Read result กลับสู่ Client; คำสั่ง SELECT วิ่งสวนทางกับผลลัพธ์ สีส้มคือ Replication และเส้นประสีน้ำเงินคือ Monitor / Control
เอกสารอ้างอิง ↗Driver ค้นหาสมาชิก replica set และส่งเขียนไป Primary งานอ่านใช้ Primary ตามค่าเริ่มต้นหรือ Secondary ตาม read preference ไม่มี proxy แยกต่างหาก
Write = คำสั่งเขียนเข้า Database · Read = ผลลัพธ์ที่ส่งกลับ Client (คำสั่ง SELECT วิ่งเข้า Database ในทิศตรงข้าม)
Primary บันทึกการเปลี่ยนแปลงใน oplog และส่งต่อแบบ asynchronous ไป Secondary ทั้งสอง Driver เลือกปลายทางตามบทบาท
ตัวอย่างสมาชิกที่เก็บข้อมูล 3 โหนด ต้องมีเสียงข้างมากเพื่อเลือก Primary เวลา election ไม่ใช่ SLA และ Secondary อาจมีข้อมูลช้ากว่า Primary สีแดงคือ Write request เข้าสู่ฐานข้อมูล สีเขียวคือ Read result กลับสู่ Client; คำสั่ง SELECT วิ่งสวนทางกับผลลัพธ์ สีส้มคือ Replication และเส้นประสีน้ำเงินคือ Monitor / Control
เอกสารอ้างอิง ↗Client ที่รองรับ Redis Cluster ส่งคำสั่งตรงไป Primary เจ้าของ hash slot แต่ละ Primary มี Replica หนึ่งโหนด ไม่มี proxy และไม่มี Sentinel ในโครงสร้างนี้
Write = คำสั่งเขียนเข้า Database · Read = ผลลัพธ์ที่ส่งกลับ Client (คำสั่ง SELECT วิ่งเข้า Database ในทิศตรงข้าม)
ข้อมูลแบ่งเป็นสาม shard ทุก Primary รับเขียนเฉพาะ slot ที่ตนรับผิดชอบและส่งสำเนาให้ Replica ของตน
3 Primary + 3 Replica รวม 6 โหนด ขยายเป็นคู่พร้อม reshard การทำสำเนา asynchronous จึงมีโอกาสสูญเสียงานเขียนบางส่วนขณะ failover สีแดงคือ Write request เข้าสู่ฐานข้อมูล สีเขียวคือ Read result กลับสู่ Client; คำสั่ง SELECT วิ่งสวนทางกับผลลัพธ์ สีส้มคือ Replication และเส้นประสีน้ำเงินคือ Monitor / Control
เอกสารอ้างอิง ↗SDK ใช้แผนที่ vBucket เพื่อเข้าถึงโหนดเจ้าของข้อมูลโดยตรง แต่ละโหนดเก็บ active และ replica vBucket การเพิ่มหรือลดโหนดใช้ rebalance ไม่มี proxy แยกต่างหาก
Write = คำสั่งเขียนเข้า Database · Read = ผลลัพธ์ที่ส่งกลับ Client (คำสั่ง SELECT วิ่งเข้า Database ในทิศตรงข้าม)
SDK ส่งงานตาม vBucket map และข้อมูลสำเนาอยู่บนสมาชิกอื่น ลูกศรแสดงตัวอย่างการกระจาย ไม่ใช่สำเนาฐานข้อมูลเต็มชุดทุกโหนด
คงภาพอ้างอิงที่มี 2 โหนดทึบและ 2 โหนดเส้นประเพื่อสื่อการขยาย ไม่ได้หมายถึงเริ่มใช้งานด้วย 2 โหนด ค่าเริ่มต้นของแพ็กเกจคือ 3 โหนด ตัวอย่างนี้เปิดใช้ครบ 4 โหนดและต้องตั้ง replica / failover ให้เหมาะสม สีแดงคือ Write request เข้าสู่ฐานข้อมูล สีเขียวคือ Read result กลับสู่ Client; คำสั่ง SELECT วิ่งสวนทางกับผลลัพธ์ สีส้มคือ Replication และเส้นประสีน้ำเงินคือ Monitor / Control
เอกสารอ้างอิง ↗Beats ส่งข้อมูลผ่าน Logstash เข้า OpenSearch ส่วน Dashboards ค้นหาและแสดงผล ตัวอย่างขยายชั้น OpenSearch เป็น 3 โหนดเพื่ออธิบาย shard recovery ไม่ใช่จำนวนขั้นต่ำของแพ็กเกจ
Write = คำสั่งเขียนเข้า Database · Read = ผลลัพธ์ที่ส่งกลับ Client (คำสั่ง SELECT วิ่งเข้า Database ในทิศตรงข้าม)
Logstash ส่งข้อมูลเข้าคลัสเตอร์ Dashboards อ่านผลค้นหา shard A มี Primary บนโหนด 1 และ Replica บนโหนด 2 ส่วนโหนด 3 รองรับ shard อื่น
รักษาลำดับ Beats → Logstash → OpenSearch ← Dashboards ตามภาพอ้างอิง Logstash และ Dashboards เป็นส่วนเสริม ตำแหน่ง shard A เป็นตัวอย่าง ไม่ใช่ Primary กลางของทั้งฐานข้อมูล สีแดงคือ Write request เข้าสู่ฐานข้อมูล สีเขียวคือ Read result กลับสู่ Client; คำสั่ง SELECT วิ่งสวนทางกับผลลัพธ์ สีส้มคือ Replication และเส้นประสีน้ำเงินคือ Monitor / Control
เอกสารอ้างอิง ↗Failover อัตโนมัติขึ้นกับ Mode, Quorum และการตั้งค่า โดย MySQL / MariaDB / Percona แบบ Primary–Secondary และ PostgreSQL แบบ Standard ต้องมีขั้นตอน Promote และเปลี่ยนเส้นทางโดยผู้ดูแล
AVAILABILITY + RECOVERABILITY
Replication ช่วยให้มีสำเนาที่พร้อมใช้งาน ส่วน Backup ช่วยย้อนกลับก่อนข้อมูลถูกลบหรือแก้ผิด องค์กรต้องวางทั้งสองส่วนให้ทำงานร่วมกัน
เลือก Async, Streaming หรือ Quorum-based replication ตาม Engine และข้อกำหนดด้าน Latency, Consistency และ RPO
ตรวจ Candidate, Quorum และการแยก Primary เดิม ก่อนเปิดเส้นทางเขียนใหม่ พร้อมทดสอบ Reconnect และ Retry จาก Client
กำหนด Retention, Recovery Point และ Restore Drill สำรองข้อมูลแยกจาก Cluster และตรวจว่ากู้ข้อมูลกลับมาใช้งานได้จริง
Node กลับมาออนไลน์ → ตรวจ Timeline / Log → Catch-up หรือ Rebuild → ตรวจความพร้อม → คืน Traffic
RUK-COM / DATABASE OPERATIONS
กำหนดขอบเขตการดูแลและ SLA ให้ตรงความสำคัญของระบบ ตั้งแต่ Performance จนถึง Incident Response และแผน Recovery
ติดตาม Query latency, Connection, Replication lag, Slow query, Disk และผล Backup เพื่อให้ทีมเห็นปัญหาก่อนกระทบบริการ
วาง Read Replica, Connection Pool และการขยาย Storage ตาม Engine พร้อมประเมิน IOPS, WAL / Binlog และพื้นที่เผื่อ Recovery
ออกแบบ Private Network, TLS และสิทธิ์ตามหน้าที่ พร้อมจัดการ Secret, Patch และ Audit ตามนโยบายขององค์กร
ทีมผู้เชี่ยวชาญช่วยวิเคราะห์ตั้งแต่ Client connection และ Query ไปจนถึง Proxy, Replication และ Infrastructure
ทดสอบ Switchover, Failover, Restore และ Rollback ก่อนเปลี่ยน Production เก็บ Runbook และผลการทดสอบให้ทีมใช้งานต่อได้
Agent ช่วยสรุปสัญญาณผิดปกติและจัดลำดับตรวจสอบ โดยการเข้าถึงข้อมูลและการเปลี่ยนระบบอยู่ภายใต้สิทธิ์และขั้นตอนที่ตกลง
ASSESS / MIGRATE / OPERATE
ตรวจ Engine, Version, ขนาดข้อมูล, Extension และ RPO / RTO
เลือก Topology และซ้อมย้ายด้วยข้อมูลที่ได้รับอนุญาต
ตรวจความครบถ้วน กำหนด Write Freeze และ Rollback ตามวิธีย้าย
ส่งมอบ Runbook, Monitoring และแผน Backup / Capacity
BEFORE YOU DEPLOY
ต้องมีครับ การลบข้อมูลหรือแก้ไขผิดอาจถูก Replicate ไปทุกสำเนา ควรมี Backup แยก Retention ที่เหมาะสม และทดสอบ Restore เป็นระยะ
ไม่ใช่ทุก Mode ครับ บางแบบอาศัย Quorum และระบบตรวจสอบ บางแบบต้อง Promote โดยผู้ดูแล โดยเฉพาะ MySQL-family Primary–Secondary และ PostgreSQL Standard ตาม Reference นี้
ต้องตรวจความสอดคล้องและตามข้อมูลให้ทันก่อน อาจใช้ Binlog, WAL, Oplog, IST / SST หรือ Rebuild ตาม Engine และประวัติข้อมูลที่ยังมีอยู่
กำหนดเป็นรายระบบจาก Sync Policy, ขนาดข้อมูล, Network, Backup และวิธี Recovery แล้วทดสอบก่อนตกลง SLA ไม่ใช้ตัวเลขเดียวกับทุก Engine
แจ้ง Engine / Version, ขนาดข้อมูล, Workload อ่านเขียน, Peak connection, Extension และข้อกำหนดด้าน Security พร้อมช่วงเวลาที่สะดวกในการย้าย
YOUR DATA / OUR EXPERTISE
คุย Architecture, Migration และขอบเขต Managed Service กับทีม Ruk-Com