0Pricing
SQL Academy · บทเรียน

การสลับระบบสำรองและการเลือกผู้นำ (Patroni, Stolon)

ใช้ Patroni หรือ Stolon เพื่อสลับระบบสำรองโดยอัตโนมัติ และกำหนดโควรัมเพื่อป้องกันภาวะผู้นำแยกเป็นสองฝั่ง

การสลับระบบสำรองและการเลือกผู้นำ (Patroni, Stolon) เป็นบทเรียน SQL Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน SQL Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดจึงต้องเปลี่ยนระบบอัตโนมัติเมื่อเกิดข้อขัดข้อง

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

ขั้นตอนการเปลี่ยนระบบเมื่อเกิดข้อขัดข้อง

สิ่งที่ต้องเกิดขึ้นมีดังนี้:

  1. ตรวจจับว่าเซิร์ฟเวอร์หลักหยุดทำงานแล้ว โดยใช้การตรวจสอบสถานะและฉันทามติ
  2. เลือกแบบจำลองที่มี WAL ล่าสุดมากที่สุด
  3. เลื่อนแบบจำลองขึ้นมาเป็นเซิร์ฟเวอร์หลัก (pg_promote / pg_ctl promote)
  4. กำหนดค่าแบบจำลองอื่นให้ติดตามเซิร์ฟเวอร์หลักใหม่
  5. อัปเดตเส้นทางการเชื่อมต่อของแอปพลิเคชัน

ความเสี่ยงจากสมองแยก

หากเครือข่ายถูกแบ่งส่วน คุณอาจเลื่อนแบบจำลองขึ้นมาในขณะที่เซิร์ฟเวอร์หลักเดิมยังทำงานอยู่ เซิร์ฟเวอร์หลักสองตัวจะทำให้เกิดการเขียนที่ขัดแย้งกันและข้อมูลเสียหาย หลีกเลี่ยงปัญหานี้ด้วยโควรัม

Patroni

ดีมอนที่เขียนด้วย Python ซึ่งใช้ DCS ภายนอก (ที่เก็บการกำหนดค่าแบบกระจาย) โดยทั่วไปคือ etcd, Consul หรือ Zookeeper เพื่อเลือกผู้นำ:

# patroni.yml
name: pg1
scope: my_cluster
etcd:
  hosts: 10.0.0.10:2379,10.0.0.11:2379,10.0.0.12:2379
postgresql:
  data_dir: /var/lib/postgresql/data

วิธีที่ Patroni เลือกผู้นำคนใหม่

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

Stolon

ทางเลือกที่พัฒนาด้วย Go ใช้รูปแบบฉันทามติที่คล้ายกัน แต่มีลักษณะการปฏิบัติงานแตกต่างกัน โดยแบ่งหน้าที่ระหว่างองค์ประกอบ sentinel, keeper และ proxy

repmgr

เครื่องมือจาก 2ndQuadrant ที่มีน้ำหนักเบากว่า ทำงานอัตโนมัติน้อยกว่าแต่ควบคุมด้วยตนเองได้มากกว่า เหมาะกับการติดตั้งขนาดเล็ก

การเปลี่ยนระบบอัตโนมัติบนบริการคลาวด์

RDS, Cloud SQL และ Aurora จัดการการเปลี่ยนระบบเมื่อเกิดข้อขัดข้องให้คุณ แลกความยืดหยุ่นกับความเรียบง่ายในการปฏิบัติงาน

การกำหนดเส้นทางการเชื่อมต่อหลังเกิดข้อขัดข้อง

แอปต้องทราบว่าเซิร์ฟเวอร์หลักใหม่อยู่ที่ใด ตัวเลือกมีดังนี้:

  • อัปเดต DNS ซึ่งช้าเนื่องจาก TTL
  • ใช้ IP ลอยที่เครื่องมือเปลี่ยนระบบเป็นผู้จัดการ
  • ใช้ชั้นพร็อกซี: HAProxy, pgbouncer + สคริปต์ หรือปลายทาง AWS RDS

การจำลองข้อมูลแบบพร้อมกันและการเปลี่ยนระบบ

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

โควรัม

สำหรับการจำลองข้อมูลแบบพร้อมกัน ให้กำหนด synchronous_standby_names ด้วยโควรัม: แบบจำลอง 2 จาก 3 ต้องยืนยัน ทนต่อแบบจำลองที่ช้าหรือขัดข้องหนึ่งตัวได้โดยไม่ทำให้การยืนยันธุรกรรมหยุดชะงัก

synchronous_standby_names = 'ANY 2 (replica1, replica2, replica3)'

อ่านข้อมูลที่เพิ่งเขียน

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

การทดสอบการเปลี่ยนระบบ

ทดสอบก่อนที่จะจำเป็นต้องใช้จริง หยุดเซิร์ฟเวอร์หลักในสภาพแวดล้อมทดสอบเดือนละครั้ง ฝึกทำตามคู่มือปฏิบัติ เหตุการณ์เปลี่ยนระบบจริงก็มีความกดดันมากพออยู่แล้ว อย่าเพิ่มความประหลาดใจเข้าไปอีก

สรุป

การเปลี่ยนระบบอัตโนมัติช่วยนำมนุษย์ออกจากเส้นทางสำคัญ

  • ใช้ Patroni / Stolon สำหรับระบบที่จัดการเอง
  • ใช้ RDS / Cloud SQL สำหรับระบบที่มีผู้ให้บริการจัดการ
  • ระวังสมองแยก ใช้โควรัม
  • ฝึกการเปลี่ยนระบบเป็นประจำ

ตรวจสอบความเข้าใจ

"สมองแยก" ในบริบทของการจำลองข้อมูล PostgreSQL คืออะไร

คำถามที่พบบ่อย

บทเรียน “การสลับระบบสำรองและการเลือกผู้นำ (Patroni, Stolon)” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การสลับระบบสำรองและการเลือกผู้นำ (Patroni, Stolon)” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส SQL Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การสลับระบบสำรองและการเลือกผู้นำ (Patroni, Stolon)”

ใช้ Patroni หรือ Stolon เพื่อสลับระบบสำรองโดยอัตโนมัติ และกำหนดโควรัมเพื่อป้องกันภาวะผู้นำแยกเป็นสองฝั่ง คุณปฏิบัติ SQL Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน SQL Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน SQL Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การสลับระบบสำรองและการเลือกผู้นำ (Patroni, Stolon)” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน SQL Academy นี้ได้ไหม

ได้ บทเรียน SQL Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การจำลองแบบสตรีมมิงและ WAL
  2. การจำลองแบบเชิงตรรกะสำหรับการแบ่งข้อมูล
  3. การสลับระบบสำรองและการเลือกผู้นำ (Patroni, Stolon)
  4. แบบจำลองสำหรับอ่านและการกำหนดเส้นทางการเชื่อมต่อ
← กลับไปที่ SQL Academy