การกู้คืนฐานข้อมูล Postgres: pg_restore -vs- เพียงแค่ใช้ psql


16

ฉันกำลังทิ้งฐานข้อมูล Postgres ของฉันโดยใช้pg_dump (ในรูปแบบข้อความล้วน) แล้วกู้คืนได้อย่างง่ายดายโดยใช้psql (พร้อม-fตัวเลือก)

คำถามใดที่ฉันถามว่า: ฉันหายไปโดยไม่ใช้pg_restoreซึ่งดูเหมือนว่าเป็นเครื่องมือกู้คืนแบบพิเศษ (เทียบกับทั่วไปpsql)?

ฉันสามารถควบคุมตัวเลือกต่าง ๆ เช่นการปิดใช้งานทริกเกอร์และเช่นนั้นโดยใช้pg_dumpพารามิเตอร์ ถ้าเช่นนั้นจะpg_restoreใช้ทำอะไร รูปแบบการถ่ายโอนข้อมูลที่ไม่ใช่ข้อความธรรมดา?


4
จากคู่มือ : " pg_restore เป็นเครื่องมือสำหรับการกู้คืนฐานข้อมูล PostgreSQL จากไฟล์เก็บถาวรที่สร้างโดย pg_dump ในรูปแบบที่ไม่ใช่ข้อความธรรมดา "
a_horse_with_no_name

คำตอบ:


19

ถ้าคุณสร้างการถ่ายโอนข้อมูล SQL รูปแบบทั้งหมดที่คุณสามารถpsqlใช้เป็น

ถ้าคุณสร้างที่กำหนดเองรูปแบบ ( pg_dump -Fc) หรือไดเรกทอรีรูปแบบ ( pg_dump -Fd) pg_restoreการถ่ายโอนข้อมูลที่คุณสามารถและการใช้งานที่ต้อง

การทิ้งรูปแบบที่กำหนดเองและไดเรกทอรีมีข้อดีมากกว่าการทิ้งสคริปต์ SQL แบบธรรมดาและฉันใช้มันโดยเฉพาะ คุณสามารถเลือกคืนค่าบางตาราง / schema เท่านั้นสามารถเลือกว่าจะรวมเฉพาะ schema ข้อมูลเท่านั้นหรือทั้งสองอย่างในเวลาคืนค่า ฯลฯ ตัวเลือกมากมายที่คุณต้องระบุในpg_dumpเวลานั้นด้วยการทิ้งรูปแบบ SQL สามารถเลือกได้ที่restore- เวลาpg_restoreถ้าคุณใช้การถ่ายโอนข้อมูลที่กำหนดเองและรูปแบบ

ถ้ามันไม่ได้สำหรับความเข้ากันได้ย้อนหลังฉันแน่ใจว่าเริ่มต้นสำหรับการpg_dumpจะเป็น-Fcรูปแบบ (กำหนดเอง)

คุณไม่สามารถแปลงดัมพ์ของรูปแบบ SQL เป็นรูปแบบกำหนดเองหรือรูปแบบไดเร็กทอรีโดยไม่กู้คืนไปยังฐานข้อมูล PostgreSQL แล้วทำการดัมพ์ DB ที่กู้คืนแล้ว


เป็นไปได้ไหมที่จะมีการเปลี่ยนชื่อฟังก์ชั่นและทำการจัดการข้อมูลอย่างที่คุณสามารถทำได้ในไฟล์ sql ที่มี regexp ที่ดี?
velop

1
ไม่ แต่คุณสามารถpg_restoreไม่มีdbnameอาร์กิวเมนต์เพื่อเปลี่ยนเป็นดัมพ์รูปแบบ SQL หากคุณต้องการ คุณไม่สามารถย้อนกลับได้
Craig Ringer

@ CraigRinger มีความแตกต่างของความเร็วในการใช้ psql กับการใช้ pg_dump สำหรับการกู้คืนหรือไม่?
Nikunj Sardhara

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