PostgreSQL, genellikle “Postgres” olarak da bilinir, açık kaynaklı, güçlü ve nesne-ilişkisel (An object–relational database ORD) bir veritabanı yönetim sistemidir (object–relational database management system RDBMS). İlk olarak 1986 yılında geliştirilmiş ve 1996 yılında açık kaynaklı olarak piyasaya sürülmüştür. PostgreSQL, geniş bir özellik yelpazesine sahip olup, çeşitli uygulamalar ve senaryolar için uygun bir veritabanı çözümüdür.

Web/Masaüstü projelerinde kullandığımız veritabanlarının yedeğini almak ciddi bir önem arz ediyor. Bu konu ile ilgili birçok ücretli-ücretsiz yazılım mevcut. Bu yazılımlar hem istediğiniz şekilde yedek aldığı gibi hem de istediğiniz platforma (Local, NAS, Bulut-Cloud vs.) yedek almanızı sağlıyor. Bu yazının konusu ise daha basit ölçekte işlerde belirlediğiniz bir makine üzerinden yedek almanıza sağlayan scriptleri içerir. Bu script’ler yazılımlardan daha farklı çalışır. Şöyle detaylandıralım:

PostgreSQL’in kendisi açık kaynaklıdır ve bu nedenle ücretsiz olarak kullanılabilir. Ancak, bazı şirketler PostgreSQL’in üzerinde geliştirilmiş, ek özellikler ve destek hizmetleri sunan “enterprise” sürümlerini piyasaya sürmektedir. Bu tür şirketler arasında EnterpriseDB (EDB) gibi isimler yer almaktadır. PostgreSQL’in ücretsiz sürümü ve enterprise sürümleri arasındaki temel farklar şunlardır:

Ücretsiz Sürüm (Community Edition)

  1. Açık Kaynak: Tamamen ücretsizdir ve PostgreSQL Global Development Group tarafından geliştirilir.
  2. Özellik Seti: PostgreSQL’in ana özelliklerini içerir, SQL uyumluluğu, veri bütünlüğü, genişletilebilirlik, güçlü veri tipleri ve indeksleme özellikleri sunar.
  3. Topluluk Desteği: Kullanıcı forumları, e-posta listeleri ve çevrimiçi belgeler aracılığıyla topluluk tarafından desteklenir.
  4. Güncellemeler: Düzenli olarak güncellemeler ve hata düzeltmeleri alır, ancak bu güncellemeler topluluk tarafından yönetilir.

Enterprise Sürüm (EDB gibi)

  1. Ek Özellikler: Enterprise sürümleri, özellikle kurumsal kullanıcılar için tasarlanmış ek özellikler sunar. Bu özellikler arasında daha gelişmiş güvenlik seçenekleri, yedekleme ve kurtarma araçları, performans optimizasyonları ve yönetim araçları yer alabilir.
  2. Profesyonel Destek: Kurumsal düzeyde destek hizmetleri sunar. Bu, 7/24 destek, eğitim ve danışmanlık hizmetlerini içerebilir.
  3. Sertifikasyon ve Uyumluluk: Belirli endüstri standartlarına ve düzenleyici gereksinimlere uyumluluk sertifikaları sağlar. Bu, özellikle finans, sağlık ve kamu sektörü gibi düzenlemelere tabi endüstriler için önemlidir.
  4. Güncellemeler ve Bakım: Enterprise sürümleri, düzenli ve öngörülebilir bakım ve güvenlik güncellemeleri sunar. Bu, işletmeler için daha güvenilir bir çalışma ortamı sağlar.
  5. İş Sürekliliği ve Yedekleme Çözümleri: Daha gelişmiş iş sürekliliği ve yedekleme çözümleri sunar. Bu, yüksek erişilebilirlik ve veri kaybı riskini azaltma açısından önemlidir.
  6. Performans ve Ölçeklenebilirlik: Özellikle büyük veri tabanı işlemleri ve yüksek kullanıcı yükleri altında performansı artırmak için optimize edilmiş ek araçlar ve özellikler sunar.

Özet

  • Ücretsiz Sürüm (Community Edition): Tamamen açık kaynaklı ve ücretsizdir, geniş bir kullanıcı ve geliştirici topluluğu tarafından desteklenir.
  • Enterprise Sürüm: Ek özellikler, profesyonel destek, sertifikasyon, güvenlik ve performans iyileştirmeleri gibi kurumsal ihtiyaçlara yönelik ek hizmetler sunar ve genellikle ticari olarak lisanslanır.

Her iki sürüm de güçlü ve güvenilir veritabanı çözümleri sunar, ancak işletmelerin ihtiyaçlarına bağlı olarak enterprise sürümler ek avantajlar sağlayabilir. Bu yüzden, enterprise sürümleri özellikle büyük ölçekli veya kritik öneme sahip uygulamalar için tercih edilebilir.

Bizim konumuz özelinde ise en önemli fark şudur:
Veritabanı yedek birkaç şekilde alınabilir. Bunlar:

Full Backup (Tam Yedekleme)

  • Tanım: Full backup, veritabanının tüm verilerinin tam bir kopyasını alır. Bu, tüm tabloları, indeksleri, veri dosyalarını ve diğer yapılandırma bilgilerini içerir.
  • Avantajlar:
    • Kolay Geri Yükleme: Geri yükleme işlemi basittir çünkü tek bir yedekleme dosyasından tüm veriler geri yüklenir.
    • Tam Kapsam: Tüm veri ve yapılandırma bilgileri tek bir yedekleme setinde bulunur.
  • Dezavantajlar:
    • Zaman ve Kaynak Kullanımı: Full backup işlemi uzun sürebilir ve büyük miktarda disk alanı gerektirebilir.
    • Depolama: Her yedekleme seti büyük miktarda depolama alanı gerektirir.

Incremental Backup (Artımlı Yedekleme)

  • Tanım: Incremental backup, son full backup veya son incremental backup’tan sonra yapılan değişiklikleri yedekler. Bu, sadece değişen veya yeni eklenen verileri içerir.
  • Avantajlar:
    • Verimlilik: Daha az disk alanı kullanır ve yedekleme işlemi daha hızlıdır çünkü sadece değişiklikler yedeklenir.
    • Depolama: Depolama gereksinimleri daha düşüktür, bu da maliyetleri azaltır.
  • Dezavantajlar:
    • Geri Yükleme Süreci: Geri yükleme işlemi daha karmaşıktır çünkü son full backup ve tüm ilgili incremental backup’lar sırasıyla uygulanmalıdır.
    • Potansiyel Hata Riski: Bir incremental backup setinde hata veya kayıp varsa, tüm geri yükleme işlemi etkilenebilir.

PostgreSQL ve EnterpriseDB’de Yedekleme

PostgreSQL (Community Edition)

  • Full Backup: PostgreSQL’de full backup almak için genellikle pg_dump ve pg_basebackup araçları kullanılır. pg_dump belirli bir veritabanını yedeklerken, pg_basebackup tüm veritabanı kümesini yedekler.
  • Incremental Backup: PostgreSQL’in yerel incremental backup desteği yoktur, ancak Write-Ahead Logging (WAL) archiving ile benzer bir işlevsellik sağlanabilir. WAL segmentleri, veritabanında yapılan değişiklikleri içerir ve bu segmentler düzenli olarak arşivlenerek incremental backup benzeri bir yapı oluşturulabilir.

EnterpriseDB (EDB) ve Diğer Enterprise Sürümleri

  • Full Backup: Enterprise sürümlerinde de pg_dump ve pg_basebackup araçları kullanılır. Ancak, ek yönetim araçları ve kullanıcı dostu arayüzler sunabilirler.
  • Incremental Backup: Enterprise sürümleri genellikle daha gelişmiş incremental backup ve Point-In-Time Recovery (PITR) özellikleri sunar. EDB gibi şirketler, bu süreçleri kolaylaştıran ve yönetimi basitleştiren araçlar sunar. Ayrıca, WAL segmentlerinin yönetimini ve incremental backup işlemlerini daha etkin hale getiren ek yazılım çözümleri bulunabilir.

Sonuç

  • Full Backup: Her iki sürümde de geniş kapsamlı ve kolay geri yükleme sağlar, ancak daha fazla zaman ve depolama alanı gerektirir.
  • Incremental Backup: Depolama ve zaman açısından daha verimlidir, ancak geri yükleme işlemi daha karmaşıktır. PostgreSQL’in topluluk sürümünde WAL archiving kullanılarak yapılabilirken, enterprise sürümler daha kullanıcı dostu ve entegre çözümler sunar.

İşletmelerin gereksinimlerine ve mevcut kaynaklarına bağlı olarak, bu yedekleme stratejileri arasında seçim yapılabilir. Enterprise sürümler, özellikle büyük ve kritik veritabanları için daha gelişmiş ve yönetilebilir yedekleme çözümleri sunar.

Paylaşacağım script’lerin PostgreSQL’in ücretsiz sürümü olan Community Edition için hazırlanmıştır. Bu script’leri kullanmak için ekstra özel yazılımlara ihtiyacınız bulunmuyor (PGAdmin-pg_dump hariç) dolayısı ile çok temel bir makine ile de yedekleme işlemlerinizi gerçekleştirebilirsiniz. Yedekleme işlemleri içinde 2 farklı yol paylaştım:
1) Script dosyalarında kullanıcı adı şifre gibi bilgilerin de tanımlanması
2) Script dosyasında kullanılacak kullanıcı adı şifre bilgilerinin işletim sistemi üzerinde tanımlanması

Bu kısmı da güvenlik konusunda ki ihtiyaçlarınıza göre düzenleyebilirsiniz. İlgili script dosyalarına aşağıdaki GitHub reposu üzerinden erişebilirsiniz:

https://github.com/MuhammedPOLAT/postgresql_backup

Database ürün çeşitleri için aşağıdaki linkleri inceleyebilirsiniz:
PostgreSQL (Community Edition)
EnterpriseDB (EDB)

Yorum Yap!

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir


The reCAPTCHA verification period has expired. Please reload the page.