Verileriniz işinizin en değerli varlığı. Bir donanım arızası, yanlışlıkla silinen bir koleksiyon ya da bir fidye yazılımı saldırısı, yıllarca biriktirdiğiniz veriyi saniyeler içinde yok edebilir. MongoDB gibi modern, esnek bir veritabanı kullanıyorsanız, düzenli ve doğru bir yedekleme stratejisi tercih değil, zorunluluktur.
Bu rehberde MongoDB yedeklemenin üç temel yöntemini — basitten gelişmişe — herkesin anlayabileceği bir dille ele alacağız: mantıksal yedekleme (mongodump), fiziksel yedekleme (anlık görüntü / snapshot) ve bulut tabanlı yönetilen yedekleme. Hangisinin size uygun olduğuna karar vermenize de yardımcı olacağız.
Önce Temel Kavramlar
MongoDB’de yedekleme yöntemini seçerken iki şey belirleyicidir: veritabanınızın boyutu ve kurulum tipiniz (tek sunucu, replica set ya da sharded cluster). Küçük bir veritabanı için en basit yöntem yeterliyken, büyük ve dağıtık sistemler farklı yaklaşımlar gerektirir.
Yedekleme yöntemleri kabaca üçe ayrılır:
Mantıksal yedekleme: Veriyi okunabilir/taşınabilir bir formata aktarır. Esnek ama büyük verilerde yavaştır.
Fiziksel yedekleme: Veritabanı dosyalarının doğrudan kopyasını alır. Çok hızlıdır, büyük veriler için idealdir.
Bulut / yönetilen yedekleme: Yedekleme işini bir servise devreder. Kurulum derdi yoktur, otomatiktir.
Önemli bir kural: Hiçbir yöntem tek başına her senaryoya uymaz. Üretim ortamları genellikle birden fazla yöntemi katmanlı olarak birlikte kullanır.
Yöntem 1: mongodump ile Mantıksal Yedekleme
En yaygın ve başlangıç için en uygun yöntem budur. mongodump aracı, çalışan veritabanınıza bağlanır ve veriyi BSON formatında dosyalara aktarır; mongorestore ise bu dosyaları geri yükler. Tüm sunucuyu, tek bir veritabanını veya hatta tek bir koleksiyonu yedekleyebilirsiniz.
Araçların Kurulumu
mongodump ve mongorestore, MongoDB’nin “Database Tools” paketiyle gelir. Resmi MongoDB sitesinden işletim sisteminize uygun sürümü indirip kurabilirsiniz.
MongoDB Database Tools paketinin resmi siteden indirilmesi
Komut çalıştığında, belirttiğiniz klasörün altına her veritabanı için ayrı klasörler ve BSON dosyaları oluşur.
Üretim ortamı notu: Yukarıdaki örnek, kimlik doğrulamasız yerel bağlantı içindir. Üretimde kimlik doğrulamalı bağlanın: --username KULLANICI --password PAROLA --authenticationDatabase admin.
mongodump komutunun çalışmasıYedek klasörünün altında her veritabanı için oluşan BSON dosyaları
Tutarlı Yedek İçin –oplog
Eğer veritabanınız yedekleme sırasında aktif olarak yazma alıyorsa (örneğin bir replica set), yedeğin tutarlı olması için --oplog seçeneğini kullanmanız önerilir. Bu seçenek, yedekleme sürerken gelen değişiklikleri de yakalar ve belirli bir ana geri dönmenizi (point-in-time recovery) sağlar:
mongodump --oplog --gzip --out=/yedek/tam
--gzip ise yedeği sıkıştırarak yerden tasarruf sağlar.
Not:--oplog yalnızca tüm sunucunun (tüm veritabanları) yedeğinde çalışır; tek bir --db ile birlikte kullanılamaz.
Geri Yükleme
Yedeği geri almak için mongorestore kullanılır:
mongorestore --drop --oplogReplay /yedek/tam
--drop, geri yüklemeden önce mevcut koleksiyonları temizleyerek tertemiz bir durum sağlar.
mongorestore ile geri yükleme işlemi
Görsel Arayüz Tercih Edenler İçin: MongoDB Compass
Komut satırıyla uğraşmak istemeyenler için MongoDB’nin resmi grafik arayüzü MongoDB Compass, koleksiyonları görsel olarak görmenizi ve verileri JSON formatında dışa aktarmanızı sağlar. Ancak Compass tam bir yedekleme aracı değildir; koleksiyon bazlı bir dışa aktarma sunar (indeksler ve tüm veritabanı yapısı bu export’a dahil olmaz). Gerçek bir yedek için mongodump tercih edilmelidir.
Artıları: Taşınabilir, seçici (tek koleksiyon bile alınabilir), farklı MongoDB sürümleri arasında uyumlu.
Eksileri: Büyük veritabanlarında yavaştır. Aynı veri setinde anlık görüntü yöntemi 3-5 dakika sürerken, mongodump çok daha uzun sürebilir.
Bu yüzden mantıksal yedekleme, küçük ve orta ölçekli kurulumlar için idealdir.
Yöntem 2: Dosya Sistemi Anlık Görüntüleri (Fiziksel Yedekleme)
Veritabanınız büyüdükçe (yüzlerce GB ve üzeri), mongodump yavaş kalır. Burada devreye dosya sistemi anlık görüntüleri (filesystem snapshot) girer. Bu “blok seviyesi” yöntem, MongoDB’nin veri dosyalarını barındıran diskin doğrudan kopyasını sistem araçlarıyla (örneğin Linux’ta LVM) alır.
Anlık görüntüler çok hızlı tamamlanır ve güvenilir çalışır; ancak MongoDB dışında ek sistem yapılandırması gerektirir. Geri yükleme de dakikalar içinde biter — bu yüzden büyük veritabanları için en pratik yöntemdir.
Linux LVM ile dosya sistemi anlık görüntüsü (snapshot)
Anlık Görüntüden Geri Yükleme
Bir sorun anında, alınan anlık görüntüyü ana birime geri birleştirerek (merge) veritabanını snapshot alındığı ana döndürebilirsiniz. Linux/LVM ortamında akış üç adımdır:
# 1. MongoDB servisini durdurun
systemctl stop mongod
# 2. Snapshot'ı ana birime geri birleştirin (snapshot alındığı ana dönülür)
lvconvert --merge /dev/vg0/mongo_snap
# 3. MongoDB servisini başlatın
systemctl start mongod
lvconvert –merge ile snapshot ana birime geri birleştiriliyor (Merged: %100)
Artıları: Çok hızlı, büyük verilerde verimli.
Eksileri: Kurulum ve yapılandırma bilgisi gerektirir; replica set ve sharded cluster’larda tutarlılık için ek adımlar gerekir.
Yöntem 3: Üçüncü Taraf Yedekleme Araçları
Yedekleme işiyle uğraşmak istemeyen ya da büyük/dağıtık (sharded cluster) kurulumları yöneten ekipler için üçüncü taraf araçlar işi kolaylaştırır.
Kendi altyapınızda kalmak istiyorsanız, Percona Backup for MongoDB (PBM) güçlü bir açık kaynak çözümdür; sıkıştırma, fiziksel yedek ve sharded cluster desteğiyle büyük kurulumlar için uygundur.
Artıları: Açık kaynak ve ücretsiz, otomatik zamanlama, sharded cluster karmaşıklığını sizin için yönetir.
Eksileri: Kurulum ve yapılandırma bilgisi gerektirir; bakımı size aittir.
Hangi Yöntemi Seçmeliyim?
Kısa bir rehber:
Küçük veritabanı / tek sunucu:mongodump yeterli ve en kolayı.
Büyük veritabanı (yüzlerce GB+): Dosya sistemi anlık görüntüleri.
Dağıtık / sharded cluster: Üçüncü taraf araçlar (örneğin PBM).
Yedeklemeyi Otomatikleştirme
Manuel yedekleme er ya da geç unutulur. En sağlıklısı, yedeklemeyi bir zamanlanmış göreve bağlamaktır.
Windows (Görev Zamanlayıcı) için örnek .bat dosyası:
@echo off
set TARIH=%date:~-4%-%date:~3,2%-%date:~0,2%
mongodump --uri="mongodb://localhost:27017" --gzip --out=C:\yedek\mongo_%TARIH%
Klasör adına tarih eklendiği için her yedek ayrı tutulur. Bu .bat dosyasını Görev Zamanlayıcı ile her gece belirli bir saatte çalıştırabilirsiniz.
Hangi Yöntemi Seçerseniz Seçin: 5 Altın Kural
3-2-1 kuralını uygulayın: Verinizin 3 kopyası, 2 farklı depolama türünde, 1 kopya da tesis dışında (offsite) bulunsun.
Yedeğinizi test edin: Hiç geri yüklenmemiş bir yedek, aslında bir varsayımdan ibarettir. Geri yükleme prosedürünüzü düzenli olarak deneyin.
Otomatikleştirin: Elle alınan yedekler insan hatası yüzünden er ya da geç aksar. Zamanlanmış görevlerle otomatikleştirin.
Şifreleyin ve erişimi kısıtlayın: Yedekler, üretim verinizin tam kopyasıdır; aynı güvenlik titizliğiyle korunmalıdır.
Yükü dağıtın: Mümkünse yedeği ana sunucudan değil, replica set’in ikincil (secondary) üyesinden alın.
Yedeklerinizi Güvenle Saklayın: Narbulut
MongoDB yedeklerinizi almak hikâyenin sadece yarısı. Asıl soru şu: Bu yedekleri nerede, ne kadar güvenli saklıyorsunuz? Aynı sunucuda duran bir yedek, sunucu çökerse veriyle birlikte yok olur.
Narbulut‘un bulut yedekleme ve depolama çözümleri, yerel olarak aldığınız MongoDB yedeklerini güvenli, şifreli ve coğrafi olarak ayrı bir bulut ortamında saklamanızı sağlar — yani 3-2-1 kuralındaki o kritik “tesis dışı kopya” işini sizin için çözer. Otomatik yükleme, sürüm takibi ve KVKK uyumlu altyapısıyla, fidye yazılımı ve donanım arızası gibi felaketlerde verileriniz her zaman erişilebilir kalır.
Verilerinizi Doğru Yerde Saklayın
Verilerinizi yedeklemek kadar, o yedekleri doğru yerde saklamak da önemlidir. MongoDB yedeklerinizi güvenli bulut katmanına taşımak için Narbulut ile başlayın, verileriniz güvende olsun.