PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Cara Mencadangkan dan Memulihkan Basis Data PostgreSQL

Dalam lingkungan produksi, tidak peduli seberapa besar atau kecil PostgreSQL Anda database mungkin, kembali teratur merupakan aspek penting dari manajemen database. Dalam artikel ini, Anda akan mempelajari cara mencadangkan dan memulihkan database PostgreSQL.

Kami berasumsi bahwa Anda sudah memiliki instalasi sistem database PostgreSQL yang berfungsi. Jika tidak, baca artikel kami berikut untuk menginstal PostgreSQL pada distribusi Linux Anda.

  • Cara Menginstal PostgreSQL dan pgAdmin4 di Ubuntu 20.04
  • Cara Menginstal PostgreSQL dan pgAdmin di CentOS 8
  • Cara Menginstal PostgreSQL dan pgAdmin di RHEL 8

Mari kita mulai…

Cadangkan Satu Database PostgreSQL

PostgreSQL menyediakan pg_dump utilitas untuk membantu Anda membuat cadangan database. Ini menghasilkan file database dengan perintah SQL dalam format yang dapat dengan mudah dipulihkan di masa mendatang.

Untuk mencadangkan, PostgreSQL database, mulai dengan masuk ke server database Anda, lalu beralih ke Postgres akun pengguna, dan jalankan pg_dump sebagai berikut (ganti tecmintdb dengan nama database yang ingin Anda backup). Secara default, format output adalah file skrip SQL teks biasa.

$ pg_dump tecmintdb > tecmintdb.sql

pg_dump mendukung format output lainnya juga. Anda dapat menentukan format output menggunakan -F opsi, di mana c berarti file arsip format khusus, d berarti arsip format direktori, dan t berarti file arsip format tar:semua format cocok untuk dimasukkan ke pg_restore .

Misalnya:

$ pg_dump -F c tecmintdb > tecmintdb.dump
OR
$ pg_dump -F t tecmintdb > tecmintdb.tar

Untuk membuang keluaran dalam format keluaran direktori, gunakan -f flag (yang digunakan untuk menentukan file output) untuk menentukan direktori target alih-alih file. Direktori yang akan dibuat oleh pg_dump tidak boleh ada.

$ pg_dump -F d tecmintdb -f tecmintdumpdir	

Untuk mencadangkan semua PostgreSQL database, gunakan pg_dumpall alat seperti yang ditunjukkan.

$ pg_dumpall > all_pg_dbs.sql

Anda dapat memulihkan dump menggunakan psql seperti yang ditunjukkan.

$ pgsql -f all_pg_dbs.sql postgres

Memulihkan Basis Data PostgreSQL

Untuk memulihkan PostgreSQL database, Anda dapat menggunakan psql atau pg_restore keperluan. psql digunakan untuk memulihkan file teks yang dibuat oleh pg_dump sedangkan pg_restore digunakan untuk memulihkan database PostgreSQL dari arsip yang dibuat oleh pg_dump dalam salah satu format teks biasa (kustom, tar, atau direktori).

Berikut adalah contoh cara mengembalikan dump file teks biasa:

$ psql tecmintdb < tecmintdb.sql

Seperti disebutkan di atas, dump format khusus bukanlah skrip untuk pgsql , jadi harus dipulihkan dengan pg_restore seperti yang ditunjukkan.

$ pg_restore -d tecmintdb tecmintdb.dump
OR
$ pg_restore -d tecmintdb tecmintdb.tar
OR
$ pg_restore -d tecmintdb tecmintdumpdir	

Cadangkan Database PostgreSQL Besar

Jika database yang Anda cadangkan berukuran besar dan Anda ingin menghasilkan file keluaran yang lebih kecil, Anda dapat menjalankan dump terkompresi di mana Anda harus memfilter keluaran pg_dump melalui alat kompresi seperti gzip atau salah satu favorit Anda:

$ pg_dump tecmintdb | gzip > tecmintdb.gz

Jika database sangat besar, Anda dapat membuang secara paralel dengan membuang number_of_jobs tabel secara bersamaan menggunakan -j bendera, seperti yang ditunjukkan.

$ pg_dump -F d -j 5 -f tecmintdumpdir

Penting untuk dicatat bahwa opsi dump paralel mengurangi waktu dump, tetapi di sisi lain, itu juga meningkatkan beban pada server database.

Cadangkan Basis Data PostgreSQL Jarak Jauh

pg_dump adalah alat klien PostgreSQL biasa, yang mendukung operasi pada server database jarak jauh. Untuk menentukan server basis data jarak jauh pg_dump harus menghubungi, gunakan opsi baris perintah -h untuk menentukan host jarak jauh dan -p menentukan port jarak jauh yang didengarkan server database. Selain itu, gunakan -U tandai untuk menentukan nama peran basis data yang akan dihubungkan sebagai.

Ingatlah untuk mengganti 10.10.20.10 dan 5432 dan tecmintdb dengan alamat IP atau nama host remote Anda, port database, dan nama database masing-masing.

$ pg_dump -U tecmint -h 10.10.20.10 -p 5432 tecmintdb > tecmintdb.sql

Pastikan bahwa pengguna yang terhubung dari jarak jauh memiliki hak istimewa yang diperlukan untuk mengakses database, dan metode otentikasi database yang sesuai dikonfigurasi pada server database, jika tidak, Anda akan mendapatkan kesalahan seperti yang ditunjukkan pada tangkapan layar berikut.

Dimungkinkan juga untuk membuang database langsung dari satu server ke server lain, gunakan pg_dump dan psql utilitas seperti yang ditunjukkan.

$ pg_dump -U tecmint -h 10.10.20.10 tecmintdb | pqsl -U tecmint -h 10.10.20.30 tecmintdb

Auto Backup Database PostgreSQL Menggunakan Cron Job

Anda dapat melakukan pencadangan secara berkala menggunakan cron pekerjaan. Cron pekerjaan adalah cara yang umum digunakan untuk menjadwalkan berbagai jenis tugas untuk dijalankan di server.

Anda dapat mengonfigurasi tugas cron untuk mengotomatiskan PostgreSQL backup database sebagai berikut. Perhatikan bahwa Anda perlu menjalankan perintah berikut sebagai superuser PostgreSQL:

$ mkdir -p /srv/backups/databases

Selanjutnya, jalankan perintah berikut untuk mengedit crontab untuk menambahkan tugas cron baru.

$ crontab -e

Salin dan tempel baris berikut di akhir crontab. Anda dapat menggunakan salah satu format dump yang dijelaskan di atas.

0 0 * * *  pg_dump  -U postgres tecmintdb > /srv/backups/postgres/tecmintdb.sql

Simpan file dan keluar.

Layanan cron akan secara otomatis mulai menjalankan pekerjaan baru ini tanpa memulai ulang. Dan tugas cron ini akan berjalan setiap hari pada tengah malam, ini adalah solusi minimum untuk tugas pencadangan.

Untuk informasi lebih lanjut tentang cara menjadwalkan pekerjaan cron, lihat:Cara Membuat dan Mengelola Pekerjaan Cron di Linux

Itu saja untuk saat ini! Sebaiknya buat pencadangan data sebagai bagian dari rutinitas manajemen basis data Anda. Untuk menghubungi kami jika ada pertanyaan atau komentar, gunakan formulir umpan balik di bawah ini. Untuk informasi lebih lanjut, lihat halaman referensi pg_dump dan pg_restore.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menghapus carriage return dan baris baru di Postgresql?

  2. Apa mitra JDBC dari perintah \connect Postgres?

  3. Fungsi AVG() di PostgreSQL

  4. Grup SQL berdasarkan Rentang Tanggal

  5. Hitung Kunci Utama berikutnya - dengan format tertentu