Takip et

MongoDB Veritabanını Ubuntu 14.04 Üzerinde İçe ve Dışa Aktarma Rehberi

MongoDB Veritabanını Ubuntu 14.04 Üzerinde İçe ve Dışa Aktarma Rehberi Veritabanı yönetimi, herhangi bir uygulamanın veya sistemin omurga

MongoDB Veritabanını Ubuntu 14.04 Üzerinde İçe ve Dışa Aktarma Rehberi

Veritabanı yönetimi, herhangi bir uygulamanın veya sistemin omurgasını oluşturur. Bu yönetimin en kritik bileşenlerinden biri de verilerin yedeklenmesi (dışa aktarılması) ve gerektiğinde geri yüklenmesi (içe aktarılması) yeteneğidir. MongoDB, esnek ve ölçeklenebilir bir NoSQL veritabanı olarak, bu işlemleri gerçekleştirmek için güçlü ve kullanımı kolay araçlar sunar. Bu kapsamlı rehberde, Ubuntu 14.04 işletim sistemi üzerinde çalışan bir MongoDB veritabanını nasıl güvenli bir şekilde dışa ve içe aktaracağınızı adım adım öğreneceksiniz.

Bu işlemler, veri taşıma, felaket kurtarma, geliştirme ortamlarını senkronize etme veya verileri analiz için farklı formatlara dönüştürme gibi çeşitli senaryolarda hayati önem taşır. MongoDB, bu amaçlar için iki ana araç setini sağlar:
* mongodump ve mongorestore: Veritabanının ikili (binary) yedeğini alıp geri yüklemek için kullanılır. Bu, genellikle tam veritabanı yedeklemesi ve felaket kurtarma için tercih edilen yöntemdir.
* mongoexport ve mongoimport: Verileri insan tarafından okunabilir (JSON veya CSV) formatlarda dışa aktarıp içe aktarmak için kullanılır. Bu araçlar, veri analizi, verileri farklı sistemlere taşıma veya belirli veri setlerini yönetme gibi durumlarda faydalıdır.

Ubuntu 14.04, uzun süredir desteklenmese de, bu rehberdeki temel MongoDB komutları ve prensipleri, daha yeni Ubuntu sürümleri ve diğer Linux dağıtımları için de büyük ölçüde geçerlidir.

Ön Hazırlıklar ve Gerekli Araçlar

MongoDB veritabanınızı içe veya dışa aktarmadan önce, sisteminizde bazı temel gereksinimlerin karşılandığından emin olmanız gerekir.

MongoDB Kurulumu ve Çalışır Durumda Olması

Bu rehber, MongoDB sunucusunun Ubuntu 14.04 sisteminizde zaten yüklü ve çalışır durumda olduğunu varsayar. Eğer MongoDB kurulu değilse, Ubuntu 14.04 için MongoDB’nin topluluk sürümünü kurmak için aşağıdaki adımları izleyebilirsiniz (bu adımlar, MongoDB’nin resmi dokümantasyonundan alınmıştır ve 14.04 için uyarlanmıştır):

1. MongoDB Ortak Anahtarı Ekleme:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927

2. MongoDB Deposu Ekleme:
MongoDB 3.2 (Ubuntu 14.04 için genellikle uyumlu olan son sürüm) için depo ekleme:

echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

3. Paket Listesini Güncelleme ve Kurulum:

sudo apt-get update
    sudo apt-get install -y mongodb-org

4. MongoDB Servisini Başlatma:

sudo service mongod start

5. MongoDB Durumunu Kontrol Etme:

sudo service mongod status

Çıktıda “mongod is running” gibi bir ifade görmelisiniz.

İçe/Dışa Aktarma Araçlarının Doğrulanması

mongodump, mongorestore, mongoexport ve mongoimport araçları genellikle mongodb-org-tools veya eski sürümlerde mongodb-clients paketiyle birlikte gelir. Kurulumu yaptıysanız, bu araçlar sisteminizde mevcut olmalıdır. Mevcut olup olmadıklarını ve doğru çalıştıklarını doğrulamak için terminalde aşağıdaki komutları çalıştırabilirsiniz:

mongodump --version
mongorestore --version
mongoexport --version
mongoimport --version

Bu komutlar, araçların versiyon bilgilerini döndürmelidir. Eğer “command not found” hatası alırsanız, araçların yüklü olduğundan emin olun. Genellikle yukarıdaki mongodb-org paketiyle birlikte gelirler.

Temel MongoDB Bağlantı Bilgileri

Çoğu durumda, MongoDB varsayılan olarak localhost üzerinde 27017 portunda çalışır ve kimlik doğrulama olmadan erişilebilir. Ancak, üretim ortamlarında genellikle kimlik doğrulama (kullanıcı adı/şifre) etkinleştirilmiştir. Bu rehberde, hem varsayılan bağlantı hem de kimlik doğrulama gerektiren bağlantılar için örnekler sunulacaktır.

MongoDB Veritabanı Dışa Aktarma (Yedekleme)

Veritabanınızı dışa aktarmak, olası veri kaybı durumlarına karşı bir sigorta poliçesi gibidir. İki ana yöntemle dışa aktarma yapabiliriz: ikili yedekleme (mongodump) ve okunabilir formatlarda veri dışa aktarma (mongoexport).

mongodump ile Binary Yedekleme

mongodump aracı, bir MongoDB veritabanının veya belirli koleksiyonların ikili (BSON) formatında bir yedeğini oluşturur. Bu yedekler, mongorestore ile hızlı ve verimli bir şekilde geri yüklenebilir. Bu yöntem, genellikle tam veritabanı yedeklemesi ve bir MongoDB sunucusundan diğerine veri taşıma için en uygun yoldur.

Tüm Veritabanlarının Yedeklenmesi

Tüm MongoDB örneklerinizdeki veritabanlarını yedeklemek için basitçe mongodump komutunu kullanın:

mongodump

Bu komut, çalıştığı dizinde dump/ adında bir dizin oluşturacak ve her veritabanı için ayrı bir alt dizin içinde BSON dosyalarını ve metadata bilgilerini saklayacaktır.

Belirli Bir Veritabanının Yedeklenmesi

Yalnızca belirli bir veritabanını yedeklemek isterseniz, -d veya --db parametresini kullanın:

mongodump --db mydatabase --out /var/backups/mongodb/

Bu komut, mydatabase adındaki veritabanını /var/backups/mongodb/mydatabase/ dizinine yedekleyecektir. /var/backups/mongodb/ dizinini daha önceden oluşturmanız gerekebilir.

Belirli Bir Koleksiyonun Yedeklenmesi

Sadece belirli bir koleksiyonu yedeklemek için -c veya --collection parametresini kullanın:

mongodump --db mydatabase --collection users --out /var/backups/mongodb/

Bu komut, mydatabase içindeki users koleksiyonunu /var/backups/mongodb/mydatabase/ dizinine yedekleyecektir.

Kimlik Doğrulama ile Yedekleme

Eğer MongoDB sunucunuz kimlik doğrulama gerektiriyorsa, --username, --password ve --authenticationDatabase parametrelerini kullanmanız gerekir:

mongodump --host localhost --port 27017 --username adminUser --password yourPassword --authenticationDatabase admin --db mydatabase --out /var/backups/mongodb/

adminUser ve yourPassword yerine kendi kimlik bilgilerinizi, admin yerine ise kullanıcının tanımlı olduğu kimlik doğrulama veritabanını (genellikle admin veya mydatabase) yazmalısınız.

Sıkıştırma ile Yedekleme

Yedekleme boyutunu küçültmek ve depolama alanından tasarruf etmek için --gzip seçeneğini kullanabilirsiniz:

mongodump --db mydatabase --gzip --out /var/backups/mongodb/

Bu, BSON dosyalarını sıkıştırılmış .bson.gz formatında kaydedecektir.

mongoexport ile Veri Dışa Aktarma

mongoexport aracı, bir koleksiyondaki verileri JSON veya CSV formatında dışa aktarır. Bu formatlar, verileri diğer sistemlerle paylaşmak, analiz etmek veya insan tarafından okunabilir bir şekilde depolamak için idealdir. mongoexport yalnızca koleksiyon düzeyinde çalışır, tüm veritabanını tek bir komutla dışa aktaramaz.

JSON Formatında Dışa Aktarma

Belirli bir koleksiyondaki tüm verileri JSON formatında dışa aktarmak için:

mongoexport --db mydatabase --collection products --out products.json

Bu komut, mydatabase içindeki products koleksiyonundaki tüm belgeleri products.json dosyasına dışa aktaracaktır.

CSV Formatında Dışa Aktarma

Verileri CSV formatında dışa aktarırken, hangi alanların dahil edileceğini belirtmeniz önemlidir. --fields parametresi ile alanları virgülle ayırarak belirtebilirsiniz. Ayrıca, CSV dosyasının ilk satırına başlık eklemek için --headerline kullanmak iyi bir uygulamadır:

mongoexport --db mydatabase --collection users --type csv --fields name,email,age --out users.csv --headerline

Bu komut, mydatabase içindeki users koleksiyonundan name, email ve age alanlarını users.csv dosyasına başlık satırı ile birlikte CSV formatında dışa aktaracaktır.

Belirli Kriterlere Göre Veri Dışa Aktarma

Yalnızca belirli kriterlere uyan belgeleri dışa aktarmak için --query parametresini kullanabilirsiniz. Sorgu, JSON formatında olmalıdır:

mongoexport --db mydatabase --collection orders --query '{"status": "completed", "total": {"$gt": 100}}' --out completed_high_value_orders.json

Bu komut, mydatabase içindeki orders koleksiyonundan status alanı “completed” ve total alanı 100’den büyük olan siparişleri completed_high_value_orders.json dosyasına dışa aktaracaktır.

Kimlik Doğrulama ile Dışa Aktarma

mongodump‘ta olduğu gibi, mongoexport için de kimlik doğrulama parametreleri kullanılabilir:

mongoexport --host localhost --port 27017 --username exportUser --password yourPassword --authenticationDatabase admin --db mydatabase --collection products --out products.json

MongoDB Veritabanı İçe Aktarma (Geri Yükleme)

Dışa aktardığınız verileri geri yüklemek, bir felaket durumunda iş sürekliliğini sağlamak veya yeni bir ortama veri taşımak için kritik öneme sahiptir. İçe aktarma işlemleri için de mongorestore ve mongoimport araçlarını kullanırız.

mongorestore ile Binary Yedekleme Geri Yükleme

mongorestore aracı, mongodump ile oluşturulan ikili yedekleri geri yüklemek için kullanılır. Bu, genellikle tam veritabanı veya koleksiyon geri yüklemeleri için tercih edilir.

Tüm Yedeklemeyi Geri Yükleme

Daha önce mongodump ile oluşturduğunuz dump/ dizinini geri yüklemek için:

mongorestore /var/backups/mongodb/dump/

Bu komut, /var/backups/mongodb/dump/ dizinindeki tüm veritabanlarını ve koleksiyonlarını hedef MongoDB örneğine geri yükleyecektir. Eğer hedef veritabanında aynı isimde koleksiyonlar varsa, yeni veriler mevcut verilerle birleşecektir.

Belirli Bir Veritabanını Geri Yükleme

Sadece belirli bir veritabanını geri yüklemek için -d veya --db parametresini kullanın. Bu, yedeğin içindeki veritabanı adından farklı bir isimle geri yükleme yapmanıza da olanak tanır:

mongorestore --db newdatabase /var/backups/mongodb/mydatabase/

Bu komut, /var/backups/mongodb/mydatabase/ dizinindeki yedeği newdatabase adıyla geri yükleyecektir. Orijinal yedeğin adı mydatabase olsa bile, hedef veritabanı newdatabase olacaktır.

Belirli Bir Koleksiyonu Geri Yükleme

Sadece belirli bir koleksiyonu geri yüklemek için -c veya --collection parametresini kullanın:

mongorestore --db mydatabase --collection users /var/backups/mongodb/mydatabase/users.bson

Bu komut, mydatabase içindeki users koleksiyonunu /var/backups/mongodb/mydatabase/users.bson dosyasından geri yükleyecektir.

Mevcut Verileri Silerek Geri Yükleme (--drop)

DİKKAT: --drop parametresi, geri yüklemeden önce hedef koleksiyonu veya veritabanını tamamen siler. Bu, mevcut verilerin kalıcı olarak kaybolmasına neden olabilir. Bu seçeneği kullanırken çok dikkatli olun!

mongorestore --drop --db mydatabase /var/backups/mongodb/mydatabase/

Bu komut, mydatabase veritabanını geri yüklemeden önce tamamen silecektir.

Sıkıştırılmış Yedeklemeyi Geri Yükleme

Eğer yedeğiniz --gzip ile sıkıştırılmışsa, geri yüklerken de --gzip parametresini kullanmanız gerekir:

mongorestore --db mydatabase --gzip /var/backups/mongodb/mydatabase/
Kimlik Doğrulama ile Geri Yükleme

Kimlik doğrulama gerektiren bir MongoDB sunucusuna geri yükleme yaparken:

mongorestore --host localhost --port 27017 --username restoreUser --password yourPassword --authenticationDatabase admin --db mydatabase /var/backups/mongodb/mydatabase/

mongoimport ile Veri İçe Aktarma

mongoimport aracı, JSON, CSV veya TSV formatındaki dosyaları MongoDB koleksiyonlarına aktarmak için kullanılır. Bu, mongoexport ile dışa aktarılan verileri geri yüklemek veya harici kaynaklardan veri yüklemek için idealdir.

JSON Dosyasını İçe Aktarma

Daha önce dışa aktardığınız bir JSON dosyasını içe aktarmak için:

mongoimport --db mydatabase --collection products --file products.json

Bu komut, products.json dosyasındaki verileri mydatabase içindeki products koleksiyonuna aktaracaktır.

CSV Dosyasını İçe Aktarma

CSV dosyalarını içe aktarırken, dosyanın ilk satırında başlık satırı olup olmadığını belirtmek için --headerline parametresini kullanmak önemlidir. Aksi takdirde, MongoDB ilk satırı veri olarak yorumlar.

mongoimport --db mydatabase --collection users --type csv --file users.csv --headerline

Bu komut, users.csv dosyasındaki verileri mydatabase içindeki users koleksiyonuna aktaracaktır. --headerline sayesinde name, email, age gibi alanlar doğru şekilde eşleştirilecektir.

Mevcut Belgeleri Güncelleme veya Yeni Ekleme (--upsert)

Eğer içe aktaracağınız belgelerden bazıları zaten koleksiyonda mevcutsa ve onları güncellemek istiyorsanız, --upsert parametresini kullanabilirsiniz. Bu, _id alanı veya --upsertFields ile belirtilen alanlar üzerinden eşleşen belgeleri günceller, eşleşmeyenleri ise yeni belge olarak ekler.

mongoimport --db mydatabase --collection users --file new_users_data.json --upsert --upsertFields email

Bu komut, new_users_data.json dosyasındaki belgeleri email alanına göre kontrol eder. Eğer email alanı mevcut bir belgede bulunuyorsa, o belgeyi günceller; aksi takdirde yeni bir belge olarak ekler.

Mevcut Koleksiyonu Silip İçe Aktarma (--drop)

mongorestore‘da olduğu gibi, mongoimport da --drop parametresini destekler. Bu, içe aktarmadan önce hedef koleksiyonu tamamen siler. Yine, bu seçeneği kullanırken çok dikkatli olun!

mongoimport --db mydatabase --collection products --file products.json --drop

Bu komut, products koleksiyonunu silip ardından products.json dosyasındaki verileri içe aktaracaktır.

Kimlik Doğrulama ile İçe Aktarma

Kimlik doğrulama gerektiren bir MongoDB sunucusuna içe aktarma yaparken:

mongoimport --host localhost --port 27017 --username importUser --password yourPassword --authenticationDatabase admin --db mydatabase --collection products --file products.json

Pratik İpuçları ve En İyi Uygulamalar

Veritabanı yedekleme ve geri yükleme işlemleri, doğru yapıldığında sisteminizin güvenliğini ve sürekliliğini sağlar. İşte bazı pratik ipuçları ve en iyi uygulamalar:

Güvenlik

* Kimlik Doğrulama Kullanın: Üretim ortamlarında her zaman kimlik doğrulama (kullanıcı adı ve şifre) kullanın. Yedekleme ve geri yükleme işlemleri için özel, sınırlı yetkilere sahip kullanıcılar oluşturun.
* Ağ Kısıtlamaları: MongoDB sunucunuza yalnızca güvenilir IP adreslerinden erişime izin verin. Güvenlik duvarı kuralları (ufw) ile port 27017’yi kısıtlayın.
* Dosya İzinleri: Yedekleme dosyalarını sakladığınız dizinlerin uygun dosya izinlerine sahip olduğundan emin olun. Hassas verilerin yetkisiz erişimini engelleyin.

Performans

* Büyük Veritabanları İçin Paralellik: Çok büyük veritabanlarını yedeklerken veya geri yüklerken, mongodump ve mongorestore araçlarındaki --numParallelCollections seçeneğini kullanarak birden fazla koleksiyonu paralel olarak işleyebilirsiniz. Bu, özellikle çok sayıda koleksiyonu olan veritabanları için performansı önemli ölçüde artırabilir.
* Yeterli Disk Alanı: Yedekleme için yeterli disk alanına sahip olduğunuzdan emin olun. Sıkıştırma (--gzip) kullanmak alanı korumaya yardımcı olabilir.
* Veritabanı Sunucusuna Yük: Yedekleme işlemleri, veritabanı sunucusuna belirli bir yük bindirebilir. Yoğun kullanım saatleri dışında yedekleme yapmayı veya replika setlerindeki ikincil düğümlerden yedekleme almayı düşünebilirsiniz.

Otomasyon

* Cron İşleri: Düzenli yedeklemeleri otomatikleştirmek için Linux cron servisini kullanın. Örneğin, her gece otomatik yedekleme yapmak için bir bash betiği oluşturup cron’a ekleyebilirsiniz:

# /etc/cron.d/mongodb_backup
    # Her gece saat 02:00'de mydatabase'i yedekle
    0 2   * root mongodump --db mydatabase --gzip --out /var/backups/mongodb/$(date +\%Y\%m\%d) >> /var/log/mongodb_backup.log 2>&1

Bu örnek, her yedekleme için tarih bazlı bir dizin oluşturur. Eski yedekleri silmek için de bir cron işi eklemeyi unutmayın.

Depolama ve Güvenilirlik

* Uzak Depolama: Yedeklerinizi MongoDB sunucusuyla aynı diskte tutmak risklidir. Yedekleri ayrı bir sunucuya, ağ depolama birimine (NAS), bulut depolama hizmetine (AWS S3, Google Cloud Storage vb.) veya harici bir diske kopyalayın.
* Yedekleri Test Etme: Yedekleme işleminin sorunsuz çalıştığından emin olmak yetmez. Periyodik olarak yedeklerinizi test ortamında geri yükleyerek verilerin bütünlüğünü ve geri yüklenebilirliğini doğrulayın. Bu, gerçek bir felaket anında hayal kırıklığı yaşamanızı engeller.
* Versiyon Uyumluluğu: MongoDB versiyonları arasında yedekleme ve geri yükleme yaparken dikkatli olun. Genellikle, daha yeni bir MongoDB sürümü, daha eski bir sürümden alınan yedeği geri yükleyebilir. Ancak, daha eski bir sürüme daha yeni bir sürümden alınan yedeği geri yüklemek sorunlara yol açabilir. Her zaman resmi dokümantasyonu kontrol edin.

Replikasyon Setleri

* Eğer bir replikasyon setiniz varsa, mongodump işlemini birincil düğümden veya ikincil düğümlerden birinden alabilirsiniz. İkincil düğümden yedek almak, birincil düğümün performansını etkilememesi açısından faydalıdır. Ancak, tutarlı bir anlık görüntü için --oplog seçeneğini kullanarak replikasyon setinizin birincil düğümünden yedek almak en güvenli yoldur.

Sonuç ve Sıkça Sorulan Sorular (SSS)

MongoDB veritabanınızı Ubuntu 14.04 üzerinde içe ve dışa aktarma işlemleri, doğru araçları ve yöntemleri kullandığınızda oldukça basittir. mongodump ve mongorestore ikili yedeklemeler için idealdir ve felaket kurtarma senaryolarında hızlı bir çözüm sunar. mongoexport ve mongoimport ise verileri taşınabilir, okunabilir formatlarda yönetmek için esneklik sağlar. Bu rehberdeki bilgileri uygulayarak verilerinizin güvenliğini ve erişilebilirliğini sağlayabilirsiniz. Unutmayın, en iyi yedekleme, test edilmiş yedeklemedir!

Sıkça Sorulan Sorular (SSS)

Q1: mongodump ve mongoexport arasındaki temel fark nedir?
A1: mongodump, veritabanının ikili (BSON) formatında tam bir yedeğini alır. Bu yedekler, sadece mongorestore ile MongoDB’ye geri yüklenebilir ve genellikle felaket kurtarma veya veritabanı taşıma için kullanılır. mongoexport ise verileri JSON veya CSV gibi insan tarafından okunabilir formatlarda dışa aktarır. Bu formatlar, verileri diğer sistemlerle paylaşmak, analiz etmek veya farklı amaçlar için kullanmak için uygundur. mongoexport yalnızca koleksiyon bazında çalışır.

Q2: Yedekleme işlemi sırasında veritabanı kilitlenir mi?
A2: Hayır, modern MongoDB sürümlerinde mongodump işlemi varsayılan olarak veritabanını kilitlemez. Veritabanı okuma-yazma işlemlerine devam edebilir. Ancak, çok büyük veritabanlarında yedekleme işlemi sırasında performans düşüşleri yaşanabilir. Tutarlı bir anlık görüntü almak için replikasyon setlerinde --oplog seçeneği kullanılabilir.

Q3: Sadece belirli alanları nasıl dışa aktarabilirim?
A3: mongoexport aracını kullanırken --fields parametresi ile dışa aktarmak istediğiniz alanları virgülle ayırarak belirtebilirsiniz. Örneğin: --fields name,email,age. Bu, özellikle CSV formatında dışa aktarma yaparken önemlidir.

Q4: Farklı MongoDB versiyonları arasında yedekleme yapabilir miyim?
A4: Genellikle, daha yeni bir MongoDB sürümü, daha eski bir sürümden alınan yedeği sorunsuz bir şekilde geri yükleyebilir. Ancak, daha yeni bir MongoDB sürümünden alınan bir yedeği, daha eski bir sürüme geri yüklemek genellikle mümkün değildir veya uyumluluk sorunlarına yol açabilir. Her zaman hedef MongoDB sürümünüzün, yedeğin alındığı sürümle uyumlu olduğundan emin olun ve resmi MongoDB dokümantasyonunu kontrol edin.

Q5: Yedeklerimi nerede saklamalıyım?
A5: Yedeklerinizi asla veritabanı sunucusuyla aynı diskte saklamamalısınız. En iyi uygulama, yedekleri ayrı bir sunucuya, ağ depolama birimine (NAS), bulut depolama hizmetine (AWS S3, Google Cloud Storage vb.) veya harici bir diske taşımaktır. Bu, ana sunucunun arızalanması durumunda verilerinizin güvende kalmasını sağlar.

Q6: Otomatik yedekleme nasıl yaparım?
A6: Linux sistemlerinde cron servisini kullanarak otomatik yedekleme yapabilirsiniz. Bir bash betiği oluşturup bu betiği cron görevlisi aracılığıyla düzenli aralıklarla çalıştırabilirsiniz. Betik, mongodump komutunu çalıştırır, yedekleri sıkıştırır ve isteğe bağlı olarak uzak bir depolama konumuna taşı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.