การจำลองแบบเชิงตรรกะสำหรับการแบ่งข้อมูล
ใช้การจำลองแบบเชิงตรรกะแบบ PUBLICATION/SUBSCRIPTION เพื่อย้ายตารางระหว่างคลัสเตอร์และรองรับการอัปเกรดรุ่นใหญ่
การจำลองแบบเชิงตรรกะสำหรับการแบ่งข้อมูล เป็นบทเรียน SQL Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน SQL Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน
การจำลองข้อมูลแบบตรรกะเทียบกับแบบกายภาพ
แบบกายภาพจำลอง BYTES ของ WAL ซึ่งครอบคลุมทั้งคลัสเตอร์และต้องใช้เวอร์ชันเดียวกัน ส่วนแบบ ตรรกะจำลอง ROWS ของตารางที่เลือก และอาจทำงานข้ามเวอร์ชัน PG ได้:
- สมัครรับข้อมูลเฉพาะตารางที่ต้องการ
- จำลองจาก PG 14 → PG 16 เพื่ออัปเกรด
- ทำงานสองทางหรือแบบหลายเซิร์ฟเวอร์หลักได้เมื่อกำหนดค่าอย่างระมัดระวัง
- อนุญาตให้ใช้โครงสร้างสคีมาที่แตกต่างกัน
การตั้งค่า: ผู้เผยแพร่
กำหนดให้เซิร์ฟเวอร์หลักเป็นผู้เผยแพร่:
-- postgresql.conf
wal_level = logical
-- Create a publication:
CREATE PUBLICATION pub_orders FOR TABLE orders, order_items;
-- Or all tables in the database:
CREATE PUBLICATION pub_all FOR ALL TABLES;การตั้งค่า: ผู้สมัครรับข้อมูล
บนฐานข้อมูลปลายทาง:
CREATE SUBSCRIPTION sub_orders
CONNECTION 'host=primary port=5432 user=repl dbname=mydb'
PUBLICATION pub_orders;การซิงค์ครั้งแรก
การสมัครรับข้อมูลจะคัดลอกตารางที่ตรงกันทั้งหมดในครั้งแรก จากนั้นจึงสตรีมการเปลี่ยนแปลง สคีมาของปลายทางต้องตรงกับต้นทาง
กรณีใช้งาน: อัปเกรดเวอร์ชันหลัก
การจำลองข้อมูลแบบตรรกะเป็นวิธีสมัยใหม่ในการอัปเกรด PostgreSQL โดยมีเวลาหยุดทำงานน้อยที่สุด:
- สร้างคลัสเตอร์ PG16
- จำลองข้อมูลแบบตรรกะจาก PG14 ไปยัง PG16
- เปลี่ยนเส้นทางแอปเมื่อ PG16 ตามข้อมูลทันแล้ว
- ปิด PG14
กรณีใช้งาน: แยกฐานข้อมูล
หากต้องการแยกฐานข้อมูลขนาดใหญ่ออกเป็นฐานข้อมูลขนาดเล็กหลายฐาน:
- เผยแพร่เฉพาะตารางที่บริการใหม่ต้องใช้
- สมัครรับข้อมูลในฐานข้อมูลใหม่
- ย้ายการเขียนข้อมูลหลังจากข้อมูลตามทันแล้ว
กรณีใช้งาน: แบบจำลองที่มีโครงสร้างต่างกัน
จำลองข้อมูลไปยังแบบจำลองสำหรับอ่านที่มีดัชนีแตกต่างกัน หรือไปยัง PostgreSQL ในคลังข้อมูลที่มีคอลัมน์สำหรับรายงานเพิ่มเติม
ข้อขัดแย้ง
การจำลองข้อมูลแบบตรรกะไม่แก้ข้อขัดแย้งโดยอัตโนมัติ หากมีการอัปเดตแถวเดียวกันทั้งสองฝั่ง ผู้สมัครรับข้อมูลจะหยุดทำงานพร้อมข้อผิดพลาด หลีกเลี่ยงปัญหานี้โดย:
- เขียนข้อมูลเพียงฝั่งเดียว
- ใช้ REPLICA IDENTITY FULL เพื่อวินิจฉัยได้ดีขึ้น
- แก้ข้อขัดแย้งด้วยตนเอง แล้วเริ่มการสมัครรับข้อมูลใหม่
การเปลี่ยนแปลงสคีมา
DDL จะไม่ถูกจำลอง ต้องใช้การเปลี่ยนแปลงสคีมาด้วยตนเองทั้งสองฝั่ง โดยทั่วไปให้ทำฝั่งผู้สมัครรับข้อมูลก่อน แล้วจึงทำฝั่งผู้เผยแพร่ หรือใช้ส่วนขยาย pglogical ซึ่งสามารถจำลอง DDL ได้
การจำลองข้อมูลบางส่วน
PG รุ่นปัจจุบันอนุญาตให้กำหนดตัวกรองแถวและรายการคอลัมน์แยกตามสิ่งพิมพ์ได้:
CREATE PUBLICATION us_only FOR TABLE customers
WHERE (country = 'US');
CREATE PUBLICATION compact FOR TABLE users (id, email);การแบ่งชาร์ดด้วยการจำลองข้อมูลแบบตรรกะ
ย้ายผู้เช่าไปยังชาร์ดเฉพาะ:
- สร้างสิ่งพิมพ์บนต้นทางโดยกรองให้เหลือผู้เช่ารายเดียว
- สมัครรับข้อมูลจากปลายทาง
- เปลี่ยนแอปให้ใช้ชาร์ดใหม่
- ลบข้อมูลของผู้เช่าออกจากต้นทาง
ประสิทธิภาพและความล่าช้า
การจำลองข้อมูลแบบตรรกะทำงานแบบเธรดเดียวต่อการสมัครรับข้อมูลเป็นหลัก แหล่งข้อมูลที่มีปริมาณสูงอาจได้รับประโยชน์จากสิ่งพิมพ์หรือการสมัครรับข้อมูลหลายชุด หรือเครื่องมือจากผู้พัฒนาภายนอก เช่น pglogical / Debezium
สรุป
การจำลองข้อมูลแบบตรรกะทำให้สามารถสตรีมข้อมูลในระดับแถวได้
- ทำงานข้ามเวอร์ชันและเลือกจำลองเพียงบางตารางได้
- อัปเกรดเวอร์ชันหลักโดยมีเวลาหยุดทำงานน้อยที่สุด
- การแก้ข้อขัดแย้งเป็นหน้าที่ของ YOUR
- DDL จะไม่ถูกจำลอง
ตรวจสอบความเข้าใจ
คุณต้องอัปเกรดจาก PostgreSQL 14 เป็น 16 โดยมีเวลาหยุดทำงานน้อยที่สุด ควรใช้การจำลองข้อมูลแบบใด
คำถามที่พบบ่อย
บทเรียน “การจำลองแบบเชิงตรรกะสำหรับการแบ่งข้อมูล” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การจำลองแบบเชิงตรรกะสำหรับการแบ่งข้อมูล” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส SQL Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การจำลองแบบเชิงตรรกะสำหรับการแบ่งข้อมูล”
ใช้การจำลองแบบเชิงตรรกะแบบ PUBLICATION/SUBSCRIPTION เพื่อย้ายตารางระหว่างคลัสเตอร์และรองรับการอัปเกรดรุ่นใหญ่ คุณปฏิบัติ SQL Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน SQL Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน SQL Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การจำลองแบบเชิงตรรกะสำหรับการแบ่งข้อมูล” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน SQL Academy นี้ได้ไหม
ได้ บทเรียน SQL Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การจำลองแบบสตรีมมิงและ WAL
- การจำลองแบบเชิงตรรกะสำหรับการแบ่งข้อมูล
- การสลับระบบสำรองและการเลือกผู้นำ (Patroni, Stolon)
- แบบจำลองสำหรับอ่านและการกำหนดเส้นทางการเชื่อมต่อ