narbulut

PostgreSQL Veritabanı Nasıl Yedeklenir?

15 May, 2026

Bir veritabanı, çoğu işletmenin en değerli dijital varlığıdır. Müşteri kayıtları, siparişler, finansal hareketler, uygulama verileri… Hepsi PostgreSQL gibi bir veritabanında durur. Peki bu verilere bir gün bir şey olursa? Yanlışlıkla silinen bir tablo, bozulan bir disk ya da bir fidye yazılımı saldırısı, yıllarca biriktirdiğiniz veriyi saniyeler içinde yok edebilir.

İşte tam da bu yüzden düzenli ve doğru yapılandırılmış yedekleme, tartışılması gereken bir konu değil; olmazsa olmaz bir zorunluluktur. Üstelik KVKK kapsamında kişisel veri işleyen her kurum için yedekleme, aynı zamanda yasal bir sorumluluktur.

Bu rehberde PostgreSQL veritabanınızı baştan sona nasıl yedekleyeceğinizi adım adım, ekran görüntüleriyle anlatacağız. Komut satırından çekinmenize gerek yok — her komutu ne işe yaradığıyla birlikte açıklayacağız ve görsel arayüzle (pgAdmin) yedek alma yöntemini de göstereceğiz.

Yedeklemeye Başlamadan Önce: Bilmeniz Gereken 3 Temel Kavram

Yöntemlere geçmeden önce, doğru bir yedekleme stratejisini şekillendiren üç temel kavramı kısaca tanıyalım.

RPO ve RTO

RPO (Recovery Point Objective), kabul edilebilir maksimum veri kaybınızı tarif eder: “En fazla kaç saatlik veriyi kaybetmeyi göze alabilirim?” RTO (Recovery Time Objective) ise “Bir felaket anında sistemi ne kadar sürede ayağa kaldırmam gerekiyor?” sorusunun cevabıdır. Yedekleme sıklığınızı ve yönteminizi bu iki hedef belirler.

3-2-1 Kuralı

Sağlam bir yedekleme stratejisinin altın kuralı şudur: Verinizin 3 kopyası olsun, bunları 2 farklı ortamda saklayın ve en az 1 kopyayı tesis dışında (örneğin bulutta) tutun. Tek bir yedek, yedek sayılmaz.

Yedek test edilmeden yedek değildir

Hiç geri yüklenmemiş bir yedek, çalıştığından emin olamadığınız bir umuttan ibarettir. Bu yüzden bu rehberde geri yükleme (restore) adımlarını da göstereceğiz.

PostgreSQL’de Yedekleme: 3 Temel Yöntem

PostgreSQL’de veriyi yedeklemenin birbirinden farklı üç yaklaşımı vardır:

  • Mantıksal yedekleme (pg_dump / pg_dumpall): Veritabanını yeniden oluşturacak SQL komutlarına ya da özel bir arşiv dosyasına dönüştürür. En esnek ve en yaygın yöntemdir.
  • Fiziksel yedekleme (pg_basebackup): Veritabanı dosyalarının birebir kopyasını alır. Büyük veritabanlarında hızlıdır.
  • Sürekli arşivleme + PITR: WAL kayıtları sayesinde veritabanını geçmişteki herhangi bir ana geri döndürmenizi sağlar.

Çoğu kullanıcı için günlük hayatta en pratik ve yeterli yöntem mantıksal yedeklemedir. O yüzden işe oradan başlıyoruz.

Yöntem 1: pg_dump ile Mantıksal Yedekleme (En Yaygın Yöntem)

pg_dump, tek bir veritabanını dosyaya aktaran komut satırı aracıdır. PostgreSQL ile birlikte hazır gelir, ekstra kurulum gerektirmez.

Adım 1: PostgreSQL’e bağlanın ve sürümünüzü kontrol edin

Önce her şeyin yerli yerinde olduğundan emin olalım. Terminal (Linux) veya Komut İstemi (Windows) açıp şu komutla bağlantıyı ve sürümü kontrol edin:

psql -U postgres -c "SELECT version();"
PostgreSQL sürüm sorgusu
PowerShell’de sürüm sorgusu ve dönen PostgreSQL 17.10 satırı

Adım 2: Tek bir veritabanını yedekleyin

En basit yedekleme komutu şudur. veritabani_adi yerine kendi veritabanınızın adını yazın:

pg_dump -U postgres -d veritabani_adi -f yedek.sql

Bu komut, veritabanınızı yedek.sql adında düz bir metin dosyasına aktarır. Dosyanın içinde, veritabanını sıfırdan yeniden oluşturacak tüm SQL komutları bulunur.

pg_dump komutu
pg_dump komutunun çalışıp temiz şekilde tamamlanması

Adım 3: Oluşan yedek dosyasını kontrol edin

Komut çalıştıktan sonra yedek dosyanızın gerçekten oluştuğunu doğrulayın:

dir yedek.sql

Dosyanın boyutunun 0 olmadığından emin olun — bu, yedeğin içinde gerçekten veri olduğunu gösterir.

yedek.sql dosya boyutu
dir yedek.sql çıktısı — dosya boyutu (29321) görünür

Adım 4: Sıkıştırılmış “custom format” yedek alın (Önerilen)

Düz .sql dosyası okunabilir ama büyük veritabanlarında çok yer kaplar. Bunun yerine, sıkıştırılmış ve geri yüklerken daha esnek olan custom format kullanmanızı öneririz:

pg_dump -U postgres -d veritabani_adi -F c -f yedek.dump

Buradaki -F c ifadesi, çıktının özel (custom) sıkıştırılmış biçimde olmasını sağlar. Bu format, ileride tek tek tabloları geri yükleyebilmenize ve paralel geri yükleme yapabilmenize imkân tanır.

sql ve dump boyut karşılaştırması
.sql (29321) ile .dump (6679) dosya boyutlarının karşılaştırması

Adım 5: Tüm veritabanlarını birden yedekleyin (pg_dumpall)

Sunucunuzda birden fazla veritabanı varsa ve hepsini (kullanıcılar, roller dahil) tek seferde yedeklemek istiyorsanız pg_dumpall kullanın:

pg_dumpall -U postgres -f tum_cluster.sql

Bu komut, sadece veritabanlarını değil; kullanıcıları, rolleri ve sunucu genelindeki tüm ayarları da yedekler.

pg_dumpall komutu
pg_dumpall komutu ve oluşan tum_cluster.sql dosyası

Yöntem 2: pgAdmin ile Arayüzden Yedekleme

Komut satırıyla uğraşmak istemeyenler için PostgreSQL’in resmi yönetim aracı pgAdmin, birkaç tıklamayla yedek almanızı sağlar.

Adım 1: Veritabanına sağ tıklayın

pgAdmin’i açın, sol taraftaki ağaç yapısından yedeklemek istediğiniz veritabanına sağ tıklayın ve açılan menüden Backup… seçeneğini seçin.

pgAdmin Backup menüsü
pgAdmin’de veritabanına sağ tık, menüde Backup… vurgulu

Adım 2: Dosya adını ve formatı belirleyin

Açılan pencerede yedek dosyasının kaydedileceği konumu ve adını girin. Format olarak Custom seçmenizi öneririz — bu, komut satırındaki -F c seçeneğinin görsel karşılığıdır.

pgAdmin Backup penceresi
pgAdmin Backup penceresi — Filename dolu ve Format = Custom

Adım 3: Yedeklemeyi başlatın ve sonucu görün

Backup düğmesine tıkladığınızda işlem başlar. Sağ alt köşede işlemin başarıyla tamamlandığını gösteren bildirimi göreceksiniz.

pgAdmin işlem tamamlandı
pgAdmin Processes sekmesinde “Finished” durumu

Adım 4: pgAdmin ile geri yükleme

pgAdmin yalnızca yedek almakla kalmaz; aldığınız yedeği arayüzden geri yüklemenizi de sağlar. Geri yüklemek istediğiniz veritabanına sağ tıklayın ve Restore… seçeneğini seçin. Açılan pencerede Format olarak Custom or tar seçin ve Filename alanında daha önce aldığınız .dump dosyasını gösterin. Restore düğmesine tıkladığınızda işlem başlar; Processes sekmesinde tamamlandığını (Finished) görebilirsiniz.

pgAdmin Restore penceresi
pgAdmin Restore penceresi — Format “Custom or tar” ve Filename’de .dump dosyası seçili

Yöntem 3: pg_basebackup ile Fiziksel Yedekleme

Çok büyük veritabanlarında veya tüm sunucunun birebir kopyasına ihtiyaç duyduğunuz durumlarda pg_basebackup devreye girer. Bu araç, veritabanı dosyalarının fiziksel bir kopyasını alır.

pg_basebackup -U postgres -D C:\yedek\base -F t -z -P

Komutun parçaları şu anlama gelir:

  • -D C:\yedek\base → yedeğin yazılacağı klasör
  • -F t → çıktıyı tek bir tar dosyası olarak al
  • -z → sıkıştır
  • -P → ilerleme çubuğunu göster
pg_basebackup ilerleme
pg_basebackup %100 ilerleme çıktısı (32182/32182 kB)
Not: pg_basebackup her zaman tüm sunucuyu (cluster) yedekler; tek bir veritabanını seçerek yedekleyemezsiniz. Tek veritabanı için pg_dump daha uygundur.

Sürekli Arşivleme ve PITR: Zamanda Geriye Dönmek

İleri düzey senaryolarda, veritabanını geçmişteki herhangi bir ana (örneğin yanlışlıkla yapılan bir silme işleminden bir saniye öncesine) geri döndürmek isteyebilirsiniz. Buna PITR (Point-in-Time Recovery) denir.

PITR, fiziksel bir base backup ile birlikte sürekli biriken WAL (Write-Ahead Log) kayıtlarının arşivlenmesiyle çalışır. Kabaca postgresql.conf dosyasında WAL arşivlemeyi açar:

wal_level = replica
archive_mode = on
archive_command = 'copy "%p" "C:\yedek\wal_arsivi\%f"'
postgresql.conf WAL ayarları
postgresql.conf’ta üç WAL satırının vurgulu hali

Bu yöntem, sıfır veri kaybı hedefleyen üretim ortamları için kritiktir. Kurulumu daha karmaşık olduğundan, küçük ve orta ölçekli ihtiyaçlar için önce pg_dump ile başlamanızı öneririz.

En Önemli Adım: Yedeği Geri Yükleme (Restore)

Bir yedeğin gerçekten işe yaradığını ancak geri yükleyince anlarsınız. İşte yedeklerinizi nasıl geri yükleyeceğiniz.

Custom format (.dump) yedeği geri yükleme

# Önce boş hedef veritabanını oluştur
psql -U postgres -c "CREATE DATABASE yeni_veritabani;"

pg_restore -U postgres -d yeni_veritabani yedek.dump

Düz SQL (.sql) yedeği geri yükleme

psql -U postgres -d yeni_veritabani -f yedek.sql

Geri yüklemeyi doğrulayın

Geri yükleme bittikten sonra, verinin gerçekten geldiğini bir sorguyla teyit edin:

psql -U postgres -d yeni_veritabani -c "SELECT count(*) FROM tablo_adi;"
Geri yükleme doğrulama
Restore adımları ve count = 500 doğrulama çıktısı

Bu adımı düzenli olarak tekrarlamanızı şiddetle öneririz. Çalışmayan bir yedek, hiç yedek almamaktan farksızdır.

Yedeklemeyi Otomatikleştirin

Manuel yedek almak unutulmaya çok açıktır. En sağlıklısı, yedeklemeyi zamanlanmış bir göreve bağlamaktır.

Windows (Görev Zamanlayıcı): Önce C:\yedek\yedek-al.bat adında bir toplu iş (batch) dosyası oluşturun ve içine yedekleme komutunu yazın:

pg_dump -U postgres -d veritabani_adi -F c -f C:\yedek\gunluk.dump

Ardından bu dosyayı her gün saat 02:00’de çalışacak şekilde Görev Zamanlayıcı’ya kaydedin:

schtasks /create /tn "NarbulutGunlukYedek" /tr "C:\yedek\yedek-al.bat" /sc daily /st 02:00 /f
schtasks zamanlanmış görev
schtasks komutu ve “SUCCESS” mesajı

Üçüncü Taraf Araçlara Kısa Bir Bakış

PostgreSQL’in kendi araçları çoğu ihtiyacı karşılar. Çok büyük ölçekli, çoklu sunucu içeren kurumsal ortamlarda ise paralel işleme, otomatik saklama politikaları ve bulut entegrasyonu sunan üçüncü taraf araçlar (örneğin Barman, WAL-G ve pgBackRest) tercih edilebilir.

Her durumda, doğru başlangıç noktası bir araç seçmek değil; RPO/RTO ve 3-2-1 kuralı üzerine kurulu sağlam bir stratejidir.

Doğru Yedekleme İçin En İyi Pratikler

  • Şifreleyin: Yedek dosyaları tüm veritabanınızı içerir. Özellikle bulutta saklarken mutlaka şifreleyin.
  • İzleyin: Bir yedek başarısız olduğunda sizi uyaracak bir izleme/bildirim kurun. Haftalarca fark edilmeyen başarısız bir yedek, en kötü senaryodur.
  • Tesis dışında saklayın: En az bir kopya, sunucunuzun bulunduğu yerden farklı bir konumda (bulut) olsun.
  • Düzenli test edin: Geri yükleme tatbikatını takviminize ekleyin.
  • 3-2-1 kuralına uyun: 3 kopya, 2 ortam, 1 tesis dışı.

PostgreSQL Yedeklerinizi Buluta Taşıyın

3-2-1 kuralının “tesis dışı” kopyasını otomatik, şifreli ve KVKK uyumlu biçimde almak için PostgreSQL veritabanlarınızı Narbulut bulut yedekleme altyapısına taşıyabilirsiniz.

PostgreSQL Yedekleme Çözümünü İnceleyin

Yorum Yazın

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

Narbulut Ürün Analizi

Adım 1/12
Şirketiniz için hangi alanda teknolojik bir iyileştirme planlıyorsunuz?
Veri Güvenliği ve YedeklemeFidye yazılımları, silinen dosyalar ve felaket kurtarma.
Bulut Sunucu (IaaS)Web sitesi, ERP, CRM veya uygulama barındırma.
Takım İçi İşbirliğiGüvenli dosya paylaşımı ve ofis dışı çalışma.
Nesne Depolama (S3)Yazılımcılar için Object Storage.
Hangi sektörde faaliyet gösteriyorsunuz?
Sağlık / MedikalHasta verileri (KVKK kritik).
Finans / MuhasebeHassas mali veriler.
Üretim / MühendislikCAD çizimleri ve üretim planları.
Diğer / Genel HizmetOfis dokümanları ve genel veriler.
Korunması gereken cihazların türü nedir?
Personel BilgisayarlarıLaptop ve masaüstü son kullanıcı cihazları.
Fiziksel / Sanal SunucularDatabase, Active Directory veya File Server.
Yedekleme stratejiniz nasıl olmalı?
Dosya ve Klasör BazlıSadece önemli iş dosyaları (XLS, PDF, SQL) yedeklensin.
Tam Disk İmajı (Image)İşletim sistemi dahil "Her Şey" yedeklensin.
Buluta yedekleme için Upload hızınız nasıl?
Fiber / Yüksek HızBüyük verileri hızlıca gönderebilirim.
Standart / ADSLHızım sınırlı, sıkıştırma önemli.
Fidye yazılımları (Ransomware) tehdit mi?
Evet, Çok KritikGeçmişte yaşadık veya risk altındayız.
Standart Koruma YeterliTemel yedekleme önlemleri yeterli.
Versiyonları ne kadar saklamak istersiniz?
90
30 - 90 GünYakın tarihli hataları düzeltmek için.
365+
1 Yıl ve ÜzeriYasal zorunluluklar veya arşiv.
Sunucunun birincil görevi ne olacak?
E-Ticaret / Web SitesiYüksek uptime ve hız gerekiyor.
ERP / Muhasebe ProgramıDatabase performansı önemli.
Yazılım GeliştirmeEsnek kaynak yönetimi.
Hangi altyapıya ihtiyacınız var?
Windows ServerASP.NET, MSSQL, RDP.
Linux (Ubuntu/CentOS)PHP, Python, MySQL, Docker.
Tahmini kullanıcı yoğunluğu nedir?
Düşük / OrtaBaşlangıç seviyesi veya yeni proje.
Yüksek TrafikYoğun kampanya veya çok kullanıcı.
Sunucu yönetimini kim yapacak?
Ben YöneteceğimTeknik ekibim var, root yeterli.
Destek İstiyorumManaged Services hizmeti lazım.
Ortak alanda çalışacak kişi sayısı?
1 - 10 KullanıcıKüçük ekipler.
10 - 50+ KullanıcıDepartman bazlı yetki gerekli.
Ofis dışından erişim gerekli mi?
Evet, KesinlikleSaha ekibi cepten dosya yüklemeli.
Hayır, Sadece OfisSadece şirket bilgisayarlarından erişim.
Yanıtlarınız Analiz Ediliyor...
SİZE EN UYGUN ÇÖZÜM

Ürün Başlığı

Açıklama

Ürünü Hemen İncele

Ürün Bilgi Alma Formu

Çözüm uzmanlarımızın size ulaşması için formu doldurunuz.

Size uygun Narbulut Cloud Server planlarına göz atın

Narbulut Cloud Server ile ihtiyaçlarınıza en uygun sunucuları yapılandırın.

    SUNUCU TEKLİF & YAPILANDIRMA FORMU

    1. KURUMSAL KİMLİK & İLETİŞİM
    2. TEKNİK GEREKSİNİMLER
    3. LİSANS YÖNETİMİ

    Check out Narbulut Cloud Server plans that suit you

    Configure the servers that best fit your needs with Narbulut Cloud Server.

      SERVER QUOTE & CONFIGURATION FORM

      1. CORPORATE IDENTITY & CONTACT
      2. TECHNICAL REQUIREMENTS
      3. LICENSE MANAGEMENT

      Narbulut Mobile’ı İndirin

      Uygulamayı indirmek istediğiniz platformu seçin

      Download Narbulut Mobile

      Select the platform you want to download the app

      ×