Tips Teknologi: Bagaimana cara mencadangkan dan mengembalikan database Postgres?
Karan Singh
19 Jun 2013
1 min read

Intisari Utama
Cadangan PostgreSQL dapat menargetkan satu tabel, satu basis data, atau semua basis data tergantung pada kebutuhan Anda.
pg_dumpmembuat file teks SQL yang berisi DDL dan data yang diperlukan untuk menciptakan kembali tabel atau basis data target.pg_dumpallmencadangkan setiap basis data pada instance Postgres.Pemulihan dilakukan dengan
psql, yang mengeksekusi SQL dump kembali ke dalam basis data target.Pemulihan tingkat tabel memerlukan memastikan bahwa tabel tidak sudah ada untuk menghindari konflik.
Ketika mencadangkan tabel individu, perhatikan ketergantungan relasional.
Dump dapat diambil dari lokal dan dipulihkan ke instance Postgres remote.
Cadangan mencakup perintah
CREATE,ALTER, danCOPYtergantung pada apa yang diekspor.Strategi cadangan yang tepat bergantung pada pemahaman hubungan tabel, penggunaan skema, dan lingkungan penerapan.
Selalu pastikan integritas data dengan mengambil cadangan yang mencakup tabel referensi ketika diperlukan.
Sorotan Q&A
Apa yang sebenarnya dilakukan oleh pg_dump?
pg_dumpmenghasilkan sebuah file SQL berbasis teks yang berisi seluruh perintah yang diperlukan untuk membuat kembali tabel atau database persis seperti yang ada pada saat pencadangan.Dapatkah saya mencadangkan hanya satu tabel daripada seluruh database?
Ya. Gunakan
pg_dump --table TABLENAMEuntuk mengekspor tabel tertentu. Jika tabel dengan nama yang sama ada di berbagai skema, gunakan--schemauntuk menentukan yang benar.Haruskah saya khawatir tentang tabel terkait ketika mencadangkan satu tabel?
Tentu saja. PostgreSQL adalah sistem manajemen basis data relasional, sehingga tabel lain mungkin merujuk pada tabel yang Anda cadangkan. Jika Anda memulihkan hanya satu tabel tanpa tabel terkait, Anda mungkin merusak integritas referensial.
Bagaimana cara mencadangkan seluruh database?
Jalankan perintah seperti:
pg_dump -U <user> <database> -f <output.sql>Ini mengekspor semua tabel, definisi skema, indeks, dan data untuk database tersebut.
Apa yang dilakukan oleh pg_dumpall?
pg_dumpallmencadangkan setiap database di server ke dalam satu file SQL. Ini berguna saat memigrasi atau mengambil snapshot seluruh instance Postgres.Dapatkah saya memulihkan tabel ke dalam database yang sudah ada?
Ya. Gunakan
psql -U <user> -f <file.sql> <database>.Tapi pastikan tabel tidak sudah ada — jika tidak, Anda akan mendapatkan kesalahan "sudah ada" selama pemulihan.
Apa yang terjadi selama pemulihan database penuh?
File pemulihan berjalan:
CREATE TABLEALTER TABLECOPY(untuk data tabel)
mengembalikan basis data ke statusnya yang tepat pada saat dump.
Dapatkah saya memulihkan ke server yang berbeda dari tempat saya membuat cadangan?
Ya. Dump dapat dipindahkan. Anda dapat mengambil cadangan secara lokal dan memulihkannya ke instans Postgres jarak jauh, asalkan versinya kompatibel.
Apakah pg_dump mempengaruhi database yang sedang berjalan?
Tidak. Ini berfungsi melalui kueri SQL dan tidak mengunci seluruh basis data. Ini dengan aman menangkap snapshot yang konsisten.
Bagaimana cara saya mengembalikan semua basis data dari file pg_dumpall?
Gunakan:
psql -U <user> -f all_dump.sqlIni akan membuat ulang setiap basis data yang ditemukan dalam dump.



