Bagaimana cara mengembalikan database PostgreSQL dari file .tar?


20

Saya memiliki semua basis data PostgreSQL yang dicadangkan selama cadangan tambahan menggunakan WHM, yang menghasilkan $ dbName. file tar .

Data disimpan dalam file .tar ini, tapi saya tidak tahu cara mengembalikannya ke database individu melalui SSH. Khususnya lokasi file.

Saya telah menggunakan:

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

yang menghasilkan kesalahan 'tidak dapat membuka file input: Izin ditolak'

Setiap bantuan dihargai.


Apakah pengguna yang Anda jalankan perintah ini memiliki akses ke file itu?
mat

Hai Mat, Anda akan berpikir begitu, (berjalan sebagai root) tetapi baru saja memecahkan masalah setelah banyak banyak kombinasi, dan memindahkan file .tar mentah ke tmp .... pg_restore -c -i -U-postgres -d client03 -v "/tmp/client03.tar" -W The -W pada akhirnya adalah trik utama yang memaksa input kata sandi seperti yang diperlukan yang memungkinkan semuanya untuk disatukan kembali.
Stephen

Jawaban:


24

Menemukan string kode yang benar, kalau-kalau ada orang lain menemukan utas ini.

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

Rinciannya adalah dari http://www.postgresql.org/docs/7.3/static/app-pgrestore.html dan sedikit trial and error.

Intinya ...

-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)

Semoga bantuan di atas membantu orang lain.


bagaimana melakukan hal yang sama dengan tar.gz?
eri

2

Saat menggunakan PgAdmin III untuk melakukan pemulihan untuk saya, itu berfungsi dengan sempurna dengan menggunakan perintah berikut yang dibangun sendiri:

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"

Catatan untuk menghindari peringatan, sebaiknya pemilik peran objek dalam file cadangan sudah ada di server target. Anda juga harus sudah memiliki target DB yang dibuat dan dimiliki oleh peran itu.


1

Saya tidak yakin ini dapat mengimpor file .tar. Saya akan melakukan

tar -zxvf client03.tar 

untuk mengekstrak apa pun yang ada di dalam file, dan coba pg_restore lagi. Saya tahu pg_restore berfungsi, karena kami memiliki metode pengembalian yang sama dari bare metal mengembalikan.


1
Halo Stephen, ya ternyata itu bisa, hanya butuh beberapa saat untuk mendapatkan kode yang benar, dan untuk meletakkan file ke folder dengan izin untuk diakses :)
Stephen

"-Z" akan mengembalikan kesalahan, karena itu hanya tar, tidak dikompres dengan gzip.
Alex

Alex 100% benar.
Stephen Thompson

0

Di bawah ini dihasilkan untuk saya dari pgAdmin iii dengan mengklik pada database dan mengklik kanan dan memilih mengembalikan. Saya menavigasi ke file .tar yang saya miliki dan melakukannya sendiri.

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

0

Untuk versi 9.5, jalankan perintah berikut di baris perintah

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


0

GNU / LINUX CONSOLE:

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

- Bantuan Detail

pg_restore --help

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.