Saya membuang database Postgres saya menggunakan pg_dump (dalam format teks biasa) dan kemudian mengembalikannya hanya dengan menggunakan psql (dengan -f
opsi).
Yang menimbulkan pertanyaan: apakah saya kehilangan sesuatu dengan tidak menggunakan pg_restore yang sepertinya alat pemulihan khusus (dibandingkan dengan generik psql
)?
Saya dapat mengontrol opsi seperti menonaktifkan pemicu dan lainnya dengan menggunakan pg_dump
parameter. Lalu, pg_restore
untuk apa digunakan? format dump non-teks biasa?
postgresql
postgresql-9.1
Marcus Junius Brutus
sumber
sumber
Jawaban:
Jika Anda membuat dump format-SQL, yang dapat Anda gunakan adalah
psql
.Jika Anda membuat dump format-format (
pg_dump -Fc
) atau direktori-format (pg_dump -Fd
), Anda dapat dan harus menggunakanpg_restore
.Kesedihan format kustom dan direktori menawarkan banyak keunggulan dibandingkan kesedihan skrip SQL biasa, dan saya menggunakannya secara eksklusif. Anda dapat secara selektif mengembalikan hanya beberapa tabel / skema, dapat memilih apakah hanya menyertakan skema, hanya data, atau keduanya pada waktu pemulihan, dll. Banyak opsi yang harus Anda tentukan pada
pg_dump
waktu dengan dump format-SQL dapat dipilih di restore- waktu jika Anda menggunakan dump format-kustom danpg_restore
.Jika bukan karena kompatibilitas ke belakang, saya yakin format defaultnya
pg_dump
adalah-Fc
(kustom).Anda tidak dapat mengubah dump format-SQL ke format-kustom atau format-direktori tanpa mengembalikannya ke database PostgreSQL dan kemudian membuang DB yang dipulihkan.
sumber
pg_restore
tanpadbname
argumen untuk mengubahnya menjadi dump format-SQL jika Anda membutuhkannya. Anda tidak dapat melakukan yang sebaliknya.pg_restore
mendukung pemulihan paralel, dan jika Anda menggunakannya akan jauh lebih cepat.