PostgreSQL 9.1 Streaming Replication ไม่ล่าช้าโดยไม่มีการเก็บถาวร WAL หรือไม่


16

บริบท:

สมมติว่าขณะใช้ Streaming Replication / Hot Standby บนคลัสเตอร์ Postgres 9.1 โหนดสแตนด์บายจะหยุดทำงาน มันค้างอยู่หนึ่งวันในช่วงเวลานั้น DML จำนวนมากจะเกิดขึ้นกับต้นแบบ recovery.conf ของสแตนด์บายไม่มีรายการ 'restore_command' (สำหรับการกู้คืนจากไฟล์เจอร์นัล WAL) แต่ไม่มีสตริง 'primary_conninfo' (สำหรับการสตรีมมิ่งการจำลองแบบ)

คำถาม:

ถ้าฉันเริ่มต้นสแตนด์บายอีกครั้งหลังจากวันของการเปลี่ยนแปลงต้นแบบ มันจะ "ทัน" (ในที่สุดจะเข้าสู่สถานะที่สะท้อนต้นแบบ) โดยใช้การจำลองแบบการสตรีมเท่านั้นหรือไม่ หรือฉันต้องเปิดใช้งานการเก็บถาวรไฟล์ WAL และปล่อยให้มันใช้ไฟล์ที่เก็บถาวรในช่วงที่ไฟดับเพื่อให้แน่ใจว่าสกุลเงิน?

ฉันได้ตรวจสอบเอกสารการจำลองแบบ WAL การเก็บถาวร / การสตรีมมิงที่นี่แล้วและมันบอกว่าคุณไม่ต้องเปิดใช้งานทั้งการเก็บถาวร WAL และการจำลองแบบสตรีมมิ่ง แต่ก็ไม่มีความชัดเจนว่าจะเกิดขึ้นหรือไม่

ขอบคุณ!

คำตอบ:


9

ใช่มันจะใช้การสตรีมเท่านั้นหาก (และเฉพาะในกรณีที่)จำนวนเซ็กเมนต์ WAL ที่สร้างขึ้นตั้งแต่การอัพเดตล่าสุดบนสแตนด์บายน้อยกว่าค่าของ wal_keep_segments ใน postgresql.conf สิ่งนี้ครอบคลุมอยู่ในเอกสารส่วนนี้: การจำลองแบบ


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

0

ที่โหนดสแตนด์บายคุณสามารถตั้งค่า restore_command บน recovery.conf แล้วคัดลอกไฟล์ pg_xlog masters (ซึ่งหายไปในโหมดสแตนด์บาย) ไปยังโฟลเดอร์ที่จุด restore_command คุณสามารถค้นหาไฟล์ xlog ที่หายไปโดยเริ่มต้นโหนดเริ่มต้นและพิมพ์

ps aux | grep postgres

คุณจะเห็น "กำลังรอ 000000020000005200000025" หรืออะไรทำนองนี้ที่บอกคุณว่า pg_xlog ใดที่คุณควรเริ่มการคัดลอกจากต้นแบบไปยังเส้นทาง restore_command ของสแตนด์บาย

หากคุณเปิดใช้งาน wal_archiving จะเป็นการเริ่มเก็บถาวรจากช่วงเวลาที่คุณตั้งค่า


ฉันเข้าใจว่าการใช้การเก็บถาวร WAL แบบอิงไฟล์และการให้ restore_command สแตนด์บายสำหรับการโหลดไฟล์ WAL ฉันสามารถมั่นใจได้ว่ามันจะทัน แต่นั่นไม่ใช่คำถามของฉัน ฉันต้องการทราบว่าสแตนด์บายจะทันหรือไม่ถ้าฉันใช้การจำลองแบบการสตรีมเท่านั้น (ไม่มีการจัดส่งไฟล์ WAL เพียงสตรีมการจำลองแบบตามที่ระบุใน 'primary_conninfo')
Zac B

ไม่ postgres ไม่ทำเช่นนั้น คุณควรคัดลอกไฟล์บันทึกหากมีความล่าช้าในการจำลองแบบของคุณ
sftsz

0

ไม่ฉันตั้งค่าอินสแตนซ์ของการจำลองแบบการสตรีมและหลุดออกจากการซิงค์อย่างใดฉันไม่สามารถทำให้มันทำงานได้อีกจนกว่าฉันจะทำคู่มือrsyncของเอกสาร WAL

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.