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.