MongoDB Docker ile Veritabanı Yedekleme ve Geri Yükleme

MongoDB Docker ile Veritabanı Yedekleme ve Geri Yükleme

MongoDB Docker üzerinde veritabanı yedekleme ve geri yükleme sürecini öğrenmek mi istiyorsunuz? Bu rehberimiz size adım adım yardımcı olacak MongoDB ile Docker kullanarak verilerinizi koruma altına alın!

MongoDB Docker ile Veritabanı Yedekleme ve Geri Yükleme

Merhaba, bu makalede MongoDB veritabanlarının Docker üzerinde nasıl yedekleneceği ve geri yükleneceği konusu ele alınacaktır. Bu işlemler, veritabanlarının güvenliği ve yedeklenmesi açısından oldukça önemlidir. MongoDB ve Docker'ın kurulumu, manuel yedekleme ve geri yükleme işlemleri, yardımcı programların kullanımı ve otomatik yedekleme ve geri yükleme işlemleri hakkında ayrıntılı bilgileri içeren bu makaleyle, veritabanı yöneticileri, geliştiriciler ve sistem yöneticileri için yararlı bir kaynak sunuyoruz.


Docker ile MongoDB Kurulumu

MongoDB veritabanlarını Docker üzerinde yedekleme ve geri yükleme işlemlerini gerçekleştirmek için öncelikle MongoDB ve Docker'ın kurulması gerekmektedir. Kurulum işlemleri için sırasıyla aşağıdaki adımlar izlenmelidir:

1. MongoDB Kurulumu:

MongoDB kurulumu için öncelikle resmi MongoDB web sitesine gidilerek, uygun sürüm seçilmelidir. Seçilen sürüm, işletim sistemi ve paket yöneticisine göre değişebilir. Daha sonra sırasıyla aşağıdaki komutlar çalıştırılmalıdır:

$ wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -$ echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list$ sudo apt-get update$ sudo apt-get install -y mongodb-org

Bu adımlar sonrasında MongoDB yüklenecektir. MongoDB hakkında daha detaylı bilgi için resmi MongoDB dokümantasyonuna bakabilirsiniz.

2. Docker Kurulumu:

Docker kurulumu için öncelikle Docker resmi web sitesine gidilerek, uygun sürüm seçilmelidir. Seçilen sürüm, işletim sistemi ve paket yöneticisine göre değişebilir. Daha sonra sırasıyla aşağıdaki komutlar çalıştırılmalıdır:

$ sudo apt-get update$ sudo apt-get remove docker docker-engine docker.io containerd runc$ sudo apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"$ sudo apt-get update$ sudo apt-get install -y docker-ce docker-ce-cli containerd.io

Bu adımlar sonrasında Docker yüklenecektir. Docker hakkında daha detaylı bilgi için resmi Docker dokümantasyonuna bakabilirsiniz.


MongoDB Veritabanı Yedekleme

MongoDB veritabanlarının yedeklenmesi, herhangi bir olası veri kaybını önlemek ve verilerin daha sonra geri yüklenmesini sağlamak için hayati bir işlemdir. Bu makalede, MongoDB veritabanlarının Docker üzerinde nasıl yedekleneceği ve geri yükleneceği tartışılmaktadır.

MongoDB veritabanlarının yedeklemesi Docker vasıtasıyla yapılabilir. Manuel olarak yedekleme işlemi yapmak mümkün olsa da, otomatik olarak yapılandırılmış yedekleme işlemi, zaman ve emek açısından daha uygun olabilir.

MongoDB veritabanının manuel olarak yedeklenmesi, mongodump yardımcı programı kullanarak yapılabilir. İlk adım olarak, mevcut veritabanının yedeklenmesini istediğiniz klasöre Terminal veya Komut İstemi yardımıyla geçin. Bağlandıktan sonra, aşağıdaki komutu yazın:

mongodump --db=database_adı --out=/backup/klasörü/

Yukarıdaki komut, database_adı adlı mevcut veritabanını /backup/klasörü/ adlı bir klasöre yedekleyecektir.

Docker Compose ve CronJob kullanarak, yedekleme işlemi otomatik olarak yapılandırılabilir. Docker Compose, birkaç Docker servisini tek bir altyapıda birleştiren bir araçtır. CronJob, düzenli zaman aralıklarında bir Docker konteynırında belirli görevleri çalıştıran bir araçtır.

Docker Compose ve CronJob'ı yapılandırmak için, docker-compose.yml adlı bir dosya oluşturun ve aşağıdaki gibi yapılandırın:

version: '3'services:  mongodb:    image: mongo:latest    volumes:      - mongodb-data:/data/db  cronservice:    build: .    volumes:      - mongodb-backup:/backup    environment:      CRON_SCHEDULE: "0 0 * * *"      MONGODB_HOST: mongodb:27017      MONGODB_DATABASE: mydatabase      BACKUP_FILENAME: data_dump    command: sh -c 'exec sh /app/run-backup.sh'    depends_on:      - mongodbvolumes:  mongodb-data:  mongodb-backup:

Sonra, run-backup.sh adlı bir dosya oluşturun ve aşağıdaki gibi yapılandırın:

#!/bin/bashset -eDATE=$(date +%Y-%m-%d-%H%M%S)BACKUP_FILENAME="$BACKUP_FILENAME-$DATE"echo "Creating backup $BACKUP_FILENAME"mongodump --host $MONGODB_HOST --db $MONGODB_DATABASE --out /backup/$BACKUP_FILENAMEecho "Backup created successfully"

Bu yapılandırmadan sonra, veritabanının otomatik olarak yedeklenmesi gerektiği saat aralığını belirleyebilirsiniz.

Yukarıda belirtilen yöntemlerle MongoDB veritabanının yedeklenmesi işlemi başarıyla gerçekleştirilebilir.


Manuel Yedekleme İşlemi

MongoDB veritabanını elle yedeklemek için birkaç adım izlenmelidir. İlk olarak, mongodump yardımcı programı kullanılarak veritabanı yedekleme işlemi gerçekleştirilir. Bu program ile mevcut veritabanımızın tüm verileri dışa aktarılır.

Daha sonra, yedeğin saklanacağı bir klasör oluşturulur. Bu adım çok önemlidir, çünkü veritabanı yedeğinin saklanacağı klasör doğru şekilde belirlenmeli ve yeterli alana sahip olmalıdır.

Son olarak, oluşturulan yedeği kopyalayıp saklanacak klasöre yapıştırmak yeterlidir. Yedekleme işlemi tamamlanmıştır.

Yukarıdaki adımlardan görüleceği gibi, MongoDB veritabanı yedekleme işlemi Manuel olarak yapılabilir. Ancak, eğer veritabanı sık sık değişiyorsa ve güncellemeler alıyorsa, yedekleme sürecinin otomatikleştirilmesi daha avantajlı olacaktır.


mongodump Yardımcı Programı

MongoDB veritabanlarını Docker ile yedekleme işlemi, veritabanlarının yedeklenmesi için önce "mongodump" yardımcı programının kullanılması gerekiyor. Bu yardımcı program, MongoDB veritabanlarını yedeklemek için kullanılan bir araçtır. Bu program, belirli bir veritabanını CSV veya JSON formatında çıkarmak için de kullanılabilir.

yedekleme yapmak için, öncelikle docker container'ını başlatmak ve veritabanının yedeğinin alınacağı klasöre geçmek gerekir. Daha sonra, mongodump programı komut satırına yazılır. Bu işlem, tüm verileri "dump" adlı bir dosyaya kaydedecektir. "mongodump" yardımcı programı kullanarak geri yükleme yapmak, herhangi bir IT uzmanı için oldukça basittir.

Bir örnek için, öncelikle yedekleme alınacak veritabanını python_db olarak adlandıralım. Şimdi, mongodump programını kullanarak bu veritabanını yedekleyeceğiz. İmajda "/backup" klasörü varsa arabellekteki komutlar aşağıdaki gibi girilebilir:

Command Description
docker exec -ti mongodb_container_name /bin/bash Mongodb container içerisine girmek için
mongodump -d python_db -o /backup/ Belirtilen veritabanı/klasörü yedekler

Bu komutlar, mongodb_container_name adı verilen Docker container'ına girer ve python_db adlı veritabanını "/backup" klasörüne yedeklemek için mongodump programını kullanır.

Biraz daha detaylandırmak gerekirse, "-d" anahtar kelimesi kullanılarak veritabanı adı belirtilir ve "-o" anahtar kelimesi kullanılarak yedek klasörü belirtilir. Belirtilen veritabanının yedeği, "/backup/python_db" klasörüne kaydedilir. Bu klasör, veritabanının yedeğinin alınacağı klasörle değiştirilebilir.

X klasöründe, "mongodump" yardımcı programı kullanarak yedekleme işlemi tamamlandığında, yedek klasöründeki tüm dosyaları MongoDB geri yükleme aracı olan "mongorestore" yardımcı programını kullanarak geri yükleme yapabilirsiniz.


Docker Compose ve CronJob Ayarları

Docker'da MongoDB veritabanı yedeklemelerini otomatikleştirmek için Docker Compose ve CronJob kullanabilirsiniz. Docker Compose, birden çok Docker konteynerinin düzenlenmesine izin veren bir araçtır. Bu sayede her bir konteynere ait ayarlar, portlar ve bağlantılar yalnızca tek bir dosyada bulunur.

CronJob ise belirli bir işlemin belirli bir periyotta çalıştırılmasını sağlayan bir araçtır. Bu ayarlar sayesinde belirli aralıklarla veritabanı yedeklemesi oluşturulabilir.

Öncelikle bir Docker Compose dosyası oluşturmanız gerekiyor. Bu dosya, MongoDB konteynerı ve yedekleme konteynerı olmak üzere iki konteyner tanımlamalıdır. Yedekleme konteyner i, MongoDB konteynerına bağlanarak veritabanı yedeklemesi yapacaktır.

Ardından, CronJob ayarlarını yaptığınız bir YAML dosyası oluşturmanız gerekiyor. Bu dosya, belirli bir periyotla MongoDB yedekleme konteynerını çalıştıracaktır.

Tüm bu ayarları yaptıktan sonra, Docker Compose file ile CronJob dosyasını birleştirebilirsiniz. Böylece yedekleme işlemi sizin için tamamen otomatik hale gelir.

Docker Compose Dosyası:

```version: "3.7"services: mongodb: image: mongo:latest volumes: - "/data/db:/data/db" environment: - MONGO_INITDB_ROOT_USERNAME=root - MONGO_INITDB_ROOT_PASSWORD=examplepassword ports: - "27017:27017" backup: build: . volumes: - "/backup:/backup" environment: - MONGODB_HOST=mongodb - MONGODB_PORT=27017 - MONGODB_USERNAME=root - MONGODB_PASSWORD=examplepassword - BACKUP_NAME=mongodump```

CronJob Dosyası:

```apiVersion: batch/v1beta1kind: CronJobmetadata: name: mongodb-backupspec: schedule: "0 0 * * *" jobTemplate: spec: template: spec: containers: - name: backup image: mongo:latest command: [ "/bin/bash", "-c", "mongodump --host ${MONGODB_HOST} --port ${MONGODB_PORT} --username ${MONGODB_USERNAME} --password ${MONGODB_PASSWORD} --out /backup/${BACKUP_NAME}" ] env: - name: MONGODB_HOST valueFrom: configMapKeyRef: name: mongodb-backup key: mongodb.host - name: MONGODB_PORT valueFrom: configMapKeyRef: name: mongodb-backup key: mongodb.port - name: MONGODB_USERNAME valueFrom: secretKeyRef: name: mongodb-backup-secret key: mongodb.username - name: MONGODB_PASSWORD valueFrom: secretKeyRef: name: mongodb-backup-secret key: mongodb.password - name: BACKUP_NAME value: "mongodump-$(date '+%Y-%m-%d-%H-%M-%S')" restartPolicy: OnFailure```

Yukarıdaki dosya örnekleriyle, Docker üzerinde MongoDB veritabanı yedeklemesi nasıl otomatikleştirileceği anlaşılabilecektir. Bu sayede veri kaybı durumlarında yedeklemelerinizi kolayca geri yükleyebilirsiniz.


Otomatik Yedekleme İşlemi

MongoDB veritabanı yedekleme işleminin otomatikleştirilmesi için yapılması gereken adımlar oldukça basittir. İlk olarak, docker-compose.yaml dosyasına CronJob yapısını eklemeniz gerekir. Docker Compose, Docker imajlarından ve ağlarından oluşan bir Docker uygulamasıdır. CronJob, belirli aralıklarla belirli komutları çalıştıran bir işlem planlayıcısıdır.

Öncelikle, bir CronJob yaml dosyası oluşturun:

```yamlapiVersion: batch/v1beta1kind: CronJobmetadata: name: mongodb-backupspec: schedule: # every sunday at 2am cron: "0 2 * * 0" jobTemplate: spec: template: spec: containers: - name: mongodb-backup image: mongo:latest command: - /bin/sh - -c - mongodump --out /backup/$(date +%Y-%m-%d) volumeMounts: - name: backup mountPath: /backup restartPolicy: Never volumes: - name: backup persistentVolumeClaim: claimName: mongodb-pvc```

Bu dosyayı çalıştırmadan önce cron eklentisini başlamanız gerekir. Ubuntu’da cron servisini başlatmak için:

```bashsudo service cron start```

Cron job'ın veritabanı yedeğini düzenli olarak oluşturması için crontab satırını yukarıda gösterdiğimiz gibi düzenlemeniz yeterlidir.

Eğer yedeklenen verilerin yığılması ve bir süre sonra gereksiz alan kullanımına sebep olmasını önlemek istiyorsanız silinmesi gereken yedek dosyaların yaşı belirlemek için REXML yerine (date +%Y-%m-%d) kullanabilirsiniz.


MongoDB Veritabanı Geri Yükleme

Bir önceki bölümde MongoDB veritabanı yedekleme işlemlerinin Docker kullanılarak nasıl gerçekleştirileceğine dair ayrıntılı bilgiler verilmişti. Şimdi, geri yükleme işlemlerine geçiş yapacağız. MongoDB veritabanı geri yükleme işlemleri de yine Docker kullanılarak yapılabilir.

Eğer ihtiyacınız olan MongoDB yedeği bir dosyada bulunuyorsa, bu dosyayı geri yüklemek için mongorestore yardımcı programını kullanabilirsiniz. Bu program sayesinde, veritabanınızın yedeğini yapılandırmak için gerekli parametreleri belirleyebilirsiniz.

mongorestore yardımcı programını kullanmak için, öncelikle MongoDB konteynerinizin ID'sini bulmanız gerekmektedir. Bunun için, "docker ps" komutunu kullanarak ID'yi öğrenebilirsiniz. Daha sonra, aşağıdaki komutu kullanarak yedeğinizi geri yükleyebilirsiniz:

docker exec -it {{CONTAINER_ID}} mongorestore --archive=/backup/db.archive --gzip --db={{DATABASE_NAME}}

Burada "{{CONTAINER_ID}}" kısmını, MongoDB konteynerinizin ID'siyle değiştirmelisiniz. Ayrıca, geri yükleyeceğiniz yedeğin adını ve veritabanınızın adını da komut içinde ilgili yerlere giriniz.

Bunun yanı sıra, MongoDB veritabanı geri yükleme işlemlerini otomatik hale getirmek için Docker Compose ve CronJob ayarları yapılabilir. Bu sayede, belirli aralıklarla veritabanınızın yedeği alınabilir ve otomatik olarak geri yüklenmesi sağlanabilir.

Özetlemek gerekirse, MongoDB veritabanı geri yükleme işlemleri Docker kullanılarak kolayca gerçekleştirilebilir. mongorestore yardımcı programını kullanarak manuel olarak yükleyebilirsiniz veya Docker Compose ve CronJob ayarları yaparak bu işlemi otomatik hale getirebilirsiniz.


Manuel Geri Yükleme İşlemi

MongoDB veritabanı geri yükleme işlemi için Docker kullanılarak elle yapılması gereken adımlar şunlardır:

  1. Öncelikle yedekleme işleminde oluşturulan MongoDB yedek dosyası kullanılmalıdır.
  2. Ardından, yedek dosyası görüntülenmeli ve içeriğinin doğru olduğundan emin olunmalıdır.
  3. Son olarak, MongoDB veritabanı geri yüklemesi gerçekleştirilmelidir. Bu işlem için mongorestore yardımcı programı kullanılabilir.

MongoDB veritabanı geri yükleme işlemi için mongorestore yardımcı programının kullanımı şu adımlarla gerçekleştirilebilir:

  1. Terminal penceresinde mongorestore komutu kullanılmalıdır. Bu komutun kullanımı sırasında yedek dosyasının konumu belirtilmelidir.
  2. Yedek dosyasının konumunu belirlemek için --dir veya --archive parametreleri kullanılabilir. --dir parametresi ile yedek dosyasının konumunu belirtebilirsiniz. --archive parametresi ise yedek dosyasının bir arşiv dosyası olarak sıkıştırılması durumunda kullanılır.
  3. Ayrıca, mongorestore komutu kullanılırken --host, --port, --username ve --password parametreleri ile veritabanı ana bilgisayar adı ve kullanıcı kimliği bilgileri belirtilebilir.

MongoDB veritabanı geri yükleme işlemi ile işiniz bittiğinde, yaptığınız değişiklikleri kaydetmek için Docker içinde bulunan MongoDB veritabanını kaydedip kapatabilirsiniz. MongoDB veritabanı yedekleme ve geri yükleme işlemi doğru bir şekilde gerçekleştirildiğinde, veri kaybı riski en aza indirgenir ve bu sayede verilerinizi güvenli şekilde saklayabilirsiniz.


mongorestore Yardımcı Programı

mongorestore, yedek dosyaları üzerinde geri yükleme işlemi yapmak için kullanılan bir yardımcı programdır. Docker üzerinde veritabanı geri yükleme işlemi yapmak istediğinizde, mongorestore kullanımı oldukça faydalı olabilir. Bu programın kullanımı oldukça kolaydır.

Geri yükleme işlemi yapmak için, öncelikle bir MongoDB yedek dosyasına ihtiyacınız olacaktır. Bu yedek dosyasını, MongoDB dump komutu kullanarak oluşturabilirsiniz. Ardından, mongorestore programını kullanarak yedek dosyasını geri yükleyebilirsiniz.

Mongorestore kullanımı için kullanabileceğiniz bazı önemli parametreler şunlardır:

  • --archive: Yedek dosyasını arşiv formatında geri yüklemek için kullanılır.
  • --gzip: Arşivlenmiş yedek dosyasının sıkıştırma işlemini yapar.
  • --drop: Varolan veritabanını siler ve yedek dosyasındakinin tamamını geri yükler.
  • --nsInclude: Belirli bir namespace'i geri yüklemek için kullanılır.

Örnek olarak, aşağıdaki komutu kullanarak yedek dosyanızdaki verileri geri yükleyebilirsiniz:

mongorestore --gzip --archive=/path/to/archive.gz

Yukarıdaki komut, arşivlenmiş yedek dosyasındaki verileri geri yükler ve sıkıştırma işlemini de yapar. Bu parametreler sizin gereksinimlerinize göre değişebilir. Bu şekilde, Docker üzerinde MongoDB veritabanı yedekleme ve geri yükleme işlemlerinin nasıl yapılacağı hakkında bilgi sahibi oldunuz.


Otomatik Geri Yükleme İşlemi

Öncelikle, üzerinde çalışılan Docker ortamında, otomatik geri yükleme işleminin sorunsuz bir şekilde gerçekleştirebilmesi için yedekleme adımları doğru bir şekilde uygulanmış olmalıdır. Bu adım doğru bir şekilde uygulandıktan sonra, geri yükleme işlemi için gerekli olan Mongo verileri belirtilen bir klasöre aktarılmalıdır.

Bu işlemi gerçekleştirdikten sonra, geri yükleme işlemini otomatikleştirmek için bir Docker Compose örneği oluşturmak gerekmektedir. Docker Compose örneği, otomatik yedekleme işlemi için CronJob yaratmak için kullanılacaktır. CronJob, belirli zamanlarda belirli işlemler yapmak için kullanılır.

Docker Compose dosyasında geri yükleme işlemi yapmak için mongorestore adlı yardımcı program kullanılacaktır. Bu programın nasıl kullanılacağı, önceden oluşturulan yedeği geri yüklemek için gerekli olan komutları içermektedir.

Bunun yanı sıra, geri yükleme işleminin başarılı bir şekilde tamamlandığından emin olunması için önceden belirlenen kontrol mekanizmaları da Docker Compose dosyasına eklenmelidir. Bu sayede, geri yükleme işlemi tamamlandığında bir bildirim alabilirsiniz ve işlemin başarısız olduğu durumlarda hemen uyarı alabilirsiniz.

Son adım olarak, oluşturulan Docker Compose dosyasının çalıştırılması ve geri yükleme işleminin otomatik olarak yapılması için CronJob oluşturulması gerekmektedir. Bu sayede veritabanı geri yükleme işleminizi otomatikleştirdiğinizden emin olabilirsiniz.