pgBackRest artık bakım almıyor
(github.com/pgbackrest)- PostgreSQL için yedekleme·geri yükleme aracı olarak büyük ölçekli ortamlara kadar genişleyebilecek şekilde tasarlanmıştı, ancak artık bakımı sona erdi
- bug fix, PR review, issue yanıtları ve yeni özellik geliştirme tamamen durduruldu; düzensiz biçimde sürdürmek yerine net şekilde durdurma tercih edildi
- full·differential·incremental yedekleme ile block-level backup, kesintiye uğrayan işleri sürdürme ve delta restore destekleniyor; böylece yalnızca değişen kısımlar kaydedilip geri yüklenebiliyor
- Yerel·uzak ortamları kapsayan bir protocol layer ve multiple repositories sunuyor; TLS·SSH bağlantıları ile S3·Azure·GCS uyumlu object store desteği sayesinde operasyon kapsamını genişletiyor
- checksum, WAL segment bekleme, fsync, page checksum doğrulaması gibi bütünlük güvence mekanizmaları açısından oldukça kapsamlı bir araçtı; ancak bundan sonra bir fork çıksa bile ayrı olarak yeniden güven kazanması gerekecek
Bakımın sona ermesi ve projenin durumu
- pgBackRest, PostgreSQL için bir yedekleme·geri yükleme aracı, ancak artık bakım almıyor
- Proje çalışmaları durduruldu ve bundan sonra bug fix, PR review, issue yanıtları ve yeni özellik geliştirmeye zaman ayrılmayacağı açıklandı
- Mevcut sponsorluk ve istihdam biçimleri sona erdikten sonra da bakım sürdürülmek istendi, ancak projeyi devam ettirecek düzeyde iş fırsatı ve sponsorluk sağlanamadı
- Bakımı düzensiz ya da eksik biçimde sürdürmektense, net bir şekilde sonlandırmanın daha iyi olacağı değerlendirildi
- İleride biri bir fork çıkarabilir, ancak bu durumda bu bir yeni proje sayılacak ve yeni bakımcının ayrıca güven oluşturması gerekecek
Projenin temel özellikleri
- Büyük ölçekli PostgreSQL ortamlarına kadar genişleyebilen yedekleme·geri yükleme hedefleniyor ve mevcut kararlı sürüm v2.58.0
- Paralel işleme ile lz4 ve zstd gibi sıkıştırma yöntemleri kullanılarak, yedekleme sırasında darboğaz olmaya yatkın sıkıştırma maliyetini azaltacak şekilde tasarlandı
- full, differential, incremental yedeklemeyi destekliyor; dosya düzeyinin yanı sıra block-level backup ile yalnızca değişen bölümler kopyalanarak depolama alanı tasarrufu sağlanıyor
- Kesintiye uğrayan yedeklemeler sürdürülebiliyor ve manifest içindeki checksum ile karşılaştırılarak daha önce kopyalanmış dosyaların bütünlüğü yeniden doğrulanıyor
- delta restore aşamasında yedekte bulunmayan dosyalar önce kaldırılıyor, ardından kalan dosyaların checksum değerleri karşılaştırılıyor; eşleşen dosyalar olduğu gibi bırakılırken yalnızca gerekli dosyalar geri yükleniyor
Uzak operasyon ve depo tasarımı
- Kendi protocol layer yapısı üzerinden hem yerel hem uzak ortamlarda yedekleme, geri yükleme ve arşiv işlemleri yapılabiliyor; uzak bağlantılarda TLS/SSH kullanılıyor
- Aynı protocol layer ile PostgreSQL sorgu arayüzü de sunuluyor; böylece PostgreSQL'e doğrudan uzak bağlantı açmadan işlem yapılabildiği için güvenlik artırılıyor
- multiple repositories desteği sayesinde, hızlı geri yükleme için yerel depo ile uzun süreli saklama ve yedeklilik için uzak depo birlikte kullanılabiliyor
- Depolar S3, Azure, GCS uyumlu object store üzerinde de tutulabildiğinden kapasite ve saklama süresi önemli ölçüde artırılabiliyor
- Deponun kendisi şifrelenebildiği için yedek verisi nerede tutulursa tutulsun korunabiliyor
Bütünlük ve tutarlılık sağlama yöntemleri
- Yedekteki tüm dosyalar için checksum hesaplanıyor ve restore ya da verify sırasında yeniden kontrol ediliyor
- Dosya kopyalama tamamlandıktan sonra, yedeği tutarlı bir duruma getirmek için gerekli tüm WAL segment dosyaları depoya ulaşana kadar bekleniyor
- Tüm işlemlerde dosya ve dizin düzeyinde fsync kullanılarak dayanıklılık sağlanıyor
- PostgreSQL'de page checksum açıksa, full yedeklemede tüm dosyaların page checksum değerleri doğrulanıyor; differential·incremental yedeklemede ise yalnızca değişen dosyalar doğrulanıyor
- Page checksum doğrulaması başarısız olsa bile yedekleme durdurulmuyor; ancak hangi sayfanın başarısız olduğuna dair uyarı bırakılarak geçerli bir yedek süresi dolmadan önce page-level corruption erken tespit edilebiliyor
WAL işleme ve geri yükleme performansı optimizasyonu
- WAL push/get için özel komutlar sunuluyor; her ikisi de paralel işleme ve asenkron çalışmayı destekleyerek PostgreSQL yanıt süresini mümkün olduğunca hızlı tutacak şekilde tasarlandı
- WAL push, aynı WAL segment birden fazla kez gelirse bunu otomatik olarak tekilleştiriyor; içerik farklıysa hata oluşturuyor
- Asenkron WAL push'ta aktarımı başka süreçler üstlenip WAL segmentlerini paralel olarak sıkıştırıyor; bu da özellikle yazma hacmi çok yüksek veritabanlarında önemli hale geliyor
- Asenkron WAL get, sıkıştırması açılmış WAL queue yapısını yerelde tutarak replay öncesinde hemen besleme yapılmasını sağlıyor; gecikmesi yüksek bağlantılarda veya S3 gibi depolarda bunun avantajı özellikle büyük
- Hem WAL push hem de get, PostgreSQL sürümü ile system identifier değerini karşılaştırarak veritabanı ile deponun eşleştiğini doğruluyor; böylece WAL archive konumunun yanlış yapılandırılması olasılığı büyük ölçüde azalıyor
Operasyonel esneklik ve uyumluluk
- backup retention ve archive expiration politikaları full, differential ve WAL düzeyinde ayrı ayrı ayarlanabildiğinden istenen zaman aralığı kapsanabiliyor
- Yedekler PostgreSQL cluster biçiminde olduğu gibi saklanabiliyor; sıkıştırma kapatılıp hard link etkinleştirilirse depo snapshot'ı üzerinde PostgreSQL cluster doğrudan da başlatılabiliyor
- Bu yaklaşım, geleneksel restore işleminin uzun sürdüğü terabyte-scale database ortamlarında avantaj sağlıyor
- tablespace tam olarak destekleniyor; restore sırasında her tablespace farklı bir konuma taşınabiliyor veya tek bir konuma toplu olarak remap edilebiliyor
- Dosya ve dizin linkleri de destekleniyor; böylece restore sırasında özgün konumu koruma, bir kısmını veya tamamını remap etme ya da normal dosya·dizin olarak dönüştürerek geri yükleme mümkün oluyor
- PostgreSQL'in 10 sürümü destekleniyor; buna şu anda desteklenen 5 sürüm ile EOL olmuş en son 5 sürüm dahil ve böylece yükseltme için geniş zaman bırakılıyor
Referans kaynakları ve sponsorluk durumu
- User guides
- Command reference
- Configuration reference
- Mevcut sponsor Supabase
- Geçmiş sponsorlarda Crunchy Data ve Resonate yer alıyor
2 yorum
Bununla ilgili bir güncelleme yapıldı.
Hacker News yorumları
Şirket desteği de vardı ama gecelerini ve hafta sonlarını da buna vermiş; Crunchy Data satıldıktan sonra da bakımı sürdürürken bu işi devam ettirebileceği bir pozisyon aramış ama işler istediği gibi gitmemiş
Geçimini sağlayabilmek için daha geniş fırsatlara bakması gerekiyor ve bu durumda bakım, hata düzeltme, PR inceleme ve issue takibi için gereken zamanı artık ayıramayacağı için depoyu arşivleyeceğini söylüyor
Rehber şu adreste: https://github.com/freakynit/postgre-backup-and-restore-guide ve bugüne kadar verdiği tüm zaman ve emek için gerçekten teşekkür ediyor
Üstelik token’lara para gömen çok kişi olduğu için hem boşta para hem de zaman azalmış durumda olabiliyor
Eğer bu, hobi projesini aşarak ticari ortamda gerçek değer üreten ürün düzeyinde bir araçsa, bu boşluğu doldurmak için kâr amaçlı bir şirketin devreye girmesi için kesinlikle bir fırsat vardır
Ama bunun için kullanıcıların müşteriye dönüşüp gerçekten para ödemesi gerekir; ücretsiz bakım yapan kişilere sürekli hata raporu ve şikayet göndermekle bu iş sürdürülebilir olmaz
FOSS’un finansal sürdürülebilirliği için yeni çözümler gerektiğini, bağışların tek başına yeterli görünmediğini düşünüyor
Mahalledeki dükkân da olsa açık kaynak proje de olsa durum aynı
Ancak katkı yapan herkesin telif hakkı devreye girebileceği için, ACL olup olmadığına ve yargı alanına bağlı olarak hakların düzenlenmesi gerekebilir; gelir paylaşımı gibi konularda da uzlaşı lazım olabilir
Kurumsal destek varken her şey yürüyordu ama şirket satılıp yeni sahip öncelikleri değiştirince 3.8k yıldızlı bir altyapı aracı bir anda kırılgan hale geldi; yani kullanıcılar, kendi yedekleme araçlarının finansmanının başkalarının M&A stratejisine bağlı olduğunun farkında değildi
Bu yüzden kendisi de yavaş yavaş SQLite ve git ile izlenen dosya tarafına kayıyor
Çünkü yönetilen Postgres yığınları da sonuçta finansal durumunu bilmediğimiz kişilerin bakımını yaptığı birçok aracın üstüne kurulu
Yine de finansman yapısının kırılgan olduğu yönündeki büyük resim hâlâ geçerli
Hazır bunu düşünüyorken, kaybetmek istemediğimiz bağımlı projeleri gözden geçirip daha şimdi destek vermeye başlamanın doğru olacağını söylüyor
Herkes üzgün olduğunu söylüyor ama gerçekten üzgünse önce bağış yapacak kadar üzgün mü diye sormak gerekir
Özellikle yalnızca yedekleme değil, geri yükleme ve doğrulama konularını da ciddiyetle ele alması çok nadirdi; bunları hafife almanın iş yerinde kendisine ağır patladığı da olmuş
Ayrıntılar burada: https://blog.dijit.sh/that-time-my-manager-spend-1m-on-a-backup-server/
Bu yüzden bunu oldukça büyük bir kayıp olarak görüyor
WAL-G ya da Barman ile karşılaştırınca durumun nasıl olduğunu merak ediyor
https://github.com/wal-g/wal-g
https://github.com/EnterpriseDB/barman
Her gece Barman ile geri yüklenmiş bir nightly DB oluşturup bunu kullanıcı eğitimi ve test için de çalıştırıyorlar; böylece yedeklerin gerçekten bozuk olup olmadığını sürekli doğrulamış oluyorlar ve yıllardır sorun yaşamamışlar
Birkaç yıllık durgunluğun ardından tekrar managed Postgres tarafına döndüklerini ve wal-g’nin kendi blok karşılaştırmasıyla sunduğu delta backup’ın yanı sıra pg17 incremental backup desteğini de görmek istediğini söylüyor
Ayrıca daemon mode’u kesinlikle kullanmak gerektiğini ekliyor
Rakip bir aracın kaybolması üzücü ama bu alanda hâlâ geliştirilecek çok şey var; Postgres overcommit olmayan sistemlerde çalışmak istediğinde de C’nin Golang’a göre avantajları olabiliyor
Yaklaşık 9 yıl önce değerlendirme yaparken streaming PITR özellikleri nedeniyle pgBackRest’ten daha cazip gelmiş
Şimdi en yakın alternatifin wal-g mi, barman mı, yoksa databasus mu olduğunu merak ediyor
Kendisiyle ilgili “DBA taklidi yapıyorum” demiş ama aslında bu seçim oldukça önemli
Not olarak da kendisinin DBRE olduğunu ekliyor
İlgili doküman: https://docs.pgbarman.org/release/3.18.0/user_guide/hook_scripts.html#hook-scripts-using-barman-cloud-scripts-as-hooks-in-barman
https://github.com/aiven-open/pghoard da iyi görünüyor ama henüz bizzat doğrulamamış
Bu yüzden olanlar daha da üzücü ve bu harika araçla özellik eşdeğerliği yakalamak kolay olmayacak gibi görünüyor
Mümkünse geri alınabilir bir karar olmasını umuyor; olmazsa PostgreSQL projesinin bunu contrib olarak bünyesine katmasının da iyi olacağını düşünüyor
Yazara göre de insanlar muhtemelen bunu hemen terk etmek yerine, gerçekten artık çalışmaz hale gelene kadar kullanmaya devam etse daha iyi olur
Bunun için fork gerekip gerekmediğini ya da mevcut depoya katkıcı olarak eklenip oradan devralmanın mümkün olup olmadığını bilmediğini söylüyor