Saya merasa perlu untuk membuat cadangan basis data setiap minggu. Dan saya juga berpikir cadangan mingguan harus diubah menjadi cadangan harian. Jika saya harus melakukan itu, saya tidak ingin melakukannya secara manual. Apa cara terbaik untuk mengotomatiskan pencadangan database PostgreSQL setiap hari?
22
Jawaban:
sama seperti yang Anda lakukan untuk tugas berulang lainnya yang dapat diotomatisasi - Anda menulis skrip untuk melakukan pencadangan, dan kemudian menyiapkan tugas cron untuk menjalankannya.
skrip seperti berikut ini, misalnya:
(Catatan: harus dijalankan sebagai pengguna postgres, atau pengguna lain dengan privs yang sama)
EDIT:
pg_dumpall -D
switch (line 27) sudah usang, sekarang diganti dengan--column-inserts
https://wiki.postgresql.org/wiki/Deprecated_Features
sumber
DBS=$($PSQL -l -t | egrep -v 'template[01]' | awk '{print $1}' | egrep -v '^\|' | egrep -v '^$')
Muat ulang dengan
atau
Gunakan
split
. Thesplit
perintah memungkinkan Anda untuk membagi output menjadi potongan-potongan yang dapat diterima dalam ukuran ke sistem file yang mendasari. Misalnya, untuk membuat potongan 1 megabyte:Muat ulang dengan
Anda bisa melemparkan salah satunya
/etc/cron.hourly
Bersumber dari http://www.postgresql.org/docs/8.1/interactive/backup.html#BACKUP-DUMP-ALL
sumber
split -C
, sehingga garis tidak pernah terpecah. Men-debug pemulihan yang gagal lebih mudah.Apa pun perintah yang Anda keluarkan "dengan tangan", - tulislah ke skrip, dan panggil skrip ini di cron atau penjadwal apa pun yang Anda gunakan.
Anda tentu saja dapat membuat skrip lebih mewah, tetapi secara umum, saya pikir Anda akan sampai di sana - mulai dari yang sederhana, dan kemudian perbaiki.
Skrip yang paling sederhana:
Simpan sebagai / home /randell / bin/backup.sh, tambahkan ke cron:
sumber
Jika Anda ingin mem-backup seluruh cluster dengan beban sistem minimal, Anda bisa dengan mudah menar direktori root dari cluster postgresql. sebagai contoh:
itulah bagian terbesar dari skrip cadangan saya.
sumber
jika ada orang yang membuat cadangan postgres mereka pada mesin windows tanpa bantuan cygwin dll saya punya file batch yang melakukan pekerjaan dengan cukup baik.
ini akan membuat cadangan database ke file individual di direktori itu sendiri setiap hari
sumber