วิธีการกู้คืนฐานข้อมูล PostgreSQL จากไฟล์. tar


20

ฉันมีฐานข้อมูล PostgreSQL ทั้งหมดสำรองระหว่างการสำรองข้อมูลส่วนเพิ่มโดยใช้ WHM ซึ่งสร้าง $ dbName ไฟล์tar

ข้อมูลถูกเก็บไว้ในไฟล์. tar เหล่านี้ แต่ฉันไม่ทราบวิธีการกู้คืนกลับไปยังฐานข้อมูลแต่ละรายการผ่าน SSH โดยเฉพาะตำแหน่งไฟล์

ฉันได้ใช้:

pg_restore -d client03 /backup/cpbackup/daily/client03/psql/client03.tar

ซึ่งสร้างข้อผิดพลาด 'ไม่สามารถเปิดไฟล์อินพุต: ปฏิเสธการอนุญาต'

ความช่วยเหลือใด ๆ ชื่นชม


ผู้ใช้ที่คุณใช้คำสั่งนี้มีสิทธิ์เข้าถึงไฟล์นั้นหรือไม่?
เสื่อ

สวัสดี Mat คุณคิดอย่างนั้น (ทำงานเป็นรูท) แต่เพิ่งแก้ไขปัญหาหลังจากการรวมหลาย ๆ ชุดและย้ายไฟล์. tar แบบดิบไปยัง tmp .... pg_restore -c -i -U postgres -d client03 -v "/tmp/client03.tar" -W -W ท้ายคือกลอุบายหลักที่บังคับให้ใส่รหัสผ่านตามที่ต้องการซึ่งทำให้ทุกอย่างกลับคืนมาพร้อมกัน
สตีเฟ่น

คำตอบ:


24

พบสตริงของรหัสที่ถูกต้องในกรณีที่มีคนอื่นพบกระทู้นี้

pg_restore -c -i -U postgres -d client03 -v "/tmp/client03.tar" -W

การพังทลายมาจากhttp://www.postgresql.org/docs/7.3/static/app-pgrestore.htmlรวมถึงการลองผิดลองถูก

เป็นหลัก ...

-c to clean the database
-i to ignore any database version checks
-U to force a user
-d to select the database
-v verbose mode, don't know why
"$$" the location of the files to import in tmp to get around permission issues
-W to force asking for the password to the user (postgres)

หวังว่าข้างต้นจะช่วยคนอื่น


ทำอย่างไรกับ tar.gz
eri

2

เมื่อใช้ PgAdmin III เพื่อทำการกู้คืนสำหรับฉันมันทำงานได้อย่างไร้ที่ติโดยใช้คำสั่งต่อไปนี้ซึ่งสร้างขึ้นเอง:

pg_restore --host localhost --port 5432 --username "my_user_name" --dbname "my_db_name" --role "my_user_name" --no-password  --verbose "/Users/me/Desktop/backup_file.tar"

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


1

ฉันไม่แน่ใจว่าสามารถนำเข้าไฟล์. tar ได้หรือไม่ ฉันจะทำ

tar -zxvf client03.tar 

เพื่อแยกสิ่งที่อยู่ในไฟล์และลอง pg_restore อีกครั้ง ฉันรู้ว่า pg_restore ทำงานได้เนื่องจากเรามีวิธีการกู้คืนเดียวกันจากการกู้คืนโลหะเปลือย


1
สวัสดีสตีเฟ่นใช่เห็นได้ชัดว่ามันสามารถทำได้ก็แค่เอาฉันในขณะที่จะได้รับรหัสที่ถูกต้องและเพื่อวางไฟล์ลงในโฟลเดอร์ที่มีสิทธิ์ที่จะเข้าถึงได้ :)
สตีเฟ่น

"-z" จะส่งคืนข้อผิดพลาดเนื่องจากเป็นเพียง tar ไม่ถูกบีบอัดด้วย gzip
อเล็กซ์

อเล็กซ์ถูกต้อง 100%
Stephen Thompson

0

ด้านล่างสร้างขึ้นสำหรับฉันจาก pgAdmin iii โดยคลิกที่ฐานข้อมูลและคลิกขวาและเลือกกู้คืน ฉันไปที่ไฟล์. tar ที่ฉันมีและมันทำได้ด้วยตัวเอง

/usr/bin/pg_restore --host localhost --port 5434 --username "postgres" \
--dbname "dvdrental" --no-password  --schema public --verbose \
"/home/npena/Desktop/dvd/dvdrental.tar"

0

สำหรับเวอร์ชัน 9.5 ให้รันคำสั่งต่อไปนี้ในบรรทัดคำสั่ง

pg_restore -W -c -U [username] -d [database_name] -v "[path to extracted tar]"


0

คอนโซล GNU / Linux

pg_restore -h 127.0.0.1 -p 5432 -U "postgres" -d "dvdrental_tpl" -v "/var/backups/dvdrental.tar";

- ความช่วยเหลือรายละเอียด

pg_restore - ช่วย

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