Araç çubuğuna atla

Couchbase Backup ve Restore İşlemleri

Bu yazıda Backup, Restore, Merge Backup ve Restore Backup işlemlerini anlatacağım.

Couchbase, Backup ve Restore işlemleri için bir kaç farklı tool sunmaktadır.
Bunlar cbbackmgr, cbbackup ve cbrestore toollarıdır.

cbbackmgr ;
Couchbase Backup Manager, yalnızca Couchbase Server Enterprise Edition’da bulunan kurumsal düzeyde bir backup ve restore yardımcı programıdır. Enterprise Edition için tasarlanan bu sürüm, cbbackup ve cbrestore araçlarını, 4.5 sürümü ve üstü sürümlerden Enterprise müşterileri için birincil ve önerilen yedekleme ve geri yükleme aracı olarak değiştirir. Data, index ve bucket yapılandırmalarının önceki nesil araçlara göre önemli ölçüde artırılmış bir hızda yedeklenmesini ve geri yüklenmesini sağlar. Tüm yedeklemeler active olarak çalışan clusterlarda gerçekleştirilebilir.

cbbackup ve cbrestore ;
Cbbackup ve cbrestore araçları, Couchbase Server’a basit ama etkili yedekleme ve geri yükleme özellikleri sağlar. Cbbackup aracı tek bir node’u, single bucketları veya clusterın tamamını esnek bir yedekleme yapısına dahil ederek yedeklemenizi sağlar. Cbrestore aracı, verileri aynı veya farklı bucketlara veya clusterlara geri yüklemeyi sağlayabilir.

Backup Configuration
Cbbackupmgr ile çalışmaya başlamadan önce, tüm backupların tutulacağı dizine karar vermelisiniz. Bu dizine backup archive (yedekleme arşivi) denir. Yedekleme arşivi bir veya daha fazla yedek veri havuzu (reposity) içerir. Bu yedekleme havuzları, backuplarınızın bulunduğu yerdir. Bir yedek havuzu mantığını düşünmenin en kolay yolu, doğrudan yedeklemek istediğiniz tek bir cluster’a karşılık geleceği şekildedir. Yedekleme havuzu ayrıca cluster’ın nasıl geri ayağa kalkması gerektiği bilgisini içeren bir configuration’a sahiptir.
Bu yazıda /data/backup dizini altındaki configurationlara göz atarak, yeni bir backup almayı inceleyeceğiz. Belirtilen dizin boşsa yedekleme arşivi otomatik olarak oluşturulur. Aşağıda, hedef kümedeki tüm bölümlerden tüm verileri ve dizin tanımlarını yedekleyecek “cluster” adlı bir yedekleme havuzunun nasıl oluşturulacağına ilişkin bir örnek verilmiştir.

$ cbbackupmgr config -a /data/backup -r cluster 
Backup repository `cluster` created successfully in archive `/data/backup`

Yedekleme havuzu oluşturma işleminin en önemli yönlerinden biri, her bir yedekleme deposundaki yedeklemelerin alınma biçimini değiştirmek için bu yedekleme havuzunu birçok farklı şekilde yapılandırabilmemizdir. Diyelim ki yalnızca travel-sample bucket’ının ayrı bir yedeklemesini istiyoruz. Bunu yapmak için “single” adlı ayrı bir yedekleme havuzu oluşturabiliriz.

$ cbbackupmgr config -a /data/backup -r single \
 --include-buckets travel-sample --disable-data
Backup repository `single` created successfully in archive `/data/backup`

Backup Cluster

Şimdi bazı yedekleme depoları oluşturduğumuza göre, nasıl göründüğünü görmek için yedekleme arşivimize bakmalıyız. Bunu yapmanın en kolay yolu liste alt komutunu kullanmaktır. Bu alt komut bir yedekleme arşivini incelemek için kullanılır ve içinde ne kadar veri depolandığı hakkında bilgi verir. Yedekleme arşivinin tamamını görmek için aşağıdaki komutu çalıştırabiliriz.

$ cbbackupmgr list -a /data/backup
Size      Items          Name
0B        -              /
0B        -              + cluster
0B        -              + single

Liste alt komutu bize yedekleme arşivindeki tüm yedekleme havuzlarından ve yedeklemelerden bir dizin yazdırması sağlar. Hiçbir yedekleme olmadığından, bu komutun çıktısında arşiv listemizi görebiliriz. Ayrıca, her klasör ve dosyanın ne kadar disk alanı içerdiği ve varsa, bu klasörlerde / dosyalarda kaç öğenin yedeklendiği hakkında bilgi de vardır. Liste alt komutu hakkında daha fazla bilgi cbbackupmgr-list sayfasında bulunabilir.

Artık yedekleme havuzlarımızı yapılandırdığımız için yedek almaya başlayabiliriz. Yedek deposu, yedeklemenin nasıl alınması gerektiğine ilişkin tüm yapılandırma bilgilerini içerdiğinden, yalnızca yedek havuz adını ve yedeklemek istediğimiz hedef küme bilgilerini belirtmemiz yeterli olacaktır. Aşağıda, “cluster” yedekleme havuzunda nasıl yedek alınacağına ilişkin bir örnek mevcuttur. Kümemizin localhost üzerinde çalıştığını varsayarak;

$ cbbackupmgr backup -a /data/backup -r cluster \
 -c couchbase://127.0.0.1 -u Administrator -p password
Backing up to 2016-03-22T10_26_08.933579821-07_00
Copied all data in 6s (Avg. 6.67MB/Sec)        38894 items / 40.02MB
travel-sample           [==================================] 100.00%
beer-sample             [==================================] 100.00%
Backup successfully completed

Backup komutu çalıştırıldığında, varsayılan olarak yedeklemenizin ne kadar sürede tamamlanacağını ve veri taşıma hızını anlamak için yardımcı olan bir process bar göreceksiniz. Yedekleme çalışırken process bar, tahmini olarak bir backup tamamlama süresi verecektir. Yedekleme başarıyla tamamlanırsa, yazdırılan son satırda “Backup successfully completed” yazısını görürsünüz.
İki yedeklemenin nasıl farklı olduğunu görmek için yedeklemeyi “single” yedekleme deposunda da çalıştıralım.

$ cbbackupmgr backup -a /data/backup -r single \
 -c couchbase://127.0.0.1 -u Administrator -p password
Backing up to 2016-03-22T10_33_20.812668465-07_00
Copied all data in 1s (Avg. 480B/Sec)                 0 items / 480B
travel-sample           [==================================] 100.00%

“single” yedekleme deposu yalnızca travel-sample bucket’ı için dizin tanımlarını yedeklemek üzere yapılandırıldığından, beer-sample bucket’ı için bir ilerleme çubuğu görmüyoruz. Ayrıca, yedeklenecek çok daha az veri olduğundan yedeklemenin daha hızlı yürütüldüğünü de görebiliriz.

Artık yedekleme arşivimizde yedekler bulunduğundan, yedek arşivimizin durumunun alt listeyi kullanarak nasıl değiştiğine bakalım.

$ cbbackupmgr list -a /data/backup
Size      Items          Name
154.25MB  -              /
154.21MB  -              + cluster
154.21MB  -                  + 2016-03-22T10_26_08.933579821-07_00
55.85MB   -                      + beer-sample
298B      0                          bucket-config.json
55.84MB   7303                       + data
55.84MB   7303                           shard_0.fdb
2B        0                          full-text.json
10.07KB   8                          gsi.json
784B      1                          views.json
98.36MB   -                      + travel-sample
300B      0                          bucket-config.json
98.35MB   31591                      + data
98.35MB   31591                          shard_0.fdb
2B        0                          full-text.json
10.07KB   8                          gsi.json
1.72KB    1                          views.json
40.08KB   -              + single
40.08KB   -                  + 2016-03-22T10_33_20.812668465-07_00
40.08KB   -                      + travel-sample
300B      0                          bucket-config.json
28.00KB   0                          + data
28.00KB   0                              shard_0.fdb
2B        0                          full-text.json
10.07KB   8                          gsi.json
1.72KB    1                          views.json

“Küme” yedekleme havuzumuzda, yedeklemenin alındığı zamana karşılık gelen bir ad içeren bir yedekleme bulunduğunu görebiliriz. Bu yedekleme ayrıca iki bucket içerir ve bu yedeklemelerin her birinde boyut ve öğe sayılarıyla birlikte çeşitli dosyalar görebiliriz. “single” yedek veri havuzu da bir yedek mevcut, ancak bu yedek yalnızca travel-sample bucket’ını içerir ve 0 veri öğesi barındırır.

Cbbackupmgr’nin en önemli özelliklerinden biri, yalnızca incremental-only bir yedekleme yardımcı programı olmasıdır. Bu, bazı verileri yedeklediğimizde, bir daha asla yedeklememiz gerekmeyeceği anlamına gelir. Kümedeki bazı değişiklikleri simüle etmek için, 02-modify.sh komut dosyasını öğreticinin başında belirtilen yedekleme öğretici github deposundan çalıştırabiliriz. Bu komut dosyasına sahip değilseniz, travel-sample bucket’nda iki belgeyi değiştirmeniz ve iki yeni belge eklemeniz gerekir. Bazı verileri değiştirdikten sonra “cluster” yedekleme deposunda yedekleme alt komutunu yeniden çalıştıracağız.

$ cbbackupmgr backup -a /data/backup -r cluster \
 -c couchbase://127.0.0.1 -u Administrator -p password
Backing up to 2016-03-22T14_00_38.668068342-07_00
Copied all data in 3s (Avg. 18.98KB/Sec)           4 items / 56.95KB
travel-sample           [==================================] 100.00%
beer-sample             [==================================] 100.00%
Backup successfully completed

Yedekleme arşivini list alt komutunu kullanarak listelersek, yedekleme arşivinin aşağıdaki gibi bir şeye benzediğini göreceğiz.

$ cbbackupmgr list -a /data/backup
Size      Items          Name
254.31MB  -              /
254.28MB  -              + cluster
154.19MB  -                  + 2016-03-22T10_26_08.933579821-07_00
55.84MB   -                      + beer-sample
298B      0                          bucket-config.json
55.83MB   7303                       + data
55.83MB   7303                           shard_0.fdb
2B        0                          full-text.json
9.99KB    8                          gsi.json
784B      1                          views.json
98.35MB   -                      + travel-sample
300B      0                          bucket-config.json
98.34MB   31591                      + data
98.34MB   31591                          shard_0.fdb
2B        0                          full-text.json
9.99KB    8                          gsi.json
1.72KB    1                          views.json
100.08MB  -                  + 2016-03-22T14_00_38.668068342-07_00
50.03MB   -                      + beer-sample
298B      0                          bucket-config.json
50.02MB   0                          + data
50.02MB   0                              shard_0.fdb
2B        0                          full-text.json
9.99KB    8                          gsi.json
784B      1                          views.json
50.05MB   -                      + travel-sample
300B      0                          bucket-config.json
50.04MB   4                          + data
50.04MB   4                              shard_0.fdb
2B        0                          full-text.json
9.99KB    8                          gsi.json
1.72KB    1                          views.json
40.08KB   -              + single
40.08KB   -                  + 2016-03-22T10_33_20.812668465-07_00
40.08KB   -                      + travel-sample
300B      0                          bucket-config.json
28.00KB   0                          + data
28.00KB   0                              shard_0.fdb
2B        0                          full-text.json
10.07KB   8                          gsi.json
1.72KB    1                          views.json

Restore Backup

Şimdi bazı backup dosyalarımız olduğuna göre, bu backup dosyalarından cluster’a bir restore işlemi yapabiliriz. Verileri geri yüklemek için sadece geri yüklemek istediğimiz yedeklemenin adını bilmemiz gerekir. Adı bulmak için, yedek arşivimizde ne olduğunu görmek için liste alt komutunu tekrar kullanabiliriz. Yedek adında bir zaman damgası olacaktır. Örneğin, 2016-03-22T10_26_08.933579821-07_00 ürününü “cluter” yedek havuzundan geri yüklemek istediğimizi varsayalım. Bunu yapmak için aşağıdaki komutu çalıştırıyoruz.

$ cbbackupmgr restore -a /tmp/backup -r cluster \
 -c http://127.0.0.1:8091 -u Administrator -p password \
 --start 2016-03-22T14_00_16.892277632-07_00 \
 --end 2016-03-22T14_00_16.892277632-07_00 --force-updates
(1/1) Restoring backup 2016-03-22T14_00_16.892277632-07_00
Copied all data in 2s (Avg. 19.96MB/Sec)       38894 items / 39.91MB
travel-sample           [==================================] 100.00%
beer-sample     
Restore completed successfully

Yukarıdaki komutta, geri yüklemek istediğimiz yedekleme aralığını belirtmek için –start ve –end parametrelerini kullanıyoruz. Yalnızca bir yedeklemeyi geri yüklediğimiz için –start ve –end için aynı değeri belirlerdik. Couchbase’de çakışma problemini atlamak için –force-updates parametresini ekledik. Kümede güncellediğimiz iki değere bakarsak, şimdi ilk yedeklemeyi aldığımız zamanki haline geri döndüklerini göreceğiz.

Merge Backup

Incremental backup ile yedek almak, aldığımız her yedeklemenin disk alanını artırdığı anlamına gelir. Disk alanı sonsuz olmadığından, bu disk alanını geri kazanabilmemiz gerekir. Bunu yapmak için iki veya daha fazla yedeklemeyi birleştirmek için cbbackupmgr-merge alt komutunu kullanırız. “cluster” yedekleme havuzunda iki backup olduğundan, aşağıdaki komutu kullanarak bu backupları bir araya getireceğiz.

$ cbbackupmgr merge -a /data/backup -r cluster \
 --start 2016-03-22T14_00_16.892277632-07_00 \
 --end 2016-03-22T14_00_38.668068342-07_00
Merge completed successfully

Yedekleri bir araya getirdikten sonra, tekrardan liste komutu ile yedeklerin son durumuna bakalım.

$ cbbackupmgr list --archive /data/backup
Size      Items          Name
154.41MB  -              /
154.37MB  -              + cluster
154.37MB  -                  + 2016-03-22T14_00_38.668068342-07_00
55.84MB   -                      + beer-sample
298B      0                          bucket-config.json
55.83MB   7303                       + data
55.83MB   7303                           shard_0.fdb
2B        0                          full-text.json
9.99KB    8                          gsi.json
784B      1                          views.json
98.53MB   -                      + travel-sample
300B      0                          bucket-config.json
98.52MB   31593                      + data
98.52MB   31593                          shard_0.fdb
2B        0                          full-text.json
9.99KB    8                          gsi.json
1.72KB    1                          views.json
40.08KB   -              + single
40.08KB   -                  + 2016-03-22T10_33_20.812668465-07_00
40.08KB   -                      + travel-sample
300B      0                          bucket-config.json
28.00KB   0                          + data
28.00KB   0                              shard_0.fdb
2B        0                          full-text.json
10.07KB   8                          gsi.json
1.72KB    1                          views.json

Remove Backup

Eğer yedek dosyalarınıza artık ihtiyacınız yoksa alltaki komut ile yedeklerinizi tamamen silebilirsiniz.

$ cbbackupmgr remove -a /data/backup -r cluster
Backup repository `cluster` deleted successfully from archive `/data/backup`
Database Administrator at Nubes Bilişim Danışmanlık ve Ticaret A.Ş - http://www.cansayin.com - https://www.linkedin.com/in/can-sayın-b332a157/

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Back To Top