Takip et

DigitalOcean Spaces’e Zamanlanmış MongoDB Yedeklemeleri Nasıl Kurulur?

DigitalOcean Spaces’e Zamanlanmış MongoDB Yedeklemeleri Nasıl Kurulur? Giriş: Veri Güvenliğinin Önemi ve Bulut Yedeklemeleri Modern iş dün

DigitalOcean Spaces’e Zamanlanmış MongoDB Yedeklemeleri Nasıl Kurulur?

Giriş: Veri Güvenliğinin Önemi ve Bulut Yedeklemeleri

Modern iş dünyasında veri, en değerli varlıklardan biridir. Veri kaybı, iş sürekliliğini ciddi şekilde etkileyebilir, finansal kayıplara yol açabilir ve marka itibarını zedeleyebilir. Bu nedenle, düzenli ve güvenilir yedekleme stratejileri uygulamak, herhangi bir organizasyon için hayati önem taşır. Özellikle dinamik ve büyüyen veri tabanları için, otomatikleştirilmiş ve bulut tabanlı yedeklemeler, hem güvenlik hem de yönetim kolaylığı açısından ideal çözümler sunar.

MongoDB, esnek yapısı, ölçeklenebilirliği ve performansıyla popüler bir NoSQL veri tabanıdır. Web uygulamalarından büyük veri projelerine kadar geniş bir yelpazede kullanılmaktadır. MongoDB veri tabanlarının yedeklenmesi, verilerin bütünlüğünü korumak ve olası felaket durumlarında hızlı bir şekilde geri yükleyebilmek için kritik bir süreçtir.

DigitalOcean Spaces ise, Amazon S3 uyumlu, uygun maliyetli ve yüksek oranda ölçeklenebilir bir nesne depolama hizmetidir. Statik dosyaları, medya içeriklerini ve tabii ki yedeklemeleri depolamak için mükemmel bir seçenektir. DigitalOcean’ın sunduğu diğer hizmetlerle (Droplet’ler, Kubernetes vb.) entegrasyonu kolaydır ve kullanıcı dostu arayüzü sayesinde hızla yapılandırılabilir.

Bu makalede, MongoDB veri tabanınızın DigitalOcean Spaces’e nasıl düzenli olarak yedekleneceğini adım adım ele alacağız. Otomatikleştirilmiş yedekleme betikleri oluşturmaktan, cron işleriyle zamanlamaya ve yedeklemeleri geri yüklemeye kadar tüm süreci detaylı bir şekilde inceleyeceğiz. Bu rehber sayesinde, veri güvenliğinizi artıracak ve olası veri kayıplarına karşı sağlam bir savunma mekanizması oluşturacaksınız.

Ön Gereksinimler

Bu rehberi takip edebilmek için aşağıdaki ön gereksinimlere sahip olmanız gerekmektedir:

MongoDB Yüklü ve Çalışır Durumda Bir Sunucu

Yedeklemesini yapacağımız MongoDB veri tabanının yüklü ve erişilebilir olduğu bir Linux sunucusuna (tercihen Ubuntu veya Debian tabanlı) ihtiyacınız var. Bu sunucu DigitalOcean Droplet’i olabilir veya farklı bir sağlayıcıdan bir VM de olabilir.

DigitalOcean Hesabı

DigitalOcean Spaces hizmetini kullanabilmek için aktif bir DigitalOcean hesabınız olmalıdır.

s3cmd veya awscli Araçları

DigitalOcean Spaces, S3 uyumlu bir API kullandığı için, S3 API ile etkileşime geçebilen komut satırı araçlarına ihtiyacımız olacak. Bu rehberde s3cmd aracını kullanacağız çünkü kurulumu ve yapılandırması oldukça basittir. Alternatif olarak awscli de kullanılabilir, ancak s3cmd genellikle daha hafif ve Spaces için yeterlidir.

Temel Linux Komut Satırı Bilgisi

Shell betikleri yazma, cron işlerini yapılandırma ve dosya izinlerini ayarlama gibi temel Linux komut satırı bilgisine sahip olmanız gerekmektedir.

DigitalOcean Spaces Yapılandırması

Yedeklemelerimizi depolayacağımız DigitalOcean Space’i oluşturalım ve erişim anahtarlarını alalım.

Yeni Bir Space Oluşturma

1. DigitalOcean kontrol paneline giriş yapın.
2. Sol menüden “Spaces” seçeneğine tıklayın.
3. “Create a Space” düğmesine tıklayın.
4. Bir bölge seçin (veri tabanı sunucunuza coğrafi olarak yakın bir bölge seçmek performansı artırabilir).
5. Space’iniz için benzersiz bir isim girin (örneğin, my-mongo-backups).
6. “Create a Space” düğmesine tıklayarak Space’i oluşturun.

Erişim Anahtarlarını Oluşturma ve Alma

s3cmd aracının DigitalOcean Spaces’e erişebilmesi için bir erişim anahtarı ve gizli anahtar çiftine ihtiyacı vardır.

1. DigitalOcean kontrol panelinde, sol menüden “API” seçeneğine tıklayın.
2. “Spaces access keys” bölümüne gidin.
3. “Generate New Key” düğmesine tıklayın.
4. Anahtar için bir isim girin (örneğin, mongo-backup-key).
5. Oluşturulan “Access Key” ve “Secret Key” değerlerini güvenli bir yere kaydedin. Bu anahtarlar, Space’inize programatik erişim için kullanılacaktır ve gizli anahtar bir daha gösterilmeyecektir.

Güvenlik Notu: Bu anahtarlar, Space’inizdeki tüm verilere tam erişim sağlar. Yalnızca yedekleme işlemi için kullanın ve kimseyle paylaşmayın. İhtiyaç duymadığınızda veya anahtarların güvenliğinden şüphe duyduğunuzda bunları iptal edin ve yenilerini oluşturun.

s3cmd Aracının Kurulumu ve Yapılandırması

s3cmd aracı, komut satırından S3 uyumlu depolama hizmetleriyle etkileşime geçmek için kullanılır.

s3cmd Kurulumu

Çoğu Linux dağıtımında s3cmd paketi bulunur ve kolayca kurulabilir:

sudo apt update
sudo apt install s3cmd -y

Eğer farklı bir dağıtım kullanıyorsanız (örneğin CentOS), ilgili paket yöneticisini kullanın (yum install s3cmd).

s3cmd Yapılandırması

Kurulumdan sonra, s3cmd‘yi DigitalOcean Spaces kimlik bilgilerinizle yapılandırmanız gerekir:

s3cmd --configure

Bu komut sizi bir dizi soruyla yönlendirecektir:

* Access Key:: DigitalOcean’dan aldığınız “Access Key”i buraya yapıştırın.
* Secret Key:: DigitalOcean’dan aldığınız “Secret Key”i buraya yapıştırın.
* Default Region [US]:: Bu alanı boş bırakabilirsiniz, zira Spaces için özel bir endpoint belirleyeceğiz.
* S3 Endpoint [s3.amazonaws.com]:: Buraya DigitalOcean Spaces’inizin endpoint’ini girmeniz gerekmektedir. Endpoint, Space’inizi oluşturduğunuz bölgeye göre değişir. Örneğin, Amsterdam (AMS3) için ams3.digitaloceanspaces.com, Frankfurt (FRA1) için fra1.digitaloceanspaces.com şeklindedir. Kendi Space’inizin genel bakış sayfasında doğru endpoint’i bulabilirsiniz.
* DNS-style bucket naming (f.e. bucket.s3.amazonaws.com) [No]:: No olarak bırakın.
* Encryption password [None]:: İsteğe bağlı olarak bir şifre belirleyebilirsiniz. Bu şifre, dosyalarınızı yüklemeden önce istemci tarafında şifrelemek için kullanılır. Daha fazla güvenlik için önerilir, ancak şifreyi kaybetmeniz durumunda verilere erişemeyeceğinizi unutmayın. Bu rehberde şifreleme kullanmayacağız, ancak üretim ortamlarında değerlendirilmelidir.
* Path to GPG program [/usr/bin/gpg]:: GPG şifrelemesi kullanmayacaksanız varsayılanı bırakın.
* Use HTTPS protocol [Yes]:: Yes olarak bırakın, bu güvenli iletişim sağlar.
* HTTP Proxy server name [None]:: Bir proxy sunucu kullanmıyorsanız boş bırakın.

Yapılandırma tamamlandığında, s3cmd ayarlarınızı test etmek isteyip istemediğinizi soracaktır. “Yes” diyerek test edebilirsiniz. Eğer her şey doğruysa, test başarılı olacaktır.

Önemli: s3cmd yapılandırma dosyasını (genellikle ~/.s3cfg konumunda bulunur) okuma/yazma izinlerini yalnızca root veya ilgili kullanıcı için kısıtlayın.

chmod 600 ~/.s3cfg

MongoDB Yedekleme Yöntemleri: mongodump

MongoDB veri tabanlarını yedeklemek için resmi olarak mongodump aracı kullanılır. Bu araç, veri tabanının ikili bir dökümünü oluşturur.

mongodump Temel Kullanımı

mongodump komutu, MongoDB sunucusuyla aynı makinede çalıştırıldığında genellikle ek parametreler gerektirmez. Varsayılan olarak tüm veri tabanlarını dump/ dizinine yedekler.

mongodump --out /path/to/backup/directory

Örneğin, /tmp/mongo_backup dizinine yedeklemek için:

mongodump --out /tmp/mongo_backup

Spesifik Bir Veri Tabanını Yedekleme

Yalnızca belirli bir veri tabanını yedeklemek isterseniz --db parametresini kullanabilirsiniz:

mongodump --db mydatabase --out /path/to/backup/directory

Kimlik Doğrulama ile Yedekleme

Eğer MongoDB sunucunuz kimlik doğrulaması gerektiriyorsa (ki üretim ortamları için şiddetle tavsiye edilir), mongodump komutuna kullanıcı adı ve parola eklemeniz gerekir:

mongodump --host localhost --port 27017 --username your_username --password your_password --authenticationDatabase admin --out /path/to/backup/directory

* --host: MongoDB sunucusunun ana bilgisayar adı veya IP adresi. (Varsayılan: localhost)
* --port: MongoDB sunucusunun portu. (Varsayılan: 27017)
* --username: Veri tabanına erişim için kullanıcı adı.
* --password: Kullanıcının parolası.
* --authenticationDatabase: Kullanıcının kimlik doğrulamasının yapıldığı veri tabanı. Genellikle admin veya kullanıcının tanımlandığı veri tabanıdır.

Replica Set Yedeklemeleri ve Oplog

Eğer bir replica set kullanıyorsanız, tutarlı yedeklemeler için --oplog parametresini kullanmanız önerilir. Bu, point-in-time recovery (belirli bir ana geri yükleme) yapmanızı sağlar. Ancak bu, daha gelişmiş bir konudur ve bu rehberin kapsamı dışındadır. Basit bir tek sunucu yedeklemesi için --oplog gerekli değildir.

Yedekleme Betiği Oluşturma

Şimdi, MongoDB yedeklemesini alacak, sıkıştıracak ve DigitalOcean Spaces’e yükleyecek bir shell betiği oluşturalım.

Betiği Yazma

Aşağıdaki betiği backup_mongo.sh adıyla kaydedin. Betik içindeki değişkenleri kendi ortamınıza göre düzenlemeyi unutmayın.

#!/bin/bash

--- Yapılandırma Değişkenleri ---

MONGO_HOST="localhost" # MongoDB sunucusunun ana bilgisayar adı MONGO_PORT="27017" # MongoDB sunucusunun portu MONGO_USERNAME="your_mongo_user" # MongoDB kullanıcı adı (eğer kimlik doğrulama kullanılıyorsa) MONGO_PASSWORD="your_mongo_password" # MongoDB parolası (eğer kimlik doğrulama kullanılıyorsa) AUTHENTICATION_DB="admin" # Kullanıcının kimlik doğrulandığı veritabanı BACKUP_DIR="/var/backups/mongodb" # Geçici yedeklemelerin depolanacağı dizin DATE=$(date +%Y%m%d%H%M%S) # Yedekleme dosyası için zaman damgası ARCHIVE_NAME="mongodb_backup_${DATE}.tar.gz" # Sıkıştırılmış yedekleme dosyasının adı RETENTION_DAYS=7 # Yerel yedeklemelerin kaç gün saklanacağı SPACE_BUCKET="s3://my-mongo-backups" # DigitalOcean Space URL'si (s3://bucket-adı) SPACE_REGION="fra1" # DigitalOcean Space bölgesel endpoint'i (örn: fra1.digitaloceanspaces.com için fra1)

--- Yapılandırma Değişkenleri Sonu ---

Log dosyası

LOG_FILE="${BACKUP_DIR}/backup.log" exec > >(tee -a "$LOG_FILE") 2>&1 # Hem konsola hem de log dosyasına çıktıları yönlendir echo "----------------------------------------------------" echo "Yedekleme işlemi başlatıldı: $(date)" echo "----------------------------------------------------"

Yedekleme dizinini oluşturma

mkdir -p "${BACKUP_DIR}" if [ $? -ne 0 ]; then echo "Hata: Yedekleme dizini oluşturulamadı: ${BACKUP_DIR}" exit 1 fi

Geçici bir dizin oluşturma (mongodump çıktıları için)

TEMP_DUMP_DIR="${BACKUP_DIR}/dump_${DATE}" mkdir -p "${TEMP_DUMP_DIR}" if [ $? -ne 0 ]; then echo "Hata: Geçici yedekleme dizini oluşturulamadı: ${TEMP_DUMP_DIR}" exit 1 fi

MongoDB yedeklemesini alma

echo "MongoDB yedeklemesi alınıyor..." if [ -n "$MONGO_USERNAME" ] && [ -n "$MONGO_PASSWORD" ]; then mongodump --host "$MONGO_HOST" --port "$MONGO_PORT" \ --username "$MONGO_USERNAME" --password "$MONGO_PASSWORD" \ --authenticationDatabase "$AUTHENTICATION_DB" \ --out "$TEMP_DUMP_DIR" else mongodump --host "$MONGO_HOST" --port "$MONGO_PORT" \ --out "$TEMP_DUMP_DIR" fi if [ $? -ne 0 ]; then echo "Hata: MongoDB yedeklemesi başarısız oldu." rm -rf "$TEMP_DUMP_DIR" # Hata durumunda geçici dizini temizle exit 1 fi echo "MongoDB yedeklemesi başarıyla alındı."

Yedeklemeyi sıkıştırma

echo "Yedekleme sıkıştırılıyor: ${ARCHIVE_NAME}" tar -zcvf "${BACKUP_DIR}/${ARCHIVE_NAME}" -C "${TEMP_DUMP_DIR}" . if [ $? -ne 0 ]; then echo "Hata: Yedekleme sıkıştırma başarısız oldu." rm -rf "$TEMP_DUMP_DIR" exit 1 fi echo "Yedekleme başarıyla sıkıştırıldı."

Geçici yedekleme dizinini temizleme

echo "Geçici yedekleme dizini temizleniyor: ${TEMP_DUMP_DIR}" rm -rf "$TEMP_DUMP_DIR" if [ $? -ne 0 ]; then echo "Uyarı: Geçici dizin temizlenirken hata oluştu: ${TEMP_DUMP_DIR}" fi

DigitalOcean Spaces'e yükleme

echo "Yedekleme DigitalOcean Spaces'e yükleniyor: ${SPACE_BUCKET}/${ARCHIVE_NAME}" s3cmd put "${BACKUP_DIR}/${ARCHIVE_NAME}" "${SPACE_BUCKET}/${ARCHIVE_NAME}" --region="$SPACE_REGION" if [ $? -ne 0 ]; then echo "Hata: DigitalOcean Spaces'e yükleme başarısız oldu." # Yükleme başarısız olsa bile yerel arşivi silmeyebiliriz, manuel kontrol için exit 1 fi echo "Yedekleme DigitalOcean Spaces'e başarıyla yüklendi."

Yerel eski yedeklemeleri temizleme

echo "Eski yerel yedeklemeler temizleniyor (son ${RETENTION_DAYS} günden eskiler)..." find "${BACKUP_DIR}" -name "mongodb_backup_*.tar.gz" -type f -mtime +"${RETENTION_DAYS}" -delete if [ $? -ne 0 ]; then echo "Uyarı: Eski yerel yedeklemeler temizlenirken hata oluştu." fi echo "----------------------------------------------------" echo "Yedekleme işlemi tamamlandı: $(date)" echo "----------------------------------------------------"

E-posta bildirimi (isteğe bağlı)

Eğer bir mail sunucusu yapılandırmanız varsa, bu bölümü etkinleştirebilirsiniz.

echo "Yedekleme başarıyla tamamlandı. Detaylar için ${LOG_FILE} dosyasını kontrol edin." | mail -s "MongoDB Yedekleme Başarılı" your_email@example.com

Betiği Çalıştırılabilir Yapma

Betiği kaydettikten sonra, çalıştırılabilir izinlerini vermeniz gerekir:

chmod +x /path/to/your/script/backup_mongo.sh

Betiği Test Etme

Betiği manuel olarak çalıştırarak her şeyin beklendiği gibi çalıştığından emin olun:

/path/to/your/script/backup_mongo.sh

Log dosyasını kontrol edin (/var/backups/mongodb/backup.log) ve DigitalOcean Spaces kontrol panelinden yedekleme dosyasının yüklenip yüklenmediğini doğrulayın.

Cron ile Zamanlama

Yedekleme betiğimizi düzenli aralıklarla otomatik olarak çalıştırmak için Linux’un zamanlama hizmeti olan Cron’u kullanacağız.

crontab Düzenleme

Cron işlerini yapılandırmak için crontab -e komutunu kullanın:

crontab -e

Bu komut, varsayılan metin düzenleyicinizde (genellikle vi veya nano) mevcut cron tablosunu açacaktır. Eğer ilk kez kullanıyorsanız, bir düzenleyici seçmeniz istenebilir.

Cron İşini Ekleme

Açılan dosyaya yeni bir satır ekleyerek yedekleme betiğinizin çalışmasını zamanlayın. İşte bazı örnekler:

* Her gün gece 02:00’de çalıştırma:

0 2   * /path/to/your/script/backup_mongo.sh

* Haftada bir, Pazar günü gece 03:30’da çalıştırma:

30 3   0 /path/to/your/script/backup_mongo.sh

* Her 6 saatte bir çalıştırma:

0 /6    /path/to/your/script/backup_mongo.sh

Cron Sözdizimi Açıklaması:

dakika (0-59)
saat (0-23)
ayın günü (1-31)
ay (1-12)
haftanın günü (0-7, Pazar hem 0 hem de 7 olabilir)
komut

Önemli Notlar:

1. Tam Yol Kullanımı: Cron ortamında PATH değişkeni sınırlı olabilir. Bu nedenle, mongodump, tar ve s3cmd gibi komutların tam yolunu belirtmek en iyisidir. Betiğinizde bu komutların tam yolunu (örneğin, /usr/bin/mongodump) kullanabilirsiniz veya betiğin başına PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin gibi bir satır ekleyebilirsiniz.
2. Ortam Değişkenleri: Eğer s3cmd yapılandırmasını root kullanıcısı olarak yaptıysanız ve cron işini farklı bir kullanıcı (örneğin mongo_backup kullanıcısı) altında çalıştırıyorsanız, ~/.s3cfg dosyasının doğru kullanıcı dizininde olduğundan veya s3cmd‘nin --config parametresiyle yapılandırma dosyasının yolunu belirttiğinizden emin olun. Genellikle cron işini betiği oluşturan kullanıcı altında çalıştırmak en kolay yoldur.
3. Loglama: Betiğimiz zaten çıktıyı bir log dosyasına yönlendiriyor. Bu, sorun giderme için çok önemlidir.

Cron işini kaydettikten sonra, sisteminizde otomatik olarak çalışmaya başlayacaktır. Log dosyasını düzenli olarak kontrol ederek yedeklemelerin sorunsuz çalıştığından emin olun.

Yedeklemeden Geri Yükleme

Yedekleme stratejisinin en kritik parçalarından biri, yedeklemeleri başarıyla geri yükleyebilme yeteneğidir. Periyodik olarak geri yükleme testleri yapmak, yedekleme sisteminizin çalıştığından emin olmanın tek yoludur.

DigitalOcean Spaces’ten Yedeklemeyi İndirme

Öncelikle, geri yüklemek istediğiniz yedekleme dosyasını DigitalOcean Spaces’ten sunucunuza indirmelisiniz.

s3cmd get s3://my-mongo-backups/mongodb_backup_20231027103000.tar.gz /tmp/restored_backup/mongodb_backup_20231027103000.tar.gz --region="fra1"

* s3://my-mongo-backups/mongodb_backup_20231027103000.tar.gz: İndirmek istediğiniz yedekleme dosyasının Spaces’teki tam yolu.
* /tmp/restored_backup/mongodb_backup_20231027103000.tar.gz: Dosyanın yerel olarak kaydedileceği yol.
* --region="fra1": Space’inizin bölgesi.

Yedeklemeyi Açma

İndirdiğiniz .tar.gz dosyasını açın:

mkdir -p /tmp/restored_data
tar -zxvf /tmp/restored_backup/mongodb_backup_20231027103000.tar.gz -C /tmp/restored_data

Bu komut, sıkıştırılmış yedeklemeyi /tmp/restored_data dizinine açacaktır. Açılan dizin içinde veri tabanlarınızın adlarına göre klasörler bulacaksınız.

mongorestore ile Geri Yükleme

mongorestore aracı, mongodump ile oluşturulan yedeklemeleri geri yüklemek için kullanılır.

Uyarı: mongorestore komutu, hedef veri tabanındaki mevcut verileri değiştirebilir veya silebilir. Verilerinizi kaybetmemek için dikkatli olun ve geri yükleme işlemini test ortamında denemeniz şiddetle tavsiye edilir.

Tüm yedeklemeyi geri yüklemek için:

mongorestore --host localhost --port 27017 --username your_mongo_user --password your_mongo_password --authenticationDatabase admin /tmp/restored_data

* /tmp/restored_data: mongodump çıktılarının bulunduğu dizin (yani, veri tabanı klasörlerini içeren ana dizin).

Eğer belirli bir veri tabanını geri yüklemek istiyorsanız:

mongorestore --host localhost --port 27017 --username your_mongo_user --password your_mongo_password --authenticationDatabase admin --db target_database_name /tmp/restored_data/source_database_name

* --db target_database_name: Verilerin geri yükleneceği veri tabanının adı.
* /tmp/restored_data/source_database_name: Yedeklemedeki orijinal veri tabanı klasörünün yolu.

--drop Parametresi:
Geri yüklemeden önce hedef veri tabanındaki tüm koleksiyonları silmek isterseniz --drop parametresini kullanabilirsiniz. Bu, temiz bir geri yükleme sağlar ancak mevcut tüm verileri kalıcı olarak siler.

mongorestore --drop --host localhost --port 27017 --username your_mongo_user --password your_mongo_password --authenticationDatabase admin /tmp/restored_data

Geri yükleme işlemi tamamlandığında, MongoDB istemcisini kullanarak verilerin doğru bir şekilde geri yüklendiğini doğrulayın.

Güvenlik ve En İyi Uygulamalar

Yedekleme stratejinizin güvenli ve etkili olduğundan emin olmak için aşağıdaki hususları göz önünde bulundurun:

Erişim Anahtarı Yönetimi

* En Az Ayrıcalık Prensibi: Mümkünse, DigitalOcean Spaces erişim anahtarlarınız için yalnızca yedekleme işlemi için gerekli olan minimum izinleri sağlayın. DigitalOcean’ın şu anda S3’teki gibi ayrıntılı IAM (Kimlik ve Erişim Yönetimi) politikaları sunmadığını unutmayın, bu nedenle anahtarlarınızın güvenliği daha da önemlidir.
* Anahtar Döngüsü: Erişim anahtarlarınızı düzenli olarak (örneğin, her 90 günde bir) değiştirin.
* Gizlilik: Erişim anahtarlarını asla doğrudan betik içine yazmayın veya sürüm kontrol sistemlerine (Git gibi) yüklemeyin. ~/.s3cfg dosyası gibi güvenli bir yerde saklayın ve izinlerini kısıtlayın.

Veri Şifreleme

* Aktif Haldeki Şifreleme (Encryption at Rest): DigitalOcean Spaces, varsayılan olarak depolanan verileri sunucu tarafında şifreler. Bu, verilerinizin depoda güvende olduğu anlamına gelir.
* İstemci Tarafı Şifreleme: Ekstra bir güvenlik katmanı için, verilerinizi DigitalOcean Spaces’e yüklemeden önce istemci tarafında şifreleyebilirsiniz (örneğin, GPG veya s3cmd‘nin kendi şifreleme özelliği ile). Bu, verilerin yalnızca sizin tarafınızdan çözülebileceği anlamına gelir, ancak şifreleme anahtarını kaybetmeniz durumunda verilerinizi kurtaramayacağınızı unutmayın.

Yedekleme Sunucusu ve Betik Güvenliği

* Yedekleme betiğini ve ~/.s3cfg dosyasını içeren dizinin izinlerini sıkı tutun. Yalnızca yedekleme işlemini çalıştıran kullanıcı tarafından okunabilir ve yazılabilir olmalıdır.
* Yedekleme sunucusunu diğer sunuculardan izole edin ve güvenlik duvarı kurallarıyla erişimi kısıtlayın.

Yedekleme Sürümü ve Saklama Politikası

* Çoklu Sürümler: Yalnızca en son yedeklemeyi saklamak yerine, belirli bir süre boyunca birden fazla yedekleme sürümünü saklayın (örneğin, son 7 günlük günlük yedeklemeler, son 4 haftalık haftalık yedeklemeler, son 3 aylık aylık yedeklemeler). Bu, bozuk bir yedeklemeden veya yanlışlıkla yapılan bir değişiklikten kurtulmanızı sağlar.
* Uzak Temizleme: Betiğimiz yerel yedeklemeleri temizler, ancak DigitalOcean Spaces’teki eski yedeklemeleri de düzenli olarak temizlemeyi düşünmelisiniz. s3cmd del komutu veya DigitalOcean kontrol panelinden manuel olarak yapılabilir.

Yedeklemeleri Test Etme

* Düzenli Geri Yükleme Testleri: Yedekleme sisteminizin çalıştığından emin olmanın tek yolu, yedeklemeleri düzenli olarak (örneğin, ayda bir) test bir ortama geri yüklemektir. Bu, hem yedeklemelerin bütünlüğünü doğrular hem de geri yükleme sürecine aşina olmanızı sağlar.
* Belgeleme: Yedekleme ve geri yükleme prosedürlerinizi detaylı bir şekilde belgeleyin. Bu, acil durumlarda veya ekip üyeleri arasında bilgi aktarımında kritik öneme sahiptir.

İzleme ve Uyarılar

* Cron Loglarını Kontrol Etme: Cron işlerinin çıktısını bir log dosyasına yönlendirmek ve bu logları düzenli olarak kontrol etmek, yedekleme sorunlarını erken tespit etmenizi sağlar.
* E-posta Bildirimleri: Yedekleme betiğinize, başarılı veya başarısız yedekleme durumlarında size e-posta gönderecek işlevsellik ekleyebilirsiniz. Linux’ta mail veya sendmail gibi araçlar bu amaçla kullanılabilir.

# Betiğin sonuna ekleyebilirsiniz (örnek):
if [ $? -eq 0 ]; then
    echo "MongoDB yedekleme işlemi başarıyla tamamlandı. Log dosyası: ${LOG_FILE}" | mail -s "MongoDB Yedekleme Başarılı" your_email@example.com
else
    echo "MongoDB yedekleme işlemi BAŞARISIZ oldu. Detaylar için ${LOG_FILE} dosyasını kontrol edin." | mail -s "MongoDB Yedekleme HATASI" your_email@example.com
fi

Bu e-posta özelliğini kullanabilmek için sunucunuzda bir e-posta gönderme hizmeti (örn. Postfix, Sendmail) yapılandırılmış olması gerekmektedir.

Sonuç

Bu makalede, MongoDB veri tabanlarınız için DigitalOcean Spaces’e zamanlanmış yedeklemeleri nasıl kuracağınızı adım adım ele aldık. mongodump kullanarak veri tabanı dökümü almaktan, s3cmd ile DigitalOcean Spaces’e güvenli bir şekilde yüklemeye ve cron ile bu süreci otomatikleştirmeye kadar tüm önemli adımları detaylandırdık. Ayrıca, olası bir felaket durumunda verilerinizi geri yüklemek için mongorestore kullanımını da inceledik.

Veri güvenliği, günümüzün dijital dünyasında göz ardı edilemeyecek bir konudur. Düzenli, otomatikleştirilmiş ve bulut tabanlı yedeklemeler, veri kaybı riskini minimize ederken, iş sürekliliğinizi de garanti altına alır. DigitalOcean Spaces’in uygun maliyetli ve güvenilir depolama çözümüyle birleşen bu yöntem, MongoDB veri tabanlarınız için sağlam bir yedekleme stratejisi oluşturmanıza olanak tanır.

Unutmayın ki yedekleme stratejisinin en önemli parçası, yedeklemelerinizi düzenli olarak test etmektir. Yalnızca başarılı bir şekilde geri yüklenebilen bir yedekleme, gerçekten değerli bir yedeklemedir. Bu rehberde sağlanan bilgileri kullanarak, MongoDB veri tabanlarınızın güvenliğini sağlamak için güçlü bir temel oluşturmuş oldunuz. Verilerinizi güvende tutmak için bu uygulamaları titizlikle sürdürmeniz, uzun vadede size büyük faydalar sağlayacaktır.

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

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.