Takip et

MongoDB Veritabanını Ubuntu 18.04 Üzerinde Yedekleme, Geri Yükleme ve Taşıma Rehberi

MongoDB Veritabanını Ubuntu 18.04 Üzerinde Yedekleme, Geri Yükleme ve Taşıma Rehberi Giriş Günümüzün hızla değişen dijital dünyasında

MongoDB Veritabanını Ubuntu 18.04 Üzerinde Yedekleme, Geri Yükleme ve Taşıma Rehberi

Giriş

Günümüzün hızla değişen dijital dünyasında, veri her işletmenin en değerli varlıklarından biridir. Bu verilerin güvenliği, erişilebilirliği ve bütünlüğü, bir felaket anında iş sürekliliğini sağlamak için kritik öneme sahiptir. Özellikle NoSQL veritabanları arasında popülerliğini artıran MongoDB gibi dinamik ve ölçeklenebilir sistemlerde, sağlam bir yedekleme, geri yükleme ve taşıma stratejisi oluşturmak hayati bir gerekliliktir. Bu kapsamlı teknik makale, Ubuntu 18.04 işletim sistemi üzerinde çalışan bir MongoDB veritabanının nasıl güvenli bir şekilde yedekleneceğini, olası bir veri kaybı durumunda nasıl geri yükleneceğini ve farklı sunucular veya ortamlar arasında nasıl taşınacağını adım adım açıklamaktadır.

Veri kaybı, donanım arızası, yazılım hataları, yanlışlıkla yapılan silme işlemleri veya kötü niyetli saldırılar gibi birçok nedenden kaynaklanabilir. Bu tür senaryolara hazırlıklı olmak, yalnızca verilerinizi korumakla kalmaz, aynı zamanda işinizin kesintiye uğramadan devam etmesini de garanti eder. Ayrıca, veritabanlarını daha güçlü donanımlara, farklı veri merkezlerine veya bulut ortamlarına taşımak (migrasyon) da sık karşılaşılan bir operasyonel ihtiyaçtır. Bu rehber, hem basit mongodump/mongorestore araçlarını kullanarak hem de daha gelişmiş dosya sistemi anlık görüntüleri ve MongoDB’nin kendi replica set özelliklerini kullanarak bu işlemleri güvenli ve verimli bir şekilde gerçekleştirmenize yardımcı olacaktır. Ubuntu 18.04, uzun süreli destek (LTS) sağlayan ve MongoDB sunucuları için yaygın olarak kullanılan stabil bir platform olduğundan, bu rehberin odak noktası olacaktır.

Ön Koşullar

Bu rehberdeki adımları başarıyla uygulayabilmek için aşağıdaki ön koşulların yerine getirilmiş olması gerekmektedir:

* Ubuntu 18.04 Sunucusu: MongoDB kurulu ve çalışan bir Ubuntu 18.04 sunucusuna SSH erişiminiz olmalıdır.
* MongoDB Kurulumu: Sunucunuzda MongoDB Community Edition veya Enterprise Edition kurulu ve yapılandırılmış olmalıdır.
* Yönetici Yetkileri: sudo yetkilerine sahip bir kullanıcıya veya root erişimine sahip olmanız gerekmektedir.
* Temel Linux Bilgisi: Temel Linux komutları (dizin işlemleri, dosya kopyalama, izin yönetimi vb.) hakkında bilgi sahibi olmak faydalı olacaktır.
* Yeterli Disk Alanı: Yedekleme işlemleri için veritabanı boyutunun en az iki katı kadar boş disk alanına sahip olmanız önerilir.

MongoDB Yedekleme Yöntemleri

MongoDB veritabanlarını yedeklemek için birkaç farklı yöntem bulunmaktadır. Her yöntemin kendine özgü avantajları ve dezavantajları vardır ve seçiminiz veritabanınızın boyutu, iş yükü, kesinti süresi toleransı ve kurtarma noktası hedeflerine (RPO/RTO) bağlı olacaktır.

1. mongodump Kullanarak Yedekleme

mongodump aracı, MongoDB’nin kendi bünyesinde gelen ve en yaygın kullanılan mantıksal yedekleme yöntemidir. Veritabanının ikili (BSON) formatında bir kopyasını oluşturur ve koleksiyon bazında veya veritabanı bazında yedeklemeye olanak tanır. mongodump ile alınan yedekler, mongorestore aracı ile kolayca geri yüklenebilir.

a. Tüm Veritabanını Yedekleme

Varsayılan olarak, mongodump MongoDB sunucusundaki tüm veritabanlarını yedekler. Çıktı dizini belirtilmediğinde, mevcut dizinde her veritabanı için ayrı bir klasör oluşturur.

mongodump --out /yedekler/mongodb_yedek_$(date +%Y%m%d%H%M%S)

Bu komut, /yedekler/ dizini altına, o anki tarih ve saati içeren bir klasör (örneğin, mongodb_yedek_20231027153000) oluşturacak ve tüm veritabanlarını bu klasöre yedekleyecektir.

b. Belirli Bir Veritabanını Yedekleme

Sadece belirli bir veritabanını yedeklemek isterseniz --db veya -d parametresini kullanabilirsiniz.

mongodump --db veritabani_adi --out /yedekler/veritabani_adi_yedek

Bu komut, veritabani_adi isimli veritabanını /yedekler/veritabani_adi_yedek/veritabani_adi dizinine yedekleyecektir.

c. Belirli Bir Koleksiyonu Yedekleme

Daha da granüler bir yedekleme için, belirli bir veritabanı içindeki tek bir koleksiyonu yedekleyebilirsiniz.

mongodump --db veritabani_adi --collection koleksiyon_adi --out /yedekler/koleksiyon_adi_yedek

Bu komut, veritabani_adi içindeki koleksiyon_adi koleksiyonunu /yedekler/koleksiyon_adi_yedek/veritabani_adi dizinine yedekleyecektir. Çıktı olarak koleksiyon_adi.bson ve koleksiyon_adi.metadata.json dosyaları oluşacaktır.

d. Kimlik Doğrulama (Authentication) ile Yedekleme

Eğer MongoDB sunucunuzda kimlik doğrulama etkinse, mongodump komutuna kullanıcı adı, parola ve kimlik doğrulama veritabanını belirtmeniz gerekir.

mongodump --host localhost --port 27017 --username admin --password "sifre" --authenticationDatabase admin --out /yedekler/guvenli_yedek

Bu örnekte, admin kullanıcısı ve belirtilen parola ile admin veritabanı üzerinden kimlik doğrulaması yapılır.

e. Replica Set’ten Yedekleme (Secondary Üye)

Üretim ortamlarında, mongodump işlemini birincil (primary) sunucudan yapmak performansı etkileyebilir. Bu nedenle, replica set’in ikincil (secondary) üyelerinden birinden yedek almak daha iyi bir uygulamadır. Bu, birincil sunucunun iş yükünü azaltır ve uygulamanın performansını etkilemez.

mongodump --host replset_adi/secondary_host_ip:27017 --readPreference secondary --out /yedekler/replset_yedek

Burada replset_adi, replica set’inizin adıdır ve secondary_host_ip yedekleme yapacağınız ikincil üyenin IP adresidir. --readPreference secondary parametresi, okuma işlemlerinin ikincil üyeden yapılmasını sağlar.

f. Sıkıştırma ile Yedekleme

Yedekleme boyutunu azaltmak ve disk alanı tasarrufu sağlamak için --gzip parametresini kullanarak yedekleri sıkıştırabilirsiniz.

mongodump --gzip --out /yedekler/sıkıstırılmıs_yedek

Bu komut, BSON dosyalarını gzip formatında sıkıştırır. Geri yükleme yaparken mongorestore da --gzip parametresini destekler.

2. Dosya Sistemi Anlık Görüntüleri (Filesystem Snapshots) ile Yedekleme

Dosya sistemi anlık görüntüleri (örneğin, LVM anlık görüntüleri veya bulut sağlayıcıların (AWS EBS, Azure Disk) anlık görüntüleri), veritabanının belirli bir zamandaki fiziksel bir kopyasını oluşturur. Bu yöntem, özellikle çok büyük veritabanları için mongodump‘tan daha hızlı olabilir ve genellikle tüm veri dizinini tek bir işlemde yedekler.

Önemli Not: MongoDB’nin veri bütünlüğünü sağlamak için anlık görüntü almadan önce veritabanının tutarlı bir durumda olması gerekir. WiredTiger depolama motoru kullanan MongoDB sürümleri (3.2 ve üzeri) için, fsyncLock() komutu kullanılarak veritabanı yazma işlemleri kilitlenmeli, anlık görüntü alındıktan sonra kilit açılmalıdır. Replica Set ortamlarında ise bu işlem, birincil sunucuyu etkilememek için ikincil üyelerde yapılmalıdır.

a. Adımlar (Tekil MongoDB İçin)

1. MongoDB’yi Kilitleme: Tüm yazma işlemlerini durdurmak için MongoDB’yi kilitler. Bu, veritabanını tutarlı bir duruma getirir.

mongo --eval "db.fsyncLock()"

Bu komut, mongo kabuğunu kullanarak fsyncLock komutunu çalıştırır ve başarılı olursa bir JSON çıktısı döndürür.

2. Dosya Sistemi Anlık Görüntüsü Alma: Veritabanı veri dizininin (varsayılan olarak /var/lib/mongodb) bulunduğu mantıksal birimin (Logical Volume) bir anlık görüntüsünü alın.

# LVM kullanan bir sistemde örnek komut:
    sudo lvcreate --size 10G --snapshot --name mongodb_snap /dev/vg_name/lv_name
    # Burada 10G anlık görüntünün boyutunu, mongodb_snap adını, vg_name ve lv_name ise MongoDB veri dizininin bulunduğu LVM birimini temsil eder.

3. MongoDB Kilidini Açma: Anlık görüntü alındıktan sonra MongoDB’nin yazma işlemlerine devam etmesine izin verin.

mongo --eval "db.fsyncUnlock()"
b. Replica Set Ortamında Anlık Görüntüler

Replica Set ortamında, birincil sunucuyu etkilememek için anlık görüntü alma işlemi aşağıdaki gibi yapılmalıdır:
1. Replica Set’teki bir ikincil üyeyi geçici olarak durdurun veya rs.freeze() komutu ile senkronizasyonunu dondurun.
2. İkincil üyenin MongoDB servisini durdurun (sudo systemctl stop mongod).
3. Veri dizininin bir anlık görüntüsünü alın.
4. MongoDB servisini tekrar başlatın (sudo systemctl start mongod).
5. Eğer rs.freeze() kullandıysanız, süresi dolduktan sonra senkronizasyon otomatik devam edecektir.

Bu yöntem, büyük veritabanları için hızlı yedekleme sağlar ancak geri yükleme işlemi genellikle tüm sunucunun veya veri dizininin eski haline getirilmesini gerektirir.

MongoDB Geri Yükleme Yöntemleri

Yedekleme kadar, yedeklerin başarıyla geri yüklenebilmesi de kritik öneme sahiptir. MongoDB yedeklerini geri yüklemek için de kullanılan yedekleme yöntemine göre farklı yaklaşımlar mevcuttur.

1. mongorestore Kullanarak Geri Yükleme

mongorestore aracı, mongodump ile oluşturulan BSON yedeklerini bir MongoDB sunucusuna geri yüklemek için kullanılır.

a. Tüm Veritabanını Geri Yükleme

mongodump ile alınan bir yedek dizinini olduğu gibi geri yüklemek için hedef dizini belirtmeniz yeterlidir.

mongorestore /yedekler/mongodb_yedek_20231027153000

Bu komut, /yedekler/mongodb_yedek_20231027153000 dizinindeki tüm veritabanlarını, orijinal adlarıyla mevcut MongoDB sunucusuna geri yükleyecektir. Eğer bu veritabanları zaten varsa, yeni veriler mevcut verilerle birleştirilir (upsert).

b. Belirli Bir Veritabanını Geri Yükleme

Yedekten sadece belirli bir veritabanını geri yüklemek isterseniz, mongodump çıktısındaki ilgili veritabanı dizinini belirtmeli ve --db parametresiyle hedef veritabanı adını verebilirsiniz.

mongorestore --db yeni_veritabani_adi /yedekler/veritabani_adi_yedek/veritabani_adi

Bu komut, veritabani_adi yedek dizininden verileri okuyacak ve bunları MongoDB sunucusunda yeni_veritabani_adi olarak adlandırılan bir veritabanına geri yükleyecektir. Eğer yeni_veritabani_adi belirtilmezse, orijinal veritabanı adıyla geri yüklenir.

c. Belirli Bir Koleksiyonu Geri Yükleme

Sadece belirli bir koleksiyonu geri yüklemek için --collection parametresini kullanın ve BSON dosyasının yolunu belirtin.

mongorestore --db hedef_veritabani --collection hedef_koleksiyon /yedekler/koleksiyon_adi_yedek/veritabani_adi/koleksiyon_adi.bson

Bu komut, koleksiyon_adi.bson dosyasındaki verileri hedef_veritabani içindeki hedef_koleksiyon‘a geri yükleyecektir.

d. Mevcut Veriyi Silerek Geri Yükleme (--drop)

Geri yükleme yapmadan önce hedef veritabanındaki veya koleksiyondaki mevcut verileri silmek isterseniz --drop parametresini kullanabilirsiniz. Bu, temiz bir geri yükleme sağlar.

mongorestore --drop /yedekler/mongodb_yedek_20231027153000

Bu komut, geri yüklenecek her veritabanı veya koleksiyon için önce mevcut olanı siler, ardından yedeği geri yükler. Dikkatli kullanılmalıdır!

e. Sıkıştırılmış Yedekten Geri Yükleme

--gzip parametresi ile sıkıştırılmış bir yedekten geri yükleme yapmak için mongorestore‘a aynı parametreyi eklemeniz yeterlidir.

mongorestore --gzip /yedekler/sıkıstırılmıs_yedek

mongorestore sıkıştırılmış dosyaları otomatik olarak açacaktır.

2. Dosya Sistemi Anlık Görüntülerinden Geri Yükleme

Dosya sistemi anlık görüntülerinden geri yükleme, genellikle tüm veri dizinini veya hatta tüm sunucuyu anlık görüntünün alındığı zamanki durumuna döndürmeyi içerir. Bu yöntem, mongodump/mongorestore‘dan farklı olarak, veritabanını mantıksal olarak değil, fiziksel olarak eski haline getirir.

a. Adımlar

1. MongoDB Servisini Durdurma: Geri yükleme işlemine başlamadan önce MongoDB servisini durdurun. Bu, veri bütünlüğünü sağlar ve çakışmaları önler.

sudo systemctl stop mongod

2. Veri Dizinini Eski Haline Getirme: Anlık görüntüyü orijinal veri dizininin üzerine geri yükleyin. Bu adım, kullandığınız dosya sistemi veya bulut sağlayıcısına göre değişiklik gösterecektir.

# LVM kullanan bir sistemde anlık görüntüyü birleştirmek için örnek komut:
    sudo lvconvert --merge /dev/vg_name/mongodb_snap
    # Bu komut, mongodb_snap anlık görüntüsünü orijinal mantıksal birimle birleştirerek verileri geri yükler.

Bulut ortamlarında (AWS EBS, Azure Disk), anlık görüntüden yeni bir disk oluşturup bunu sunucuya bağlayabilir veya mevcut diski anlık görüntüden geri yükleyebilirsiniz.

3. MongoDB Servisini Başlatma: Veri dizini başarıyla geri yüklendikten sonra MongoDB servisini başlatın.

sudo systemctl start mongod

MongoDB, veri dosyalarını kontrol edecek ve herhangi bir tutarsızlık durumunda kurtarma (recovery) sürecini otomatik olarak başlatacaktır.

MongoDB Veritabanı Taşıma (Migration)

Veritabanı taşıma, mevcut bir MongoDB kurulumundaki verileri yeni bir konuma veya farklı bir sunucuya aktarma işlemidir. Bu işlem, genellikle donanım yükseltmeleri, veri merkezi geçişleri veya bulut geçişleri gibi senaryolarda gereklidir.

1. Aynı Sunucu Üzerinde Veri Dizinini Taşıma

Bazen, MongoDB’nin veri dosyalarının depolandığı dizini değiştirmek isteyebilirsiniz (örneğin, daha büyük veya daha hızlı bir diske taşımak için).

a. Adımlar

1. MongoDB Servisini Durdurma: Veri bütünlüğünü sağlamak için MongoDB servisini durdurun.

sudo systemctl stop mongod

2. Veri Dizinini Kopyalama/Taşıma: Mevcut veri dizinini yeni konuma kopyalayın. rsync komutu, dosya izinlerini ve sahipliklerini koruyarak kopyalama için idealdir.

sudo rsync -avP /var/lib/mongodb /yeni/dizin/mongodb
    # /var/lib/mongodb MongoDB'nin varsayılan veri dizinidir.
    # /yeni/dizin/mongodb ise yeni veri dizininizin yoludur.

3. Yeni Dizin İzinlerini Ayarlama: Kopyalanan dizinin ve dosyalarının mongodb kullanıcısına ait olduğundan emin olun.

sudo chown -R mongodb:mongodb /yeni/dizin/mongodb

4. MongoDB Yapılandırmasını Güncelleme: MongoDB yapılandırma dosyasını (/etc/mongod.conf) düzenleyerek yeni veri dizinini belirtin.

sudo nano /etc/mongod.conf

storage: bölümünde dbPath: satırını bulun ve yeni yolu girin:

storage:
      dbPath: /yeni/dizin/mongodb
      journal:
        enabled: true

5. MongoDB Servisini Başlatma: Değişiklikleri kaydettikten sonra MongoDB servisini başlatın.

sudo systemctl start mongod

Servisin başarıyla başladığını ve yeni veri dizinini kullandığını kontrol edin.

2. Farklı Bir Sunucuya Taşıma (Ubuntu 18.04’ten Ubuntu 18.04’e)

Veritabanını tamamen yeni bir sunucuya taşımak için çeşitli yöntemler mevcuttur. Seçim, kesinti süresi toleransınıza ve veritabanının boyutuna bağlıdır.

a. mongodump ve mongorestore Kullanarak Taşıma

Bu yöntem, küçük ve orta ölçekli veritabanları için basit ve etkili bir çözümdür, ancak taşıma süresince bir kesinti süresi gerektirir.

Adımlar:
1. Kaynak Sunucuda Yedek Alma: Eski sunucuda mongodump kullanarak veritabanının bir yedeğini alın.

# Kaynak sunucuda
    mongodump --out /tmp/mongodb_yedek_tasima

2. Yedeği Hedef Sunucuya Aktarma: Alınan yedeği scp veya rsync gibi araçlar kullanarak yeni sunucuya kopyalayın.

# Kaynak sunucudan hedef sunucuya
    scp -r /tmp/mongodb_yedek_tasima user@hedef_sunucu_ip:/tmp/
    # Alternatif olarak rsync:
    # rsync -avP /tmp/mongodb_yedek_tasima/ user@hedef_sunucu_ip:/tmp/mongodb_yedek_tasima/

3. Hedef Sunucuda Geri Yükleme: Yeni sunucuda MongoDB kurulu ve çalışır durumda olmalıdır. Yedeği mongorestore ile geri yükleyin.

# Hedef sunucuda
    mongorestore /tmp/mongodb_yedek_tasima

Geri yükleme tamamlandığında, veritabanınız yeni sunucuda kullanıma hazır olacaktır.

b. Replica Set Üyeliği ile Taşıma (Minimum Kesinti Süresi)

Üretim ortamları için bu yöntem, minimum kesinti süresiyle taşıma yapmanın en güvenli ve önerilen yoludur. Mevcut bir replica set’e yeni bir sunucu ekleyerek ve eski sunucuyu çıkararak gerçekleştirilir.

Adımlar:
1. Yeni Sunucuya MongoDB Kurulumu ve Yapılandırması: Hedef sunucuya MongoDB’yi kurun ve mongod.conf dosyasında replSet yapılandırmasını mevcut replica set adıyla ayarlayın. Servisi başlatın ancak henüz bir replica set’e üye olarak eklemeyin.

# /etc/mongod.conf dosyasında
    replication:
      replSetName: your_replica_set_name

Ardından MongoDB servisini başlatın: sudo systemctl start mongod.

2. Yeni Sunucuyu Replica Set’e Secondary Üye Olarak Ekleme: Mevcut replica set’in primary üyesi üzerinden mongo kabuğuna bağlanın ve yeni sunucuyu ekleyin.

mongo
    rs.add("yeni_sunucu_ip:27017")
    rs.status() # Durumu kontrol edin

Yeni üye, mevcut verileri primary’den otomatik olarak senkronize etmeye başlayacaktır. Bu işlem, veritabanının boyutuna ve ağ hızına bağlı olarak zaman alabilir.

3. Veri Senkronizasyonunu Bekleme: rs.status() komutunu kullanarak veya MongoDB loglarını izleyerek yeni üyenin senkronizasyonunun tamamlanmasını bekleyin. Yeni üyenin stateStr değeri “SECONDARY” olmalıdır.

4. Eski Sunucuyu Replica Set’ten Çıkarma (İsteğe Bağlı): Verilerin başarıyla senkronize edildiğinden ve yeni sunucunun stabil çalıştığından emin olduktan sonra, eski sunucuyu replica set’ten çıkarabilirsiniz.

rs.remove("eski_sunucu_ip:27017")

5. Gerekirse Yeni Sunucuyu Primary Yapma (Failover): Eğer taşıdığınız sunucu, replica set’in tek üyesi veya primary olmasını istediğiniz bir üye ise, rs.stepDown() komutu ile mevcut primary’nin primary rolünü bırakmasını sağlayabilir ve yeni sunucunun primary olmasını bekleyebilirsiniz.

rs.stepDown()

Bu komut, mevcut primary’nin secondary olmasına neden olur ve replica set yeni bir primary seçer. Eğer yeni sunucu uygun bir aday ise, primary rolünü üstlenebilir.

c. Dosya Sistemi Kopyalama ile Taşıma (Özel Durumlar)

Bu yöntem, mongodump/mongorestore‘dan daha hızlı olabilir, ancak veritabanı kopyalanırken her iki sunucuda da MongoDB’nin durdurulmasını gerektirir. Bu nedenle, genellikle daha küçük veritabanları veya kesinti süresinin kabul edilebilir olduğu test/geliştirme ortamları için uygundur.

Adımlar:
1. Her İki Sunucuda MongoDB’yi Durdurma: Kaynak ve hedef sunucularda MongoDB servisini durdurun.

sudo systemctl stop mongod

2. Kaynak Sunucudan Veri Dizinini Kopyalama: rsync komutunu kullanarak kaynak sunucunun veri dizinini hedef sunucuya kopyalayın.

# Kaynak sunucuda
    sudo rsync -avP /var/lib/mongodb/ user@hedef_sunucu_ip:/var/lib/mongodb/

P bayrağı ilerlemeyi gösterir, a arşivi modu (izinler, sahiplikler vb. korunur), v ise detaylı çıktıdır.

3. Hedef Sunucuda İzinleri Ayarlama: Kopyalanan veri dizininin ve dosyalarının mongodb kullanıcısına ait olduğundan emin olun.

# Hedef sunucuda
    sudo chown -R mongodb:mongodb /var/lib/mongodb

4. Hedef Sunucuda MongoDB’yi Başlatma: Veriler kopyalandıktan ve izinler ayarlandıktan sonra, hedef sunucuda MongoDB servisini başlatın.

sudo systemctl start mongod

MongoDB, veri dosyalarını kontrol edecek ve servisi başlatacaktır.

Gelişmiş Hususlar ve En İyi Uygulamalar

Veritabanı yedekleme, geri yükleme ve taşıma süreçleri sadece komut çalıştırmaktan ibaret değildir. Sağlam bir strateji, bazı gelişmiş hususları ve en iyi uygulamaları da içermelidir.

1. Yedekleme Otomasyonu

Manuel yedeklemeler zaman alıcı ve hataya açık olabilir. cron işleri veya otomasyon araçları kullanarak düzenli yedeklemeleri otomatikleştirin. Örneğin, günlük yedekleme ve eski yedekleri temizleme için bir cron işi:

# /etc/cron.d/mongodb_backup veya crontab -e ile ekle
0 2   * mongodump --gzip --out /yedekler/mongodb_yedek_$(date +\%Y\%m\%d\%H\%M\%S) && find /yedekler -type d -mtime +7 -exec rm -rf {} \; > /var/log/mongodb_backup.log 2>&1

Bu komut, her gün saat 02:00’de sıkıştırılmış bir yedek alır ve 7 günden eski yedek dizinlerini siler. Çıktı ve hatalar /var/log/mongodb_backup.log dosyasına yönlendirilir.

2. Yedeklerin Doğrulanması

Bir yedeğin var olması yeterli değildir; kritik olan, o yedeğin başarıyla geri yüklenebilir olmasıdır. Yedeklerinizi düzenli olarak test ortamlarında geri yükleyerek doğruluğunu ve bütünlüğünü kontrol edin. Bu, felaket kurtarma planınızın işe yaradığından emin olmanın tek yoludur.

3. Güvenlik

Yedekleriniz de ana veritabanınız kadar hassastır. Yedekleme dizinlerine erişimi kısıtlayın, yedekleri şifreleyin (disk şifrelemesi veya yedekleme aracı şifrelemesi ile) ve hassas verileri içeren yedekleri güvenli bir şekilde saklayın. Kimlik doğrulama ile yedekleme yaparken parola yönetimine dikkat edin.

4. Uzak Depolama

Yerel diskte tutulan yedekler, sunucu arızası veya fiziksel felaket durumunda kaybolabilir. Yedeklerinizi farklı bir fiziksel konumdaki uzak depolama alanına (örneğin, AWS S3, Azure Blob Storage, Google Cloud Storage, NAS veya başka bir veri merkezi) taşıyın.

5. Replica Set Kullanımının Önemi

Üretim ortamlarında, tekil (standalone) bir MongoDB sunucusu yerine her zaman bir replica set kullanın. Replica set’ler, yüksek erişilebilirlik, otomatik failover ve veri yedekliliği sağlar. Ayrıca, yedekleme işlemlerini birincil sunucunun performansını etkilemeden ikincil üyelerden yapma imkanı sunar.

6. Depolama Motoru Seçimi (WiredTiger)

MongoDB 3.2 ve sonraki sürümlerde varsayılan depolama motoru olan WiredTiger, çökme tutarlılığı (crash-consistency) ve doküman seviyesinde kilitleme gibi özellikler sunar. Bu, özellikle dosya sistemi anlık görüntüleri alırken veritabanının daha tutarlı bir durumda olmasını kolaylaştırır. Oplog (operation log), replica set’ler için kritik bir bileşendir ve nokta-zaman (point-in-time) kurtarma yetenekleri sağlar.

Sonuç

MongoDB veritabanınızın yedeklenmesi, geri yüklenmesi ve taşınması, her veri yöneticisinin ve sistem mühendisinin temel sorumluluklarından biridir. Ubuntu 18.04 üzerinde bu işlemleri gerçekleştirmek için mongodump, mongorestore gibi yerleşik araçlardan, dosya sistemi anlık görüntülerine ve replica set’lerin gelişmiş özelliklerine kadar birçok güçlü yöntem mevcuttur.

Bu rehber, size bu yöntemlerin nasıl uygulanacağına dair kapsamlı bir yol haritası sunmuştur. Ancak unutulmamalıdır ki, en iyi yedekleme ve kurtarma stratejisi, veritabanınızın özel ihtiyaçlarına, iş yükünüze, bütçenize ve kesinti süresi toleransınıza göre şekillendirilir. Yedeklerinizi düzenli olarak test etmek, otomasyonu benimsemek, güvenliği sağlamak ve yedekleri uzak bir konumda saklamak, felaket anında veri kaybını en aza indirmek ve iş sürekliliğini garantilemek için atılacak en önemli adımlardır. Sağlam bir strateji ile verileriniz güvende olacak ve işiniz kesintisiz bir şekilde devam edebilecektir.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

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

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version