Pencadangan postgres otomatis

20

Apa cara terbaik untuk membuat cadangan secara otomatis database Postgres di Linux setiap hari?

Liam
sumber

Jawaban:

11

Anda bisa menggunakan pg_dumpseperti ini:

$ pg_dump -h db_host -U user_name db_name > dump_file.sql

Silakan pikirkan terlebih dahulu untuk mengatur .pgpassfile, yang berisi kata sandi yang akan digunakan jika koneksi memerlukan kata sandi. File ini harus memiliki baris dengan format berikut:

hostname:port:database:username:password

Dan masing-masing dari empat bidang pertama mungkin nilai literal, atau *, yang cocok dengan apa pun. Sebagai contoh: *:*:*:postgres:pg_password.

.pgpassFile ini harus berada di direktori home ~ / dan izin di atasnya harus melarang akses ke dunia atau grup; capai ini dengan perintah chmod 0600 ~/.pgpass.

Ali Mezgani
sumber
apakah itu cadangan secara otomatis setiap hari ??
Anuj Patel
@indyaah: tidak, Anda harus menjalankan ini setiap hari dari cron (atau yang serupa).
Bill Weiss
12

Jalankan pg_dumpall dari cron.

Bill Weiss
sumber
7
pg_dumpall lebih baik daripada jawaban lain karena ini mendukung objek basis data global Anda. (Mis: pengguna, dll.) Anda akan membutuhkan ini untuk sepenuhnya memulihkan DB Anda dan jika Anda memiliki jumlah yang besar dari ini, maka akan menjadi non-sepele untuk membuatnya kembali. Namun, pg_dumpall bisa jadi berlebihan bagi Anda jika Anda hanya ingin membuat cadangan satu basis data tunggal dalam beberapa kelompok basis data karena pg_dumpall akan membuat cadangan setiap contoh. Jadi ... seperti kebanyakan T&J teknologi, itu tergantung.
KevinRae
1
Saya cenderung mengacaukan "database" dan "server database", ini menjadi contoh yang baik. Saya berasumsi poster itu ingin mendukung semuanya. Poin bagus.
Bill Weiss
6

Coba AutoPostgreSQLBackup . Ini adalah file skrip tunggal, dapat dengan mudah dikonfigurasi untuk kebutuhan Anda, melakukan penjadwalan harian, mingguan dan bulanan, log per email, file log atau stdout, dll.


sumber
Saya juga menggunakan AutoPostgreSQLBackup dan itu bekerja sangat baik bagi saya ;-)
Matthieu
4

Jika ini adalah basis data yang cukup kecil, dan persyaratan yang begitu rendah pada cadangan hanya sekali sehari, jalankan pg_dump dari cron untuk dibuang ke file lokal, dan kemudian gunakan apa pun yang Anda punya untuk mencadangkan file pada mesin untuk mengarsipkan pembuangan. .

Magnus Hagander
sumber
4

pg_rman adalah alat baru, yang menawarkan cadangan tambahan, yang berfungsi untuk PostgreSQL 8.4 atau lebih baru.

Adam Matan
sumber
2

Coba aman-astrails . Ia tahu cara membuat cadangan mysql (mysqldump), postgres (pg_dump), atau hanya file biasa (tar) dengan enkripsi (gnupg) dan mengunggah ke S3 / Sftp.

Vitaly Kushner
sumber
1

Ini adalah skrip yang akan mencadangkan setiap basis data secara individual dan juga GLOBAL PostgreSQL yang sering dilupakan tetapi penting dan info masuk pengguna.

Pentingnya ini adalah untuk mengambil keuntungan dari kompresi yang tidak disediakan pg_dumpall dan data yang terlupakan yang diabaikan oleh pg_dump.

Ini akan membutuhkan pgpass atau pengaturan serupa seperti yang dijelaskan di sini http://wiki.postgresql.org/wiki/Pgpass

Ini adalah pengaturan untuk OSX tetapi hanya mengubah jalur Program dan itu akan berfungsi dengan baik.

Kembali ke / sqlbackups Script akan mengembalikan ukuran direktori / direktori dan memiliki breakpoint yang akan mengembalikan status bukan nol jika gagal. Saya menggunakannya dalam kombinasi dengan pgAgent untuk melakukan backup harian.

Script dihapus, maaf soal itu :(

Silverfire
sumber
1

Mengapa puas dengan cadangan harian ketika Anda dapat dengan mudah memiliki pemulihan point-in-time dengan bartender ?

Giovanni Toraldo
sumber
Saya akan membiarkan para moderator memutuskan, tetapi saya percaya membangkitkan pertanyaan berusia 5 tahun untuk memasang produk komersial adalah bentuk yang buruk di sini.
gparent
ehm, ini open source: sourceforge.net/projects/pgbarman/files
Giovanni Toraldo
Anda benar, saya mencari hal yang salah di Google. Perhatian utama saya bukan itu, bagaimanapun, itu tentang menyarankan jawaban yang tidak benar-benar apa yang ditanyakan pengguna 5 tahun kemudian. Namun, setelah membaca jawaban lain, mereka juga tampaknya menyarankan solusi cadangan yang sama jadi saya kira itu tidak terlalu buruk. Bendera saya mungkin akan ditolak dan kami akan memanggilnya sehari: D
gparent