MongoDB Veritabanı Nasıl Yedeklenir ve Geri Yüklenir?
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.