จะทำการสำรองข้อมูลเพิ่มเติมทุก ๆ ชั่วโมงใน Postgres ได้อย่างไร


18

กำลังพยายามสำรองข้อมูลเพิ่มรายชั่วโมงของเซิร์ฟเวอร์ Postgres เดียว (Win7 64)

ฉันมีการตั้งค่าต่อไปนี้ในpostgresql.conf:

max_wal_senders = 2
wal_level       = archive
archive_mode    = on
archive_command = 'copy "%p" "c:\\postgres\\foo\\%f"'

(เริ่มต้นใหม่)

ฉันได้สำรองฐานกับ pg_basebackup -U postgres -D ..\foo -F t -x

ซึ่งทำให้base.tarไฟล์ขนาดใหญ่ในfooโฟลเดอร์และเพิ่มไฟล์ 16,384 KB ซึ่งผมถือว่าเป็น WAL

สิ่งที่ผมไม่เข้าใจคือทำไม Wals ในfooไม่เปลี่ยนแปลง การdata/pg_xlogเปลี่ยนแปลงใน WAL pg ไม่ควรคัดลอกไปหรือไม่ มันจะตัดสินใจอย่างไร

บางทีฉันต้องตั้งค่าarchive_timeout=3600?

ฉันเห็นหลายไซต์ (รายการส่งเมลของ pg, หน้า postgres ของ bacula) ที่บอกว่าคุณต้องโทรหา pg_start_backup () และ pg_stop_backup () แต่ฉันเชื่อว่าไม่จำเป็นต้องใช้ มันเป็นเรื่องจริงเหรอ?

คำถามรอง:

  1. WALs data/pg_xlogเขียนบ่อยแค่ไหน? อะไรเป็นสาเหตุของการเขียน

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

  2. ปฏิบัติที่ดีที่สุด? pg_basebackup สัปดาห์ละครั้งหรือไม่ เก็บถาวร WAL ไปยังเครื่องเดียวกันกับ PG หรือเครื่องระยะไกลหรือไม่

คำตอบ:


5

คุณต้องการสำรองข้อมูลเพิ่มเติมของโฟลเดอร์เก็บถาวรไปยังที่เก็บข้อมูลระยะไกล

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

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


ขอบคุณ คำถามสองสามข้อ: 1. ฉันจะทำ pg_start_backup () คัดลอกข้อมูลแล้วเรียกใช้ pg_stop_backup () หรือ pg_start_backup (); pg_stop_backup () แล้วคัดลอก?
Neil McGuigan

@Neil: 1. และ 2. ใช้ไม่ได้เมื่อคุณใช้pg_basebackupมันจะดูแลเรื่องนี้อยู่แล้ว 3. postgres จะลบไฟล์ WAL โดยอัตโนมัติpg_logเมื่อไม่ต้องการใช้อีกต่อไป pg_logคุณไม่ควรทำอะไรด้วยตนเอง มิฉะนั้นดูwal_keep_segmentsพารามิเตอร์
Daniel Vérité

โดยโฟลเดอร์ "เก็บถาวร" คุณหมายถึง pg_xlog ใช่ไหม
Neil McGuigan

@NeilMcGuigan: ไม่เลย โฟลเดอร์เก็บถาวรเป็นโฟลเดอร์ปลายทางของคำสั่งเก็บถาวรของคุณตัวอย่างเช่นที่นี่ "c: \ postgres \ foo" pg_xlogได้รับการจัดการทั้งหมดโดยอัตโนมัติโดย postgres ในขณะที่โฟลเดอร์เก็บถาวรได้รับการจัดการโดย DBA
Daniel Vérité

ผมคิดว่าผมกำลังสับสนเพราะ Wals ใน foo ไม่เคยเปลี่ยนหลังจากที่เริ่มต้น pg_basebackup
นีล McGuigan

8

มีเครื่องมือที่มีอยู่ที่จะช่วยให้คุณจัดการที่ดีเป็นWAL-E มันให้archive_commandและrestore_commandสำหรับ PITR ถึง S3

ขณะนี้ยังไม่มีคำสั่งที่ต้องทำเพิ่มขึ้นหรือค่าการสำรองข้อมูลเชิงตรรกะ pg_dumpไม่สามารถใช้ส่วนเพิ่มหรือส่วนต่างได้ วิธีเดียวในการทำเช่นนั้นคือผ่านการเก็บบันทึก

ในทางทฤษฎีคุณสามารถทำการสำรองข้อมูลเต็มรูปแบบใหม่ให้ทำไบนารีต่างระหว่างมันกับการสำรองข้อมูลล่าสุดและอัปโหลดต่าง สิ่งนี้ทำให้ฉันเป็นวิธีที่บอบบางและไม่มีประสิทธิภาพในการทำสิ่งต่าง ๆ และฉันก็ไม่แนะนำให้ทำ

นอกจากนี้ PgBarman ยังรองรับการรวมกับ S3 ผ่านทาง hook script และจะทำการสำรองและการจัดการสำรองให้คุณโดยอัตโนมัติ อีกครั้งนี่อาจไม่ใช่ตัวเลือกใน Windows

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