Tips Teknologi: Bagaimana cara mencadangkan dan mengembalikan basis data Postgres?
·
19 Jun 2013

Poin Penting
Cadangan PostgreSQL dapat menargetkan satu tabel, satu database, atau semua database tergantung pada kebutuhan Anda.
pg_dumpmembuat file teks SQL yang berisi DDL dan data yang diperlukan untuk membangun kembali tabel atau database yang ditargetkan.pg_dumpallmencadangkan setiap database di instance Postgres.Pemulihan dilakukan dengan
psql, yang mengeksekusi dump SQL kembali ke database yang ditargetkan.Pemulihan tingkat tabel memerlukan memastikan bahwa tabel belum 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 tergantung pada pemahaman tentang hubungan tabel, penggunaan skema, dan lingkungan penempatan.
Selalu pastikan integritas data dengan mengambil cadangan yang mencakup tabel yang direferensikan jika diperlukan.
Sorotan Tanya jawab
Apa sebenarnya yang dilakukan pg_dump?
pg_dumpmenghasilkan file SQL berbasis teks yang berisi seluruh rangkaian perintah yang diperlukan untuk merekonstruksi tabel atau basis data persis seperti saat backup dilakukan.Bisakah saya mencadangkan hanya satu tabel saja daripada seluruh basis data?
Ya. Gunakan
pg_dump --table NAMA_TABELuntuk mengekspor tabel tertentu. Jika tabel dengan nama yang sama ada di berbagai skema, gunakan--schemauntuk menentukan yang benar.Haruskah saya khawatir tentang tabel terkait saat mencadangkan tabel tunggal?
Tentu saja. PostgreSQL adalah relasional, jadi tabel lain mungkin merujuk pada tabel yang Anda cadangkan. Jika Anda hanya memulihkan satu tabel tanpa tabel terkait, Anda mungkin akan merusak integritas referensial.
Bagaimana cara mencadangkan database penuh?
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 pg_dumpall?
pg_dumpallmencadangkan setiap basis data di server ke dalam satu file SQL. Ini berguna saat memigrasi atau mengambil snapshot seluruh instance Postgres.Bisakah saya mengembalikan tabel ke dalam database yang sudah ada?
Ya. Gunakan
psql -U <user> -f <file.sql> <database>.Namun pastikan tabel tidak sudah ada — jika tidak, Anda akan mendapatkan kesalahan “sudah ada” selama pemulihan.
Apa yang terjadi selama pemulihan basis data penuh?
File pemulihan dijalankan:
Buat TabelUbah TabelSalin(untuk data tabel)
mengembalikan database ke kondisi persisnya pada saat dump.
Bisakah saya mengembalikan ke server yang berbeda dari yang saya lakukan pencadangan?
Ya. Dump bersifat portabel. Anda dapat melakukan cadangan secara lokal dan mengembalikannya ke instance Postgres jarak jauh, asalkan versinya kompatibel.
Apakah pg_dump mempengaruhi database yang sedang berjalan?
Tidak. Ini berfungsi melalui query SQL dan tidak mengunci seluruh database. Ini dengan aman menangkap snapshot yang konsisten.
Bagaimana cara mengembalikan semua database dari file pg_dumpall?
Gunakan:
psql -U <user> -f all_dump.sqlIni akan membuat ulang setiap database yang ditemukan dalam dump.
Pertama, sebuah penafian. Postingan ini memberikan panduan umum tentang cara mencadangkan tabel Basis Data Postgres. Contoh yang disediakan tidak merujuk pada tabel atau basis data tertentu. Jika Anda mencoba untuk mencadangkan tabel tertentu, Anda juga harus mencadangkan tabel yang merujuk pada tabel asli. Karena Postgres adalah basis data relational, selalu ada referensi antara sejumlah tabel.
Ini adalah dokumen 'cara' yang hanya memberikan contoh perintah, bagaimana sebenarnya dilakukan sepenuhnya tergantung pada orang yang melakukannya dan kasus penggunaan tertentu. Selalu jaga integritas data yang Anda coba cadangkan. Mencadangkan seluruh basis data selalu merupakan opsi yang aman, tetapi saat mencadangkan tabel tertentu, seseorang harus berhati-hati.
SQL-dump/pg_dump:
Ide di balik metode SQL-dump adalah untuk menghasilkan file teks dengan perintah SQL yang, ketika dimasukkan kembali ke server, akan membuat ulang database dalam keadaan yang sama seperti saat dump dilakukan. PostgreSQL menyediakan program utilitas pg_dump untuk tujuan ini.
pg_dump adalah alat yang efektif dan komprehensif untuk mengambil cadangan database Postgres dan menggunakan cadangan tersebut untuk memulihkan database postgres. Namun, alat ini tidak terbatas hanya pada Database. Kita dapat menggunakan pg_dump untuk mencadangkan tabel dan kemudian menggunakannya untuk memulihkan tabel individu juga. Menggunakan pg_dump, Anda dapat mencadangkan database lokal dan memulihkannya di database jarak jauh.
Cara Membackup Basis Data Postgres:
Cara Memulihkan Basis Data Postgres
Opsi Pemulihan Postgres
Ruang lingkup pemulihan | Alat yang digunakan | File input | Persyaratan kunci | Jebakan umum |
|---|---|---|---|---|
Tabel tunggal | psql | Dump tabel | Tabel tidak boleh sudah ada | Kesalahan “sudah ada” |
Database tunggal | psql | Dump database | DB target harus ada | Menimpa data yang tidak dimaksudkan |
Semua database | psql | Dump penuh | Akses superuser disarankan | Memulihkan lebih dari yang dimaksudkan |
Pulihkan tabel Postgres :
$ /opt/msys/3rdParty/bin/psql -U ecuser -f ms_table.sql pePerintah di atas akan menginstal tabel yang dicadangkan dalam file ms_table.sql ke database ‘pe’. Pastikan tabel ini tidak sudah ada, atau Anda akan melihat banyak kesalahan ‘sudah ada’. Perintah ini membuat tabel dan mengekspor semua data ke tabel yang baru dibuat.
Pulihkan Database postgres :
$ /opt/msys/3rdParty/bin/psql -U ecuser -d pe -f pe_dump.sqlSama seperti memulihkan tabel, kita dapat menggunakan perintah di atas untuk memulihkan database lengkap. Di sini kita memulihkan database ‘pe’ menggunakan file pe_dump.sql yang telah kita buat saat mencadangkan database di bagian Backup di atas.
Pulihkan semua Database :
$ /opt/msys/3rdParty/bin/psql -u ecuser -f all_dump.sqlPulihkan semua database menggunakan perintah di atas. ‘all_dump.sql’ adalah file yang dibuat menggunakan
pg_dumpall. Perintah di atas akan memberi kita semua database Postgres dalam keadaan persis seperti saat dump diambil dari server database asli.



