Bu konu, fiziksel yedekleme dosyalarını kullanarak ApsaraDB for MongoDB örneğindeki verilerin tek düğümlü veya çoğaltma kümesi modundaki kendi yönettiğiniz bir MongoDB veritabanına nasıl geri yükleneceğini açıklar.
Ön koşullar
Örnek bir çoğaltma kümesi örneğidir.
Örnek, verileri depolamak için yerel diskler kullanır.
Örnek için Şeffaf Veri Şifreleme (TDE) özelliği devre dışı bırakılmıştır. Daha fazla bilgi için bkz. Bir örnek için TDE yapılandırma.
-
Örneğin depolama altyapısı WiredTiger veya RocksDB'dir. Örneğin depolama altyapısı TerarkDB ise mantıksal yedekleme kullanarak örnek verilerini kendi yönettiğiniz bir veritabanına geri yükleyebilirsiniz. Daha fazla bilgi için bkz. Mantıksal yedekleme kullanarak örnek verilerini kendi yönettiğiniz MongoDB veritabanına geri yükleme.
NotApsaraDB for MongoDB konsolunda Basic Information sayfasında örneğin depolama altyapısını görüntüleyebilirsiniz.
Örneğin depolama altyapısı RocksDB ise RocksDB depolama altyapısına sahip bir MongoDB uygulamasını derlemeniz ve yüklemeniz gerekir.
Veritabanı sürümü gereksinimleri
Örneğin sürümü, kendi yönettiğiniz MongoDB veritabanının sürümüyle eşleşmelidir. Aşağıdaki tabloda örnek ile kendi yönettiğiniz MongoDB veritabanı arasındaki eşleştirmeler listelenmiştir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Fiziksel yedekleme dosyalarının biçimleri
Fiziksel yedekleme dosyası biçimi | Dosya adı uzantısı | Açıklama |
TAR | .tar.gz | 26 Mart 2019 tarihinden önce oluşturulan ApsaraDB for MongoDB örneklerinin fiziksel yedekleme dosyaları .tar biçimindedir. |
xbstream | _qp.xb | 26 Mart 2019 tarihinde veya sonrasında oluşturulan ApsaraDB for MongoDB örneklerinin fiziksel yedekleme dosyaları .xbstream biçimindedir. Not .xbstream biçimi yalnızca Linux için kullanılabilir. .xbstream biçimindeki dosyaların sıkıştırmasını açmak için kullanılan Percona XtraBackup aracını Windows desteklemediğinden bu biçim Windows'ta kullanılamaz. |
Ortam
Aşağıdaki yordamda Ubuntu 16.04 64 bit görüntüsünden oluşturulan bir Elastic Compute Service (ECS) örneği kullanılır. Bir ECS örneği oluşturma hakkında daha fazla bilgi için bkz. Sihirbazı kullanarak örnek oluşturma.
Gerekli sürümdeki MongoDB, ECS örneğine yüklenmiştir. MongoDB yükleme hakkında daha fazla bilgi için bkz. MongoDB Sürücüsü Ekleme.
ECS örneğindeki kendi yönettiğiniz MongoDB veritabanı için ortam değişkenleri yapılandırılmıştır. Komutları çalıştırırken yürütülebilir dosya yollarını tekrar girmeniz gerekmez. Daha fazla bilgi için bkz. Adım 1: Ortam değişkenlerini yapılandırma.
ECS örneğinin /test/mongo/data dizini çoğaltma kümesi örneği için kullanılır.
ECS örneğinin /test/mongo/data1 ve /test/mongo/data2 dizinleri, çoğaltma kümesi düğümündeki kendi yönettiğiniz MongoDB veritabanı için kullanılır.
Adım 1: Ortam değişkenlerini yapılandırma
Kendi yönettiğiniz MongoDB veritabanı için ortam değişkenlerini yapılandırın. Bu şekilde, komutları çalıştırırken yürütülebilir dosya yollarını girmeniz gerekmez. Bu adımı uygulamadan önce MongoDB'nin yüklü olduğundan emin olun. Daha fazla bilgi için MongoDB Yükleme adresini ziyaret edin.
MongoDB için ortam değişkenleri zaten yapılandırıldıysa bu adımı atlayıp 2. Adımdaki işlemleri uygulayın. Daha fazla bilgi için bkz. Adım 2: Fiziksel yedekleme dosyasını indirme ve sıkıştırmayı açma.
-
Linux'ta
profiledosyasını açmak için aşağıdaki komutu çalıştırın:sudo vi /etc/profile -
Düzenleme moduna girmek için
ituşuna basın. Ardından son satıra aşağıdaki kodu girin:export PATH=$PATH:/<The path of the MongoDB server>/binNot/test/mongo/bin bu örnekte MongoDB sunucusunun yolu olarak kullanılmıştır. Ortam değişkenlerini yapılandırırken gerçek yolu kullanın.
Örnek:
export PATH=$PATH:/test/mongo/bin Düzenleme modundan çıkmak için Esc tuşuna basın ve dosyayı kaydedip çıkmak için
:wqgirin.-
Yapılandırdığınız ortam değişkenlerinin etkili olması için aşağıdaki komutu çalıştırın:
source /etc/profile
Adım 2: Fiziksel yedekleme dosyasını indirme ve sıkıştırmayı açma
-
ApsaraDB for MongoDB konsolunda örneğin fiziksel yedekleme verilerini indirmek için aşağıdaki komutu çalıştırın. Daha fazla bilgi için bkz. Çoğaltma kümesi örneğinin fiziksel yedekleme verilerini indirme.
wget -c '<External download URL of the data backup file>' -O <Custom name of the downloaded data backup file>.<File name extension>NotDosya adı uzantısının
.tar.gzveya_qp.xbolduğundan emin olun. -
/test/mongo/ dizininde
dataadlı bir dizin oluşturmak için aşağıdaki komutu çalıştırın. Ardından indirilen örnek fiziksel yedekleme dosyasını /test/mongo/data/ dizinine taşıyın.mkdir -p /test/mongo/data && mv <Name of the physical backup file.Extension> /test/mongo/data -
Fiziksel yedekleme dosyasının sıkıştırmasını açın.
-
Fiziksel yedekleme dosyasının adında .tar.gz gibi bir uzantı varsa (örneğin hins20190412.tar.gz) dosyanın sıkıştırmasını açmak için aşağıdaki komutu çalıştırın:
cd /test/mongo/data/ && tar xzvf hins20190412.tar.gz -
Fiziksel yedekleme dosyasının adında _qp.xb gibi bir uzantı varsa (örneğin hins20190412_qp.xb) dosyanın sıkıştırmasını açmak için aşağıdaki işlemleri uygulayın:
Percona XtraBackup ve qpress araçlarını yükleyin. Daha fazla bilgi için Debian ve Ubuntu'ya Percona XtraBackup Yükleme adresini ziyaret edin.
-
Fiziksel yedekleme dosyasının sıkıştırmasını açın. Bu örnekte dosya adı hins20190412_qp.xb'dir.
# Go to the directory where the file is located. cd /test/mongo/data/ # Decompress the package. cat hins20190412_qp.xb | xbstream -x -v # Decompress the physical backup file. innobackupex --decompress --remove-original /test/mongo/data
-
Adım 3: Verileri tek düğümlü moddaki kendi yönettiğiniz MongoDB veritabanına geri yükleme
-
/test/mongo dizininde mongod.conf adlı bir yapılandırma dosyası oluşturmak için aşağıdaki komutu çalıştırın:
touch /test/mongo/mongod.conf -
Komut satırında mongod.conf dosyasını açmak için
vi /test/mongo/mongod.confgirin. Ardından düzenleme moduna girmek içinituşuna basın.Örneğin depolama altyapısına göre bir yapılandırma şablonu seçebilir ve seçilen yapılandırma şablonunu mongod.conf yapılandırma dosyasına kopyalayabilirsiniz.
NotBu dosyada tek düğümlü başlatmayı ve yetkilendirmeyi etkinleştirin.
-
WiredTiger
systemLog: destination: file path: /test/mongo/mongod.log logAppend: true security: authorization: enabled storage: dbPath: /test/mongo/data directoryPerDB: true net: port: 27017 unixDomainSocket: enabled: false processManagement: fork: true pidFilePath: /test/mongo/mongod.pidNotApsaraDB for MongoDB varsayılan olarak WiredTiger depolama altyapısını kullanır ve directoryPerDB seçeneği etkindir. Bu nedenle yukarıdaki yapılandırmada directoryPerDB seçeneği true olarak ayarlanmıştır.
-
RocksDB
systemLog: destination: file path: /test/mongo/logs/mongod.log logAppend: true security: authorization: enabled storage: dbPath: /test/mongo/data engine: rocksdb net: port: 27017 unixDomainSocket: enabled: false processManagement: fork: true pidFilePath: /test/mongo/mongod.pid
-
Düzenleme modundan çıkmak için Esc tuşuna basın ve dosyayı kaydedip çıkmak için
:wqgirin.-
MongoDB'yi başlatmak için mongod.conf yapılandırma dosyasını kullanın.
mongod -f /test/mongo/mongod.conf -
MongoDB'yi başlattıktan sonra kendi yönettiğiniz MongoDB veritabanında oturum açmak ve mongo kabuğuna gitmek için aşağıdaki komutu çalıştırın:
mongo --host 127.0.0.1 -u <username> -p <password> --authenticationDatabase admin<username>: Kendi yönettiğiniz MongoDB veritabanında oturum açmak için kullanılan hesap. Varsayılan değer root'tur.
-
<password>: Kendi yönettiğiniz MongoDB veritabanında oturum açmak için kullanılan parola.
NotParola özel karakterler içeriyorsa parolayı tek tırnak işaretleri (' ') içine almanız gerekir. Örnek: 'test123!@#' Aksi takdirde veritabanında oturum açamayabilirsiniz.
Geri yüklemenin başarılı olup olmadığını kontrol etmek için mongo kabuğunda MongoDB sunucusundaki tüm kullanılabilir veritabanlarını sorgulamak üzere
show dbskomutunu çalıştırın.Mongo kabuğundan çıkmak için mongo kabuğunda
exitkomutunu çalıştırın.
Yukarıdaki adımları tamamladıktan sonra MongoDB veritabanını tek düğümlü modda başlatabilirsiniz. Veritabanını çoğaltma kümesi modunda başlatmak için 4. Adımdaki işlemleri uygulayın.
Adım 4: Kendi yönettiğiniz MongoDB veritabanını çoğaltma kümesi modunda başlatma
Varsayılan olarak örneğin fiziksel yedekleme dosyaları onun çoğaltma kümesi yapılandırmalarını içerir. Kendi yönettiğiniz MongoDB veritabanını çoğaltma kümesi modunda başlatmak için yapılandırmaları fiziksel yedeklemelerden silmeniz gerekir. Kendi yönettiğiniz MongoDB veritabanını çoğaltma kümesi modunda başlatmak için aşağıdaki işlemleri uygulayın:
-
Komut satırında mongo kabuğunu kullanarak test kullanıcısı olarak veritabanında oturum açın:
mongo --host 127.0.0.1 -u test -p <Password of the test account> --authenticationDatabase adminNotParola özel karakterler içeriyorsa parolayı tek tırnak işaretleri (' ') içine almanız gerekir. Örnek: 'test123!@#' Aksi takdirde veritabanında oturum açamayabilirsiniz.
-
Veritabanında oturum açtıktan sonra aşağıdaki işlemleri gerçekleştirmek için örnek kodda yer alan komutları çalıştırın:
Admin veritabanında geçici bir kullanıcı oluşturun ve bu kullanıcıya local veritabanında okuma ve yazma izinleri verin.
Geçici kullanıcıya geçin ve local veritabanının orijinal çoğaltma kümesi yapılandırmasını silin.
-
Test kullanıcısına geri dönün ve geçici kullanıcıyı ile geçici izinleri silin.
NotAşağıdaki kodda
<Password of the test account>ifadesini test hesabınızın parolasıyla değiştirin.
use admin db.runCommand({ createRole: "tmprole", roles: [ { role: "test", db: "admin" } ], privileges: [ { resource: { db: 'local', collection: 'system.replset' }, actions: [ 'remove' ] } ] }) db.runCommand({ createUser: "tmpuser", pwd: "tmppwd", roles: [ 'tmprole' ] }) db.auth('tmpuser','tmppwd') use local db.system.replset.remove({}) use admin db.auth('test','<Password of the test account>') db.dropRole('tmprole') db.dropUser('tmpuser') -
MongoDB hizmetini kapatmak ve mongo kabuğundan çıkmak için aşağıdaki komutları çalıştırın:
use admin db.shutdownServer() exit -
Çoğaltma kümesinde kimlik doğrulama dosyasını oluşturun.
Veritabanını çoğaltma kümesi modunda başlatmak için tüm çoğaltma kümesi düğümlerinin birbirlerini doğrulaması amacıyla bir anahtar dosyası oluşturmanız gerekir.
-
Kimlik doğrulama dosyası dizini olarak mongo dizininde keyFile klasörünü oluşturmak ve kimlik doğrulama dosyası dizininde bir anahtar dosyası oluşturmak için aşağıdaki komutu çalıştırın:
mkdir -p /test/mongo/keyFile && touch /test/mongo/keyFile/mongodb.key -
mongodb.key dosyasını açmak için
vi /test/mongo/keyFile/mongodb.keykomutunu çalıştırın. Ardından düzenleme moduna girmek içinituşuna basın. Örnek:MongoDB Encrypting FileNotVerileri şifrelemek için kullanılan anahtarın aşağıdaki sınırlamaları vardır:
Anahtarın uzunluğu 6 ila 1.024 karakter arasında olmalıdır.
Anahtar yalnızca Base64 ile kodlanmış karakterler içerebilir.
Anahtar eşittir işaretleri (=) içeremez.
Düzenleme modundan çıkmak için Esc tuşuna basın ve dosyayı kaydedip çıkmak için
:wqgirin.-
Komut satırında kimlik doğrulama dosyasının izinlerini
400olarak değiştirmek için aşağıdaki komutu çalıştırın. Bu şekilde dosyanın içeriğini yalnızca dosyanın sahibi görüntüleyebilir.sudo chmod 400 /test/mongo/keyFile/mongodb.key
NotBu kimlik doğrulama dosyası tüm çoğaltma kümesi düğümleri için geçerlidir.
-
-
Çoğaltma kümesi için iki boş düğüm hazırlamak üzere aşağıdaki işlemleri uygulayın:
-
Diğer iki düğüm için yapılandırma dosyası olarak kullanılmak üzere mongod.conf dosyasının iki kopyasını oluşturmak için aşağıdaki komutu çalıştırın.
cp /test/mongo/mongod.conf /test/mongo/mongod1.conf && cp /test/mongo/mongod.conf /test/mongo/mongod2.conf -
Diğer iki düğüm için veri dizinleri oluşturmak için aşağıdaki komutu çalıştırın:
mkdir -p /test/mongo/data1 && mkdir -p /test/mongo/data2 -
Aşağıdaki işlemleri uygulayarak her düğümün yapılandırma dosyasını değiştirin:
-
Düğümün yapılandırma dosyasını açmak ve dosyayı aşağıdaki içeriğe göre değiştirmek için
vi /test/mongo/mongod.confkomutunu çalıştırın. Ardından yapılandırma dosyasını kaydedip çıkın.systemLog: destination: file path: /test/mongo/mongod.log logAppend: true security: authorization: enabled keyFile: /test/mongo/keyFile/mongodb.key storage: dbPath: /test/mongo/data directoryPerDB: true net: bindIp: 127.0.0.1 port: 27017 unixDomainSocket: enabled: false processManagement: fork: true pidFilePath: /test/mongo/mongod.pid replication: replSetName: "rs0" -
Düğümün yapılandırma dosyasını açmak ve dosyayı aşağıdaki içeriğe göre değiştirmek için
vi /test/mongo/mongod1.confkomutunu çalıştırın. Ardından yapılandırma dosyasını kaydedip çıkın.systemLog: destination: file path: /test/mongo/mongod1.log logAppend: true security: authorization: enabled keyFile: /test/mongo/keyFile/mongodb.key storage: dbPath: /test/mongo/data1 directoryPerDB: true net: bindIp: 127.0.0.1 port: 27018 unixDomainSocket: enabled: false processManagement: fork: true pidFilePath: /test/mongo/mongod1.pid replication: replSetName: "rs0" -
Düğümün yapılandırma dosyasını açmak ve dosyayı aşağıdaki içeriğe göre değiştirmek için
vi /test/mongo/mongod2.confkomutunu çalıştırın. Ardından yapılandırma dosyasını kaydedip çıkın.systemLog: destination: file path: /test/mongo/mongod2.log logAppend: true security: authorization: enabled keyFile: /test/mongo/keyFile/mongodb.key storage: dbPath: /test/mongo/data2 directoryPerDB: true net: bindIp: 127.0.0.1 port: 27019 unixDomainSocket: enabled: false processManagement: fork: true pidFilePath: /test/mongo/mongod2.pid replication: replSetName: "rs0"
Yapılandırma dosyalarında aşağıdaki parametreleri değiştirebilirsiniz:
path içindeki systemLog.path: Geçerli düğümde MongoDB günlük dosyalarının depolandığı yol.
dbpath: Geçerli düğümde MongoDB veri dosyalarının depolandığı yol.
pidFilePath: Geçerli düğümde MongoDB işlem kimliği (PID) dosyalarının depolandığı yol.
keyFile: Çoğaltma kümesi için kimlik doğrulama dosyasının depolandığı yol. Çoğaltma kümesindeki tüm düğümler aynı kimlik doğrulama dosyasını kullanmalıdır.
bindIp: Geçerli düğümün IP adresi. Çoğaltma kümesindeki tüm düğümler aynı sunucuda dağıtıldıysa aynı IP adresini kullanabilirler.
port: Geçerli düğümün bağlantı noktası numarası. Çoğaltma kümesindeki tüm düğümler aynı sunucuda dağıtıldıysa farklı bağlantı noktası numaraları kullanmaları gerekir.
replication: Çoğaltma kümesinin yapılandırması.
replSetName: Çoğaltma kümesinin adı.
-
-
Üç düğümü başlatmak için aşağıdaki komutu çalıştırın:
mongod -f /test/mongo/mongod.conf && mongod -f /test/mongo/mongod1.conf && mongod -f /test/mongo/mongod2.conf -
Üç düğümü başlattıktan sonra test hesabını kullanarak kendi yönettiğiniz MongoDB veritabanında oturum açın.
mongo --host 127.0.0.1 -u test -p <Password of the test account> --authenticationDatabase adminNotParola özel karakterler içeriyorsa parolayı tek tırnak işaretleri (' ') içine almanız gerekir. Örnek: 'test123!@#' Aksi takdirde veritabanında oturum açamayabilirsiniz.
-
Mongo kabuğunda önceden oluşturduğunuz düğümleri çoğaltma kümesine eklemek ve çoğaltma kümesini başlatmak için aşağıdaki komutu çalıştırın:
rs.initiate( { _id : "rs0", version : 1, members: [ { _id: 0, host: "127.0.0.1:27017" , priority : 1}, { _id: 1, host: "127.0.0.1:27018" , priority : 0}, { _id: 2, host: "127.0.0.1:27019" , priority : 0} ] })Başarılı bir başlatma işlemi aşağıdaki çıktıyı döndürür:
> rs.initiate( { ... _id : "rs0", ... version : 1, ... members: [ ... { _id: 0, host: "127.0.0.1:27017" , priority : 1}, ... { _id: 1, host: "127.0.0.1:27018" , priority : 0}, ... { _id: 2, host: "127.0.0.1:27019" , priority : 0} ... ] ... }) { "ok" : 1 } rs0:SECONDARY>NotBu adımda
rs.initiate()komutu kullanılır. Komut hakkında daha fazla bilgi için rs.initiate() adresini ziyaret edin.Komut yürütüldükten sonra eklenen iki düğüm ile birincil düğüm arasında veriler senkronize edilir. Bu işlemin süresi yedekleme dosyasının boyutuna bağlı olarak değişir. Veriler senkronize edildikten sonra kendi yönettiğiniz MongoDB veritabanı çoğaltma kümesi modunda başlatılır.
-
Çoğaltma kümesi modundaki kendi yönettiğiniz MongoDB veritabanının başlatılıp başlatılmadığını kontrol etmek için aşağıdaki işlemleri uygulayın:
Mongo kabuğundan çıkmak için
exitkomutunu çalıştırın.-
Kendi yönettiğiniz MongoDB veritabanında tekrar oturum açmak için aşağıdaki komutu çalıştırın:
mongo -u <username> -p <password> --authenticationDatabase admin<username>: Kendi yönettiğiniz MongoDB veritabanında oturum açmak için kullanılan hesap. Varsayılan değer root'tur.
-
<password>: Kendi yönettiğiniz MongoDB veritabanında oturum açmak için kullanılan parola.
NotParola özel karakterler içeriyorsa parolayı tek tırnak işaretleri (' ') içine almanız gerekir. Örnek: 'test123!@#' Aksi takdirde veritabanında oturum açamayabilirsiniz.
-
Kendi yönettiğiniz MongoDB veritabanının çoğaltma kümesi modunda başlatılıp başlatılmadığını kontrol edin. Mongo kabuğundaki komut satırının sol tarafında
<Name of the replica set>:PRIMARY>görüntüleniyorsa kendi yönettiğiniz MongoDB veritabanı çoğaltma kümesi modunda başlatılmış demektir.
mongod.confyapılandırma dosyasını belirtmeden önce kendi yönettiğiniz MongoDB veritabanını başlatmış olabilirsiniz. Bu durumda veri dizinindestorage.bsondosyası otomatik olarak oluşturulur. Böyle bir durumda storage.bson dosyasını kaldırın vemongod.confyapılandırma dosyasını belirterek kendi yönettiğiniz MongoDB veritabanını başlatın.Geçerli sistemde başka bir mongod işlemi çalışıyor olabilir. Böyle bir durumda PID'yi sorgulamak için
ps -e | grep mongodkomutunu çalıştırın ve işlemi durdurmak içinkill <PID>komutunu çalıştırın. Ardındanmongod.confyapılandırma dosyasını belirterek kendi yönettiğiniz MongoDB veritabanını başlatın.mongod.confyapılandırma dosyasında geçersiz systemLog.path günlük yolu belirtilmiş olabilir. Böyle bir durumda belirtilen yolun var olup olmadığını ve günlük dosyasının belirtilen ada sahip olup olmadığını kontrol edin. Örnek:path: /<Path of the log file>/<Name of the log file>.log.
SSS
Belirtilen
mongod.confyapılandırma dosyasını kullanarak kendi yönettiğiniz MongoDB veritabanını başlattığımda neden bir hata oluşuyor?Yaygın nedenler şunlardır:
mongod.confyapılandırma dosyasını kullanarak kendi yönettiğiniz MongoDB veritabanını çoğaltma kümesi modunda başlattığımda neden bir hata oluşuyor?Belirtilen
keyFilekimlik doğrulama dosyasının izinlerini600olarak değiştirememiş olabilirsiniz. Komut satırında izinleri değiştirmek içinsudo chmod 600 <Path of keyFile>komutunu çalıştırın.Kendi yönettiğim MongoDB veritabanını çoğaltma kümesi modunda başlattıktan sonra sistem performansı neden düşüyor?
Kendi yönettiğiniz MongoDB veritabanını çoğaltma kümesi modunda başlattıktan sonra sistem birincil düğümün verilerini diğer düğümlere otomatik olarak senkronize etmeye başlar. Bu işlem sistem performansını etkileyebilir. Veriler senkronize edildikten sonra sistem performansı normale döner.
-