日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
為MongoDB服務(wù)器配置備份腳本

有效管理數(shù)據(jù)、服務(wù)和信息對一個公司的成功至關(guān)重要。在數(shù)據(jù)日益增長的世界里,選擇正確的數(shù)據(jù)管理解決方案比以往更加重要。MongoDB 是一個新興的開源 NoSQL 數(shù)據(jù)庫,可用于海量數(shù)據(jù)管理。它提供了高性能、高可用性和易于擴(kuò)展的特性。數(shù)據(jù)管理的一個關(guān)鍵要素是定期執(zhí)行備份,預(yù)防數(shù)據(jù)丟失,而且不應(yīng)手動完成此項工作??墒褂枚喾N不同方法在 MongoDB 中執(zhí)行備份,但本文只展示了如何使用 mongodump 和 mongorestore 配置和運行備份腳本。

創(chuàng)新互聯(lián)主營金灣網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app開發(fā)定制,金灣h5重慶小程序開發(fā)搭建,金灣網(wǎng)站營銷推廣歡迎金灣等地區(qū)企業(yè)咨詢

設(shè)置 MongoDB 實例

執(zhí)行以下步驟,設(shè)計可通過 cron 作業(yè)自動運行的 MongoDB 備份腳本。可根據(jù)業(yè)務(wù)需求來自定義備份腳本。

備注:要跟隨本教程中的步驟進(jìn)行操作,請創(chuàng)建一個單獨的用戶(例如名為 mongo 的用戶),在 MongoDB 中執(zhí)行管理操作。

1、從 MongoDB Download Center 安裝 MongoDB。MongoDB 二進(jìn)制文件位于 /opt/mongodb/mongodb/bin/ 目錄中。安裝 MongoDB 時使用 root 用戶憑證。

2、以 root 用戶身份進(jìn)行登錄,然后創(chuàng)建一個組和用戶: 

 
 
 
  1. # groupadd mongogrp 
  2. # vi /etc/group 
  3. mongogrp:x:1005: 

3、將用戶 mongo 添加到剛創(chuàng)建的組 mongogrp 中:

 
 
 
  1. # useradd mongo -d /home/mongo -f -1 -g mongogrp -m 

4、驗證是否已創(chuàng)建該用戶: 

 
 
 
  1. # cd /home 
  2. # ls -l 
  3. drwxr-xr-x 2 mongo mongogrp 4096 Oct 18 07:25 mongo 
  4. vi /etc/passwd 
  5. mongo:x:1005:1005::/home/mongo: 

5、設(shè)置用戶 mongo 設(shè)置密碼:

 
 
 
  1. # passwd mongo 

調(diào)用 MongoDB shell

1、打開一個新會話并以用戶 mongo 登錄:

 
 
 
  1. $ sudo su – mongo 

2、找到 MongoDB 安裝的 bin 目錄: 

 
 
 
  1. $ cd /opt/mongodb/mongodb/bin/ 
  2. $ ls 
  3. bsondump mongo mongod mongodump mongoexport mongofiles mongoimport 
  4. mongooplog mongoperf mongorestore mongos mongosniff mongostat mongotop 

3、要運行這些實用程序,bin 目錄必須對用戶 mongo 具有適當(dāng)?shù)脑L問權(quán) 。使用 root 用戶憑證,并為 mongo 用戶提供對 bin 目錄的適當(dāng)訪問權(quán)。

4、驗證第 2 步中所示的實用程序是否位于 bin 目錄下。

5、調(diào)用 MongoDB shell 時有兩個選項:一個使用 SSL,一個不使用 SSL。下面給出了兩個選項的使用說明。

a、要調(diào)用 MongoDB shell,請使用以下選項運行 mongo 命令:

 
 
 
  1. $ ./mongo - - host pre-mongo01.ibmcloud.com - - port 27017 

如果不使用 SSL 調(diào)用 MongoDB shell,請使用以下選項運行 mongo

b、命令: 

 
 
 
  1. $ ./mongo --ssl --sslCAFile ../cert/mongo.server.trust-certs.pem--sslPEMKeyPassword 
  2. password123 pre-mongo01.ibmcloud.com:27017 

其中: 

 
 
 
  1. Certification file :/opt/mongodb/mongodb/cert/mongo.server.trust-certs.pem 
  2. password123 :sslPEMKeyPassword 
  3. port no :27017 
  4. Hostname :pre-mongo01.ibmcloud.com 

備注:在這里,您將獲得 MongoDB shell V3.2。現(xiàn)在可以執(zhí)行各種操作了。

本文使用 SSL 執(zhí)行 MongoDB 命令和實用程序。 

 
 
 
  1. > show dbs 
  2. testdb1 0.800GB 
  3. local 0.000GB 
  4. mydb 0.300GB 

MongoDB 備份和還原功能

要備份 MongoDB 數(shù)據(jù)庫,請使用 mongodump 實用程序,它位于 bin 目錄中。這會將所有數(shù)據(jù)都備份到默認(rèn)位置 /bin/dump 上的 dump 文件夾中。MongoDB 使用默認(rèn)端口 27017??梢允褂脤嵱贸绦?mongodump 執(zhí)行熱(在線)和冷(離線)備份。

離線 MongoDB 備份

MongoDB 服務(wù)器有一個主要的守護(hù)進(jìn)程,名為 mongod 。 Mongod 管理數(shù)據(jù)訪問、數(shù)據(jù)請求和后臺操作。要執(zhí)行離線備份,首先要停止 mongod 服務(wù),這會停止 MongoDB 實例。然后,執(zhí)行備份并啟動 MongoDB 實例。

要創(chuàng)建離線 MongoDB 備份,請執(zhí)行以下操作:

創(chuàng)建一個備份目錄?;?MongoDB 數(shù)據(jù)庫的大小,在各個備份位置創(chuàng)建備份目錄。在這里,將備份目錄創(chuàng)建為 /mongo_data/backup: 

 
 
 
  1. # mkdir /mongo_data/backup  
  2. # ls –l 

2、將所有者更改為用戶 mongo : 

 
 
 
  1. # chown -R mongo:mongogrp /mongo_data/backup/  
  2. # ls –l 

3、停止 mongod 實例:

 
 
 
  1. service mongod stop 

4、執(zhí)行離線備份。首先,以 mongo 用戶身份進(jìn)行登錄并找到 bin 目錄: 

 
 
 
  1. $ pwd 
  2. /opt/mongodb/mongodb/bin 
  3. $./mongodump --ssl --sslCAFile ../cert/mongo.server.trust-certs.pem 
  4. --sslPEMKeyPassword password123 --host pre-mongo01.ibmcloud.com:27017 --out /mongo_data/backup/ 

5、啟動 mongod 實例,方法是鍵入 service mongod start 。

在線 MongoDB 備份

要執(zhí)行在線備份,請連續(xù)運行 mongodump 命令,然后重新啟動 mongod 實例??梢允褂没虿皇褂?SSL 來運行此命令。兩個命令都在下方給出。

要使用 SSL 執(zhí)行 mongodump 命令,該命令看起來類似于: 

 
 
 
  1. $./mongodump --ssl --sslCAFile ../cert/mongo.server.trust-certs.pem 
  2. --sslPEMKeyPassword password123 --host pre-mongo01.ibmcloud.com:27017 --out /mongo_data/backup/ 

要不使用 SSL 執(zhí)行 mongodump 命令,該命令看起來類似于:

 
 
 
  1. $ ./mongodump -- host pre-mongo01.ibmcloud.com --port 27017 --out /mongo_data/backup/ 

使用 mongodump 執(zhí)行小型分片集群備份

如果分片集群包含一個小數(shù)據(jù)集,可以使用 mongodump 連接到 mongos 。

在 MongoDB 分片集群中, mongodump 是處理來自應(yīng)用層的查詢的路由服務(wù)。為了執(zhí)行該操作,它會確定此數(shù)據(jù)在分片集群中的位置。

如果基礎(chǔ)架構(gòu)可以在合理的時間量內(nèi)執(zhí)行完整備份,而且一個存儲系統(tǒng)可以保存整個 MongoDB 數(shù)據(jù)集,那么可以創(chuàng)建 MongoDB 集群備份。默認(rèn)情況下, mongodump 向非主要節(jié)點發(fā)出其查詢。

要對分片集群執(zhí)行備份,請使用 mongodump ,如以下命令所示:

 
 
 
  1. $ ./mongodump -- host pre-mongo01.ibmcloud.com --port 27017 

備注:在 mongodump 捕獲輸出期間,應(yīng)用程序可以繼續(xù)修改數(shù)據(jù)。對于副本集, mongodump 提供了 --oplog 選項,以便包含在執(zhí)行 mongodump 操作期間生成的輸出 oplog 條目。這允許相應(yīng)的 mongorestore 操作重放捕獲到的 oplog。要還原使用 --oplog 創(chuàng)建的備份,請使用 mongorestore 和 --oplogReplay 選項。但是,對于副本集,可以考慮 MongoDB Cloud Manager 或 Ops Manager。

恢復(fù)場景

如果知道故障是如何發(fā)生的和如何從故障中恢復(fù),那么可以更好地規(guī)劃和避免故障場景。以下各節(jié)將模擬不同類型的故障,并給出在您的環(huán)境中出現(xiàn)其中一種故障時可以執(zhí)行的一系列步驟。

場景 1.整個數(shù)據(jù)庫意外丟棄或受損壞

人為錯誤或硬件故障可能損害或損壞整個數(shù)據(jù)庫。如果出現(xiàn)這種情況,可以應(yīng)用 mongodump 的***一次完整備份恢復(fù)整個數(shù)據(jù)庫,并使用 mongorestore 實用程序還原它。

在此場景中,我們假設(shè)數(shù)據(jù)庫為 testdb1,其中的集合(比如 users 和 students)包含一些記錄,如下所示。

第 1 步.驗證數(shù)據(jù)庫和集合

a、以 mongo 用戶身份進(jìn)行登錄:

 
 
 
  1. $ sudo su – mongo 

b、找到 bin 目錄:

 
 
 
  1. $ cd /opt/mongodb/mongodb/bin/ 

c、調(diào)用 MongoDB shell:

 
 
 
  1. $ ./mongo --ssl --sslCAFile ../cert/mongo.server.trust-certs.pem --sslPEMKeyPassword password123 pre-mongo01.ibmcloud.com:27017 

d、驗證數(shù)據(jù)庫和集合: 

 
 
 
  1. > show dbs 
  2.  testdb1 0.800GB 
  3. local 0.000GB 
  4. mydb 0.300GB 
  5. > use testdb1 
  6. switched to db testdb1 
  7. > show collections 
  8. student 
  9. users 
  10. > db.student.find({},{_id:0}) 
  11. { "rollno" : 1, "name" : "amol", "subject" : "english", "marks" : 90 } 
  12. { "rollno" : 2, "name" : "rachna", "subject" : "english", "marks" : 85 
  13.     } 
  14. { "rollno" : 3, "name" : "Bob", "subject" : "english", "marks" : 75 } 
  15. > db.users.find({},{_id:0}) 
  16. { "name" : "Amol", "age" : 39 } 
  17. { "name" : "Bob", "age" : 30 } 
  18. { "name" : "Rachna", "age" : 36 } 
  19. { "name" : "Aadya", "age" : 3 } 

第 2 步.備份整個數(shù)據(jù)庫

使用以下代碼備份整個數(shù)據(jù)庫: 

 
 
 
  1. $./mongodump --ssl --sslCAFile ../cert/mongo.server.trust-certs.pem --sslPEMKeyPassword password123 --host pre-mongo01.ibmcloud.com:27017 –db testdb1 --out /mongo_data/backup/ 
  2.  
  3. 2017-01-24T04:14:07.252-0500 writing testdb1.student to 
  4. 2017-01-24T04:14:07.253-0500 writing testdb1.users to 
  5. 2017-01-24T04:14:07.254-0500 done dumping testdb1.student (3 documents) 
  6. 2017-01-24T04:14:07.254-0500 done dumping testdb1.users (3 documents) 

第 3 步.模擬故障

要模擬故障場景,需要完全丟棄數(shù)據(jù)庫。

a、連接到數(shù)據(jù)庫: 

 
 
 
  1. > use testdb1 
  2. switched to db mydb 

b、驗證集合: 

 
 
 
  1. > show collections 
  2. student 
  3. users 

c、驗證當(dāng)前數(shù)據(jù)庫: 

 
 
 
  1. > db 
  2. testdb1 

d、丟棄數(shù)據(jù)庫: 

 
 
 
  1. > db.dropDatabase() 
  2. { "dropped" : "testdb1", "ok" : 1 } 

第 4 步.還原數(shù)據(jù)庫 testdb1

使用實用程序 mongorestore 還原備份鏡像,如下所示。在此示例中,還原的***備份鏡像位于備份位置 /mongo_data/backup/testdb1 。 

 
 
 
  1. $ ./mongorestore --ssl --sslCAFile 
  2. ../cert/mongo.server.trust-certs.pem --sslPEMKeyPassword password123 --host 
  3. pre-mongo01.ibmcloud.com:27017 --db testdb1 /mongo_data/backup/testdb1 

第 5 步.驗證數(shù)據(jù)庫和集合

要驗證數(shù)據(jù)庫是否已還原,請連接到數(shù)據(jù)庫并查詢集合: 

 
 
 
  1. > show dbs 
  2. testdb1 0.800GB 
  3. local 0.000GB 
  4. mydb 0.300GB 
  5. > use testdb1 
  6. switched to db testdb1 
  7. > show collections 
  8. student 
  9. users 
  10. > db.student.find({},{_id:0}) 
  11. > db.users.find({},{_id:0}) 

場景 2.意外丟棄某個集合

有時,尤其是在數(shù)據(jù)庫中有成千上萬個集合時,可能會意外丟棄某個集合。要恢復(fù)意外丟棄的集合,需要使用備份位置上該集合(例如 collection.name.bson )的***備份。在此場景中,我將介紹如何使用集合 student 執(zhí)行這些功能,該集合遭到丟棄并使用 mongorestore 實用程序還原它。

第 1 步.驗證集合

使用以下代碼驗證集合: 

 
 
 
  1. > use testdb1 
  2. switched to db testdb1 
  3. > show collections 
  4. student 
  5. users 
  6. > db.student.find({},{_id:0}) 
  7. { "rollno" : 1, "name" : "amol", "subject" : "english", "marks" : 90 } 
  8. { "rollno" : 2, "name" : "rachna", "subject" : "english", "marks" : 85 
  9. { "rollno" : 3, "name" : "Bob", "subject" : "english", "marks" : 75 } 

第 2 步.備份集合

僅在集合級別上執(zhí)行備份: 

 
 
 
  1. $./mongodump --ssl --sslCAFile ../cert/mongo.server.trust-certs.pem--sslPEMKeyPassword password123 
  2. --host pre-mongo01.ibmcloud.com:27017 –db testdb1 --collection student --out /mongo_data/backup 

備注:確保在備份位置(例如 mongo_data/backup)上創(chuàng)建了一個文件 student.bson。

第 3 步.模擬故障

要模擬此故障,可完全丟棄該集合。

a、連接到數(shù)據(jù)庫: 

 
 
 
  1. > use testdb1  
  2. switched to db testdb1 

b、丟棄集合: 

 
 
 
  1. > db.student.drop()  
  2. true 

c、驗證內(nèi)容是否已丟棄:

 
 
 
  1. > db.student.find({},{name:1,age:1,_id:0}) 

第 4 步.還原集合 

 
 
 
  1. $./mongorestore --ssl --sslCAFile 
  2. ../cert/mongo.server.trust-certs.pem --sslPEMKeyPassword 
  3. password123 --host pre-mongo01.ibmcloud.com:27017 --db mydb --collection student 
  4. /mongo_data/backup/testdb1/student.bson 

備注:可以使用 mongodump 執(zhí)行數(shù)據(jù)庫級備份,如有需要,可以僅從備份目錄還原所需的集合。

第 5 步.驗證集合

要驗證集合是否已還原,請連接到數(shù)據(jù)庫并查詢該集合: 

 
 
 
  1. > use testdb1 
  2. switched to db testdb1 
  3.  
  4. > show collections 
  5. student 
  6. users 
  7.  
  8. > db.student.find({},{_id:0}) 
  9. { "rollno" : 1, "name" : "amol", "subject" : "english", "marks" : 90 } 
  10. { "rollno" : 2, "name" : "rachna", "subject" : "english", "marks" : 85 
  11. { "rollno" : 3, "name" : "Bob", "subject" : "english", "marks" : 75 } 

使用一個 crob 作業(yè)創(chuàng)建和運行備份腳本

要根據(jù)業(yè)務(wù)需求設(shè)置備份策略,需要設(shè)置自定義的備份腳本: run_backup.sh 。還需要設(shè)置一個 cron 作業(yè)來運行此備份。

創(chuàng)建備份腳本

下面的樣本備份腳本 run_backup.sh 基于以下條件。

  • 該腳本首先從備份位置刪除超過 30 天的備份鏡像。它在備份位置對所有數(shù)據(jù)庫執(zhí)行每日備份。
  • 然后該腳本向日志文件 backup.log 寫入注釋,表明備份操作刪除了哪些內(nèi)容以及執(zhí)行備份的時間。默認(rèn)情況下, mongodump 不會捕獲本地數(shù)據(jù)庫的內(nèi)容。如有需要,應(yīng)該單獨添加它。要使用應(yīng)用程序名稱唯一地標(biāo)識各個數(shù)據(jù)庫備份,必須在備份腳本中定義一些參數(shù)。下一節(jié)將展示此操作。

創(chuàng)建一個備份目錄

以 root 用戶身份進(jìn)行登錄:

 
 
 
  1. # mkdir /mongo_data/backup 

將所有者更改為 mongo 用戶:

 
 
 
  1. # chown -R mongo:mongogrp /mongo_data/backup 

以 mongo 用戶身份進(jìn)行登錄: 

 
 
 
  1. mongo@pre-mongo01 
  2. $pwd 
  3. /mongo_data/backup 

創(chuàng)建備份腳本:

 
 
 
  1. mongo@pre-mongo01:/mongo_data/backup$ vi run_backup.sh 

以下代碼給出了備份腳本的樣本內(nèi)容: 

 
 
 
  1. #/bin/bash 
  2. cd /opt/mongodb/mongodb/bin/ 
  3. echo `date` >>/mongo_data/backup/backup.log 
  4. APP_NAME="app1" 
  5. MONGO_HOST="pre-mongo01.ibmcloud.com" 
  6. MONGO_PORT="27017" 
  7. TIMESTAMP=`date +%F-%H%M` 
  8. MONGODUMP_PATH="/opt/mongodb/mongodb/bin/mongodump" 
  9. BACKUPS_DIR="/mongo_data/backup/$APP_NAME-$TIMESTAMP" 
  10. BACKUP_NAME="/mongo_data/backup/$APP_NAME-$TIMESTAMP" 
  11. mkdir -p $BACKUPS_DIR 
  12. cd /opt/mongodb/mongodb/bin/ 
  13. #Delete all backups older than 30 days from /mongo_data/backup 
  14. echo "Deleting following backup files older than 30 days:" >> 
  15.     /mongo_data/backup/backup.log 
  16. find /mongo_data/backup/ -type d -name 'app1-*' -mtime +30 >> 
  17.     /mongo_data/backup/backup.log 
  18. find /mongo_data/backup/ -type d -name 'app1-*' -mtime +30 -exec rm -rf {} 
  19.     + 
  20. #Run the daily backup 'local' database only. 
  21. for databaseName in local 
  22. do 
  23. echo "Starting daily backup of $databaseName ...." >> 
  24.     /mongo_data/backup/backup.log 
  25. ./mongodump --ssl --sslCAFile ../cert/mongo.server.trust-certs.pem 
  26.     --sslPEMKeyPassword password123 --host pre-mongo01.ibmcloud.com:27017 --db 
  27.     $databaseName >>/mongo_data/backup/backup.log 
  28. #Run the daily backup of remaining databases. 
  29. echo "Starting daily backup of all databases...." >> 
  30.     /mongo_data/backup/backup.log 
  31. ./mongodump --ssl --sslCAFile ../cert/mongo.server.trust-certs.pem 
  32.     --sslPEMKeyPassword password123 --host pre-mongo01.ibmcloud.com:27017 
  33.     >>/mongo_data/backup/backup.log 
  34. if [ $? != 0 ]; then 
  35. echo "Failed to make backup of $databaseName on `date +%F_%T`"|mailx -s 
  36.     "MongoDB backup failed" amolbarsagade@in.ibm.com 
  37. fi 
  38. done 
  39. mv /opt/mongodb/mongodb/bin/dump $BACKUP_NAME 
  40. echo `date` >> /mongo_data/backup/backup.log 
  41. echo "End of backup run" >> /mongo_data/backup/backup.log 
  42. echo "----------------------------------" >> 
  43.     /mongo_data/backup/backup.log 

授予權(quán)限

保存該文件并向它授予 755 權(quán)限:

 
 
 
  1. mongo@pre-mongo01:/mongo_data/backup$ chmod 755 run_backup.sh 

創(chuàng)建一個 cron 作業(yè)來運行備份腳本

在 mongo_data/backup 位置創(chuàng)建一個名為 mycron.txt 的新 cron 作業(yè),并根據(jù)備份策略來調(diào)度它。

以 mongo 用戶身份進(jìn)行登錄: 

 
 
 
  1. mongo@pre-mongo01 
  2. :/mongo_data/backup$ pwd 
  3. /mongo_data/backup 

檢查 mongo 用戶的現(xiàn)有 cron 作業(yè): 

 
 
 
  1. mongo@pre-mongo01:/mongo_data/backup$ crontab -l 
  2. no crontab for mongo 

創(chuàng)建一個新 cron 作業(yè):

 
 
 
  1. mongo@pre-mongo01:/mongo_data/backup$ vi mycron.txt 

根據(jù)備份策略添加運行此 crob 作業(yè)的備份時間表。例如:

 
 
 
  1. 30 02 * * * /mongo_data/backup/run_backup.sh >> /mongo_data/backup/run_backup.sh.out 

設(shè)置 cron 作業(yè)并驗證它: 

 
 
 
  1. mongo@pre-mongo01:/mongo_data/backup$ crontab mycron.txt 
  2. mongo@pre-mongo01:/mongo_data/backup$ crontab -l 
  3. 30 02 * * * /mongo_data/backup/run_backup.sh >> 
  4. /mongo_data/backup/run_backup.sh.out 

結(jié)束語

您已為 MongoDB 數(shù)據(jù)庫服務(wù)器配置并運行了備份腳本,并更好地了解了如何使用 mongodump 和 mongorestore 實用程序執(zhí)行備份和還原。您使用一個 cron 作業(yè)調(diào)度并運行了備份腳本??梢允褂迷搨浞菽_本來調(diào)度、維護(hù)和管理 MongoDB 數(shù)據(jù)庫服務(wù)器的備份。


分享題目:為MongoDB服務(wù)器配置備份腳本
URL標(biāo)題:http://www.5511xx.com/article/ccddeii.html