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.

Stephen
sumber
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.

Stephen
sumber
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.

MikeM
sumber
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.

Stephen Thompson
sumber
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"
Nathan Pena
sumber
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]"

nnamdi
sumber
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

Taner Bigdataoğlu
sumber