บน PostgreSQL v9.0 ฉันเป็นระบบเก็บถาวร WAL ที่ใช้งานได้ ดังนั้นไฟล์ WAL จะถูกเก็บถาวรตามกฎเกณฑ์ (เมื่อมีการสร้าง 3 WAL หรือหาก WAL มีอายุมากกว่า 15 นาที)
ตอนนี้ฉันเพิ่มไบนารีแพคเกจของไดเรกทอรี PG_DATA (ยกเว้นไดเรกทอรีย่อย pg_xlog) ต้องการทำเช่นนั้นฉันทำสำเนาไบนารีและpg_start_backup(),
pg_stop_backup()
ฉันคิดว่าฉันเข้าใจค่อนข้างดีว่าสิ่งที่ pg_start_backup และ pg_stop_backup กำลังทำอยู่คนแรกสร้างจุดตรวจและคนสุดท้ายทำให้แน่ใจว่าไฟล์ WAL สุดท้ายถูกเก็บถาวร
จากเอกสารอย่างเป็นทางการเราจะเห็นว่าสำหรับการคัดลอกข้อมูลไบนารีเราควร:
ดำเนินการสำรองข้อมูลโดยใช้เครื่องมือระบบไฟล์สำรองที่สะดวกสบายเช่น tar หรือ cpio (ไม่ใช่ pg_dump หรือ pg_dumpall) ไม่จำเป็นหรือไม่ต้องการหยุดการทำงานปกติของฐานข้อมูลในขณะที่คุณทำเช่นนี้
ดังนั้นฉันค่อนข้างงุนงง นี่หมายความว่าสามารถดำเนินการจุดตรวจได้ในขณะที่เราทำสำเนา ฉันเห็นเอกสารจำนวนมากที่ระบุว่าคำสั่งคัดลอกควรอนุญาตให้มีการเปลี่ยนแปลงข้อมูลในขณะที่ทำการคัดลอกฉันก็โอเคกับเรื่องนี้เพียงแค่หาเครื่องมือที่เหมาะสม แต่คำถามของฉันคือวิธีที่ postgreSQL จะจัดการการกู้คืนด้วยเนื้อหา pg_data ที่มีไฟล์บางไฟล์ที่ไม่สอดคล้องกัน (บางไฟล์มาจากจุดตรวจก่อนหน้า, บางหลังมาจากไหน)?
โดยการเล่นซ้ำบันทึกธุรกรรม Postgresql จะสามารถทำให้ไฟล์เหล่านี้อยู่ในสถานะที่ถูกต้องได้หรือไม่ ฉันเห็นว่าการสร้างตารางและการดำเนินการวางเป็นอันตรายในขณะที่ทำการสำรองข้อมูลมีการดำเนินการที่เป็นอันตรายเช่นคำสั่งสูญญากาศหรือไม่ pg_backup หยุดการทำงานของสูญญากาศชั่วคราวหรือไม่ ฉันควรทำสำเนาของไฟล์ global / pg_control ในตอนท้ายของตอนเริ่มกระบวนการคัดลอกไบนารี่หรือไม่? ฉันควรใช้ระบบไฟล์ที่เปิดใช้งาน snapshot (เช่นเดียวกับ xfs-freeze) เพื่อให้กระบวนการกู้คืนเร็วขึ้นหรือไม่
ฉันเห็นว่าการสำรองสคริปต์ผิดพลาดจะไม่เปิด pg_stop_backup โดยอัตโนมัติดังนั้นจึงมีโอกาสที่สถานะการสำรองข้อมูลของฉันจะใช้งานได้เป็นเวลานาน (จนกระทั่ง nagios ของฉันส่งเสียงเรียกคนที่ใดที่หนึ่งเพื่อแก้ไข ดังนั้นหากมีอะไรที่แตกต่างใน PostgreSQL ระหว่างสอง comands ฉันอยากจะรู้เพื่อทำความเข้าใจว่ามันอาจมีผลกระทบอะไร
โปรดบอกฉันที