Pg_dump'ı canlı db'de çalıştırmak tutarlı yedekler oluşturur mu?


37

Sürekli değiştirilen 3GB bir veritabanım var ve sunucuyu durdurmadan yedekleme yapmam gerekiyor (Postgres 8.3).

Pg_dump'ım 5 dakika çalışıyor. Veriler işlem sırasında değiştirilirse ne olur? Tutarlı yedeklemeler alıyor muyum? Felaketin ne zaman patladığını bilmek istemiyorum.

Postgres belgeleri http://www.postgresql.org/docs/8.3/static/app-pgdump.html bunun hakkında hiçbir şey söylemez.


4
Merhaba Roddick. Felakete başlamadan önce geri yükleme işleminizi test etmenizi şiddetle tavsiye ederim . Farklı bir makine kurun ve test etmek için yedeklerinizden birini kullanarak geri yükleyin.
Derek Downey

Yanıtlar:


53

Gönderen manuel :

Veritabanı aynı anda kullanılıyor olsa bile tutarlı yedekleme yapar.

Yani evet, yedeklemeye güvenebilirsiniz. Tabii ki, PostgreSQL, PostgreSQL'de verilerinize güvenebilirsiniz.


10
Ben :) "Eğer PostgreSQL verilerinizi güven" okuduğumda anlamıyla LOL'd
François Beausoleil

El kitabına bir bağlantı güzel olurdu
Pablo Fernandez

1
@PabloFernandez: Tamam!
Frank Heikens,

1
Ancak, canlı bir veritabanındaki mantıksal bir yedekleme tablolarınızı kilitleyecektir, bu bilgiyi kaçırmayın. Belki bazı ipuçları bulacaksınız: compose.com/articles/…
tryp

Öyleyse lütfen bunun nesi komik? Postgresql kullanmayı bırakmalı mıyım?
777

12

pg_dump, uzun süre çalışan diğer herhangi bir sorgunun nasıl çalışacağına benzer şekilde bir işlem başlatır. Buradaki tutarlılık garantileri MVCC uygulamasından gelir . Döküm her zaman bu kurallar dahilinde kendi kendine tutarlı olacaktır.

MVCC'nin tüm bulanık kısımları, UPDATE işleminin diğer müşteriler tarafından görülebilir hale gelmesi ve kilitlerin nasıl edinildiği gibi şeyler etrafındadır. pg_dump sipariş verme konusunda kesindir ve tüm veritabanını terk etmek için bir okuma kilidi alır. Çoğu insan için bekledikleri budur ve kullanılan mekanizma hiçbir zaman sorun yaratmaz. Başlıca eşzamanlılık riski, dökümü çalışırken veritabanı yapısını değiştirmeye çalışan istemcilerin engellenmesidir. Bu olsa da çöplüğün kalitesini etkilemiyor.


11

Dökümü ayar ile başlar TRANSACTION ISOLATION LEVEL SERIALIZABLE.

Lütfen İşlem İzolasyonundaki el kitabını ve bununla ilgili Kullanıcı Listesi tartışmalarını okuyun .

Alıntı:

Yedekleme, yalnızca izolasyon seviyesi belirlenmeden önce yapılan işlemleri görecektir.

Temel olarak pg_dumpişlem sırasındaki seviyeyi belirleyen her şey , bu dökümü kapsamına girmez .

Okuma / yazma işlemleri bu süre boyunca etkilenmez (kilitlenir).


-1

İlk önce bu eski konuya cevap verdiğim için özür dilerim. Ancak tecrübelerime dayanarak güvenebileceğin ifadesini onaylayamıyorum. Pg_dump /

Bir ay önce bir projenin postgres yapmasına geçtim. Ve elbette, tüm yedeklemeleri önerildiği gibi canlı sistemden pg_dump ile yaptım. Ancak ilk yedekleme kontrolünden sonra tüm çöplüklerin farklı boyutlarda olduğunu anladım. Bazılarını rastgele geri yükledikten sonra, bazı tabloların eksik olduğunu anladım. Bunun neden olduğunu analiz etmeye başladım ve bindirme uygulaması, örneğin uygulama sunucuları, bazı tabloların kilitlenmesi ve pg_dump öğelerinin serbest bırakılıncaya kadar beklemiyor olduğunu anladım. Sunucuyu her zaman durdurmak için ihtiyacım vardı, bu da yedekleme süreci için iyi bir çözüm değildi.

Bu yüzden hala bir düzeltme arıyorum ama dediğim gibi, pg_dump'a güvenebileceğiniz ifadesine tamamen katılmıyorum.


Bu olursa, pg_dump'ta ciddi olur. Hangi sürümü kullanıyorsun? Benim sorum 3 yıl önceydi ve şimdi 9,3 yaşıyorum ve görünüşe göre pg_dump kullanarak canlı yedekleme yapan Amazon kırmızısıyım. Yanlış olamazlar.
Roman,

Serileştirilmiş bir yedekleme yapmak için pg_dump'a güvenebilirsiniz (bağlantılar / dokümanlar ve birkaç detay için cevabımı inceleyin). . Yalnızca ekleme / güncelleme / silme yaptığımız için tablo kreasyonları hakkında yorum yapamam. Bizim için sadece pg_dump süresi boyunca tablo oluşturmadığınızdan emin oldum.
Dennis Nolte

2
İfadeleriniz ciddi bir hata (bir hata raporu verdiniz mi?), Veritabanınızı boşaltma biçiminde ciddi bir hata mı yoksa bir yanlış anlaşılma olduğunu gösteriyor. Bunlardan birinin karar verememesi gerçeği yok.
dezso
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.