Otomatik postgres yedekleme


20

Her gün Linux'ta bir Postgres veritabanını otomatik olarak yedeklemenin en iyi yolu nedir?

Yanıtlar:


11

Bunun gibi kullanabilirsiniz pg_dump:

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

Lütfen .pgpassbağlantı için bir şifre gerekiyorsa kullanılacak şifreleri içeren dosyayı ayarlamayı düşünün . Bu dosya aşağıdaki biçime sahip satırlara sahip olmalıdır:

hostname:port:database:username:password

Ve ilk dört alanın her biri değişmez bir değer veya herhangi bir şeyle eşleşen * olabilir. Örneğin: *:*:*:postgres:pg_password.

Bu .pgpassdosya ~ / giriş dizininde bulunmalı ve üzerindeki izinler dünyaya veya gruba erişime izin vermemelidir; bunu komutla başar chmod 0600 ~/.pgpass.


her gün otomatik olarak yedekleniyor mu ??
Anuj Patel

@indyaah: hayır, bunu günlük olarak cron'dan (veya benzeri) çalıştırmanız gerekir.
Bill Weiss

12

Cron'dan pg_dumpall komutunu çalıştırın.


7
pg_dumpall diğer yanıtlardan daha iyidir çünkü bu global veritabanı nesnelerinizi yedekler. (Örn: kullanıcılar, vb.) DB'nizi tamamen kurtarmak için bunlara ihtiyacınız olacaktır ve bunlardan çok sayıda varsa, bunları yeniden oluşturmak önemsiz olabilir. Sadece yedekleme için çoklu veritabanı küme pg_dumpall irade yedekleme çünkü içinde tek bir veritabanı örneği istiyorsanız Ancak, pg_dumpall sizin için overkill olabilir her örneği. Yani ... çoğu teknoloji soru ve cevapında olduğu gibi, duruma göre değişir.
KevinRae

1
Ben "veritabanı" ve "veritabanı sunucusu", bu iyi bir örnek olduğunu, birbirine eğilimindedir. Posterin herşeyi yedeklemek isteyeceğini düşündüm İyi bir nokta.
Bill Weiss

6

AutoPostgreSQLBackup'ı deneyin . Tek bir komut dosyasıdır, ihtiyaçlarınıza göre yapılandırılabilir, günlük, haftalık ve aylık zamanlama, e-posta başına günlükler, günlük dosyası veya stdout vb.


Ayrıca AutoPostgreSQLBackup kullanıyorum ve benim için çok iyi çalışıyor ;-)
Matthieu

4

Oldukça küçük bir veritabanı ve yedeklemede günde bir kez olduğu gibi düşük gereksinimler varsa, yerel bir dosyaya dökmek için cron'dan pg_dump komutunu çalıştırın ve daha sonra dökümü arşivlemek için makinedeki dosyaları yedeklemek için ne gerekiyorsa kullanın. .


4

pg_rman , PostgreSQL 8.4 veya daha yeni sürümler için çalışan artımlı yedeklemeler sunan yeni bir araçtır.


2

Güvenli kasetleri deneyin . Mysql (mysqldump), postgres (pg_dump) veya sadece şifreleme (gnupg) ile düz dosyaların (tar) nasıl yedekleneceğini ve S3 / Sftp'ye nasıl yükleneceğini bilir.



1

Bu, her veritabanını tek tek yedekleyecek ve genellikle unutulan ama önemli PostgreSQL GLOBALS ve kullanıcı giriş bilgilerinin yedekleneceği bir komut dosyasıdır.

Bunun önemi pg_dumpall'ın sağlamadığı sıkıştırmadan ve pg_dump'ın göz ardı ettiği unutulmuş verilerden yararlanmaktır.

Bu, burada açıklandığı gibi bir pgpass veya benzeri bir kurulum gerektirir http://wiki.postgresql.org/wiki/Pgpass

Bu OSX için ayarlanmıştır, ancak sadece Program yollarını değiştirin ve iyi çalışır.

/ Sqlbackups değerine kadar yedekleme Komut dosyası dizin boyutunu / dizinini döndürür ve başarısız olursa sıfır olmayan bir durum döndürecek kesme noktalarına sahiptir. Günlük yedeklemeler yapmak için pgAgent ile birlikte kullandım.

Script düzeltildi, bunun için üzgünüm :(


1

Barmen ile zaman içinde anında kurtarma yapabildiğinizde neden günlük bir yedekleme ile yerleşmelisiniz ?


Moderatörlerin karar vermesine izin vereceğim, ancak ticari ürünleri takmak için 5 yıllık soruları yeniden canlandırmanın burada kötü bir form olduğuna inanıyorum.
Ekim'de


Haklısın, yanlış şeyi aradım. Benim asıl endişem, yine de, kullanıcının 5 yıl sonra sorduğu bir cevap önermek değildi. Ancak, diğer cevapları okuduktan sonra, benzer yedekleme çözümleri önerdikleri görülüyor, bu yüzden o kadar da kötü değil sanırım. Bayrağım muhtemelen reddedilecek ve biz buna bir gün
diyeceğiz

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.