Linux

MongoDB Veritabanı Nasıl Yedeklenir ve Geri Yüklenir?

kuzt9r42or1fxvlq2 Meta Generic
Share

MongoDB, NoSQL sistemlerinin klasik örneklerinden biri olarak kabul edilir. Belgeleri, MongoDB’deki temel veri birimi olan anahtar/değer çiftlerinden oluşur. Koleksiyonları, ilişkisel veritabanlarındaki tablolara eşdeğer belge grupları ve işlevler içerir. MongoDB, 2000’li yılların ortalarında ortaya çıkan bir veritabanıdır. Bu yazıda, verileri nasıl yedekleyeceğinizi ve ardından geri yüklemeyi öğreneceğiz. Kılavuz, Ubuntu 20.04.2 LTS işletim sistemine sahip bir bilgisayarda geliştirilmiştir.

MongoDB veri formatı
Veri alışverişi ve depolama için popüler standartlardan biri JSON’dur (JavaScript Object Notation). JSON, karmaşık yapılara sahip verileri etkili bir şekilde tanımlayabilir. Bu bakımdan MongoDB’de veri saklama şekli, teknik olarak JSON kullanılmasa da JSON’a benzer. JSON yerine MongoDB, verileri MongoDB’de depolamak için BSON(ikili JSON) kullanır. BSON, verilerle çalışmayı daha hızlı hale getirir. Daha hızlı arama ve işleme sağlar. Bununla birlikte, JSON’un aksine BSON’un küçük bir dezavantajı olduğu belirtilmelidir. Genel olarak, JSON verileri BSON’dakinden daha az yer kaplar; öte yandan, yüksek hız bu dezavantajı tamamen telafi edecektir.

Öyleyse MongoDB’mize bağlanalım ve yedeklemeler için üç veritabanı oluşturalım. Bunlar DB1, DB2 ve DB3 olacaktır. Bu veritabanlarını doldurmak için bazı koleksiyonlar ekleyelim.

DB1’i kullan
db.createCollection(“posts1”)
db.createCollection(“adres1”)
db.createCollection(“telefon1”)

DB2 kullan
db.createCollection(“posts2”)
db.createCollection(“adres2”)
db.createCollection(“telefon2”)

DB3 kullan
db.createCollection(“posts3”)
db.createCollection(“adres3”)
db.createCollection(“telefon3”)

Veritabanlarımızı oluşturduk. Şimdi her şeyin yolunda olup olmadığını kontrol edelim:

use admin
show dbs

Gördüğünüz gibi, veritabanlarımız tamam. Şimdi daha önce oluşturduğumuz koleksiyonlara sahip olup olmadıklarını kontrol edelim.

use DB1
show collections

use DB2
show collections

use DB3
show collections

Bütün koleksiyonlar orada. Şimdi ilk yedekleme seçeneğine geçebiliriz.

Yedek kopya oluşturmak için root olarak oturum açın. Şimdi yedeklemeyi depolamak için bir dizin oluşturun:

$ mkdir /tmp/backup_v1

Şimdi bir yedekleme oluşturmak için aşağıdaki komutu kullanın:

$ mongodump --host=localhost --gzip --db DB1 --archive=/tmp/backup_v1/backup-db-1.gz

Şimdi bir yedek oluşturduktan sonra veritabanı dizinine geçelim ve aşağıdaki komutu kullanarak neler olduğunu görelim:

$ ls -la /tmp/backup_v1

Gördüğünüz gibi, Yedek Kopyamız yeni oluşturuldu.

Şimdi, bu tür bir yedeklemeden verileri geri yükleyin, aşağıdaki komutu kullanıyoruz:

$ mongorestore --gzip --archive=/tmp/backup_v1/backup-db-1.gz

Bu örnekte, daha sonra arşivlenen bir yedek kopya oluşturmak için yalnızca bir komut kullanıyoruz. Yedek kopyanın nasıl oluşturulacağına ilişkin birkaç seçenek vardır. Bu yazıda bunları tek tek ele alacağız.

Veri sıkıştırması olmadan tüm veritabanlarını yedekleyin.

Yedeklemeyi depolamak için bir dizin oluşturalım:

$ mkdir /tmp/backup_v2

Yedeklemek için aşağıdaki komutu kullanın:

$ mongodump --out /tmp/backup_v2

Başarılı bir yedeklemeden sonra veritabanı dizinine geçelim ve nelere sahip olduğunu görelim. Sıkıştırma olmadan BSON ve JSON koleksiyonlarına sahiptir.

$ ls -la /tmp/backup_v2/db1

Şimdi aşağıdaki komutu kullanarak verileri bu yedekten geri yükleyin:

$ mongorestore --drop --dir /tmp/backup_v2

Burada, yinelenen anahtar hatalarını önlemek için içe aktarmadan önce (varsa) bir koleksiyonu bırakmak için –drop parametresi kullanılır. Bu –drop parametresi dikkatli kullanılmalıdır.

Şimdi tüm veritabanlarının bir yedeğinden belirli bir koleksiyonu (örneğin, DB1’den gönderiler1) geri yükleyin:

$ mongorestore --drop --dir /tmp/backup_v2 --ns'DB1.posts1'i dahil et

Belirli bir koleksiyon (örneğin, DB1’den gönderiler1) dışındaki tüm veritabanlarını ve tüm koleksiyonları geri yükleyin:

$ mongorestore --drop --dir /tmp/backup_v2 --ns'DB1.posts1'i hariç tut

Tüm veritabanlarını sıkıştırma ile yedekleyin

Şimdi bir yedek oluşturun ve yedekleme dosyasını sıkıştırın:

$ mkdir /tmp/backup_v3 
$ mongodump --gzip --out /tmp/backup_v3

Şimdi yedekleme dosyasını görüntüleyin:

$ ls -la /tmp/backup_v3/db1

Burada yedekleme dosyası sıkıştırılmış dosyalar içerir.

 

Şimdi bu tür bir yedeklemeden verileri geri yükleyin:

$ mongorestore --gzip --drop --dir /tmp/backup_v3

Tüm veritabanlarını sıkıştırma ile tek bir arşive (.gz) yedekleyin

Tek bir arşivde (.gz) sıkıştırılmış tüm veritabanlarının bir yedeğini oluşturun:

$ mkdir /tmp/backup_v4/ 
$ mongodump --gzip --archive=/tmp/backup_v4/my_backup.gz

Şimdi aşağıdaki komutu kullanarak verileri yedekten geri yükleyin:

$ mongorestore --gzip --drop --archive=/tmp/backup_v4/my_backup.gz

Belirli bir veritabanını yedekleyin

Belirli bir veritabanının yedeğini oluşturun

$ mkdir /tmp/backup_v5 
$ mongodump --gzip --out /tmp/backup_v5 --db DB2

Bu yedeklemeden verileri geri yükleyin:

$ mongorestore --gzip --drop --dir /tmp/backup_v5

DB2’den tek bir address2 koleksiyonunu yedekleyin

DB2’den tek bir adres2 koleksiyonunun yedeği oluşturun

$ mkdir /tmp/backup_v6 
$ mongodump --gzip --out /tmp/backup_v6 --db DB2 -c address2

Tek bir gönderi2 koleksiyonu dışında tüm DB2’yi yedekleyin

Tek bir gönderi2 koleksiyonu dışında tüm DB2’nin yedeğini oluşturun

$ mkdir /tmp/backup_v7
$ mongodump --gzip --out /tmp/backup_v7 --db DB2 --excludeCollection gönderileri2

Veya daha önce paylaşmış oldugumuz 8 Adımda Mongodump ile Mongodb Yedeklemek makalesine göz atabilirsiniz.
Yada MongoDB – Veritabanı, Koleksiyon ve Belge adlı makalemize göz atabilirsiniz.