MongoDB備份和還原的操作指南
MongoDB 提供的命令行實(shí)用程序mongodump
和mongorestore
創(chuàng)建備份和恢復(fù)數(shù)據(jù)的過程。
一、數(shù)據(jù)備份
mongorestore
和mongodump
實(shí)用程序可處理BSON數(shù)據(jù)轉(zhuǎn)儲,對于創(chuàng)建小型部署的備份非常有用。要實(shí)現(xiàn)彈性且無中斷的備份,請將文件系統(tǒng)快照或區(qū)塊級磁盤快照與 MongoDB Atlas 的云備份結(jié)合使用。
性能影響
由于mongodump和mongorestore是通過與正在運(yùn)行的mongod實(shí)例交互來進(jìn)行操作的,因此它們可能會影響正在運(yùn)行的數(shù)據(jù)庫的性能。這些工具不僅會為正在運(yùn)行的數(shù)據(jù)庫實(shí)例創(chuàng)建流量,還會強(qiáng)制數(shù)據(jù)庫通過內(nèi)存讀取所有數(shù)據(jù)。當(dāng) MongoDB 讀取不常使用的數(shù)據(jù)時(shí),它可能會逐出更頻繁訪問的數(shù)據(jù),從而導(dǎo)致數(shù)據(jù)庫常規(guī)工作負(fù)載的性能下降。
排除 local 數(shù)據(jù)庫
mongodump
會在其輸出中排除local
數(shù)據(jù)庫的內(nèi)容。
local數(shù)據(jù)庫:用于存儲診斷信息、復(fù)制集配置和操作日志等數(shù)據(jù),其中的集合不會被復(fù)制
基本 mongodump 操作
mongodump`實(shí)用程序通過連接到正在運(yùn)行的`mongod來備份數(shù)據(jù)。
該工具可以為整個(gè)服務(wù)器、數(shù)據(jù)庫或集合創(chuàng)建備份,也可以結(jié)合查詢來僅備份一個(gè)集合的某一部分。
備份命令
export local_tar_dir="/opt/mongodb/upload_backup/" export dump_name="backup-mongo{{ now_date |replace('-', '')}}"#顯示日期 mongodump \ -h {{ ansible_default_ipv4.address }} \ -u{{ mongo_user }} -p{{ mongo_password }} \ --authenticationDatabase admin \ -o {{ local_tar_dir }}/{{ dump_name }} \ --gzip #-o: 指定輸出目錄 #打成壓縮包后進(jìn)行上傳到對象存儲
備份命令其他參數(shù)
要限制數(shù)據(jù)庫轉(zhuǎn)儲中包含的數(shù)據(jù)量,可以指定--db
和--collection
作為mongodump
的選項(xiàng)。例如:
mongodump --collection=myCollection --db=test
二、集群還原
適用于整個(gè)集群不可用或者誤刪除了部分?jǐn)?shù)據(jù)無法找回的情況
下載備份到指定目錄
#obs華為云 sudo /usr/local/bin/obsutil ls obs://jws2-live-cn-backup-01/db-db-mongodb/2024-03-28/05/ -s | grep "_master" sudo /usr/local/bin/obsutil cp {{ first_tarball }} /tmp/ #gcp谷歌云 /bin/gsutil ls gs://{{cloud_backup_bucket}}/db-mongodb/{{now_date}}/{{now_hour}}/ /bin/gsutil cp {{ backup_file.stdout }} /tmp/
基本 mongorestore 操作
mongorestore實(shí)用程序可恢復(fù)mongodump創(chuàng)建的二進(jìn)制備份。默認(rèn)情況下, mongorestore會在dump/目錄中查找數(shù)據(jù)庫備份。
mongorestore實(shí)用程序通過直接連接到正在運(yùn)行的mongod來恢復(fù)數(shù)據(jù)。
mongorestore 可以恢復(fù)整個(gè)數(shù)據(jù)庫備份或部分的備份。
可以考慮使用mongorestore --drop選項(xiàng)從數(shù)據(jù)庫中刪除每個(gè)集合,然后再從備份恢復(fù)。
如果恢復(fù)到強(qiáng)制執(zhí)行訪問控制的實(shí)例,請同時(shí)包括--username和--authenticationDatabase 。
還原前準(zhǔn)備
需要保證副本集正常運(yùn)行,所有游戲服都停止,不會有客戶端對mongodb進(jìn)行寫操作。
登錄mongodb副本集
#登錄mongodb副本集 mongo mongodb://root:mgwh7B8H9w5dc8j0@10.156.0.4:27017,10.156.0.5:27017,10.156.0.6:27017,/admin?replicaSet=jws2-test
查找主節(jié)點(diǎn)
rs.status() #副本集配置成功后,172.16.60.205為主節(jié)點(diǎn)PRIMARY,172.16.60.206/207為副本節(jié)點(diǎn)SECONDARY。 health:1 1表明狀態(tài)是正常,0表明異常 state:1 值小的是primary節(jié)點(diǎn)、值大的是secondary節(jié)點(diǎn) #"stateStr" : "PRIMARY", (代表為主節(jié)點(diǎn))
還原命令
副本集還原和單節(jié)點(diǎn)命令相同,需要注意一點(diǎn),要保證-h參數(shù)指定的主機(jī)為副本集的主節(jié)點(diǎn)。
以下為對單個(gè)庫進(jìn)行還原,可以按照自己的需求進(jìn)行還原操作。
mongorestore \ -h 172.16.185.222:27011 \ -p mgwh7B8H9w5dc8j0 -u root1 \ --authenticationDatabase=admin \ --db=SilenceDB --drop --gzip \ /home/jms_ops_all/backup-mongo20240507/SilenceDB/
三、單節(jié)點(diǎn)還原
適用于單機(jī)點(diǎn)不可用,但是集群可用的情況。
向副本集添加成員
MongoDB 提供了兩個(gè)用于恢復(fù)副本集從節(jié)點(diǎn)成員的選項(xiàng):
- 手動將數(shù)據(jù)庫文件復(fù)制到每個(gè)數(shù)據(jù)目錄。
- 允許初始同步以自動分發(fā)數(shù)據(jù)。
具體步驟
停止數(shù)據(jù)異常的成員節(jié)點(diǎn)
sudo supervisorctl stop mongodb
清理數(shù)據(jù)異常的成員節(jié)點(diǎn)的數(shù)據(jù)目錄
mv ./mongodata ./mongodata_bak mkdir ./mongodata
情況一:數(shù)據(jù)量不大,直接啟動即可,初始同步會將數(shù)據(jù)從主成員復(fù)制到新成員。
sudo supervisorctl start mongodb
情況二:數(shù)據(jù)量大,
將主成員的數(shù)據(jù)目錄復(fù)制到新的輔助成員,再啟動即可。
以上就是MongoDB備份和還原的操作指南的詳細(xì)內(nèi)容,更多關(guān)于MongoDB備份還原的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python實(shí)現(xiàn)爬蟲數(shù)據(jù)存到 MongoDB
本文給大家分享的是使用python實(shí)現(xiàn)將爬蟲爬到的數(shù)據(jù)存儲到mongoDB數(shù)據(jù)庫中的實(shí)例代碼,有需要的小伙伴可以參考下2016-09-09MongoDB搭建高可用集群的完整步驟(3個(gè)分片+3個(gè)副本)
這篇文章主要給大家介紹了關(guān)于MongoDB搭建高可用集群(3個(gè)分片+3個(gè)副本)的完整步驟,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用MongoDB具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08Mongodb在UPDATE操作中使用$push向數(shù)組中插入數(shù)據(jù)的方法
在update操作中,使用$push操作符向數(shù)組中插入新的元素,按照相應(yīng)的語法,使用$push操作符,下面通過本文給大家分享Mongodb在UPDATE操作中使用$push向數(shù)組中插入數(shù)據(jù)的方法,感興趣的朋友一起看看吧2024-06-06mongodb在建立一個(gè)T級別的數(shù)據(jù)庫時(shí),進(jìn)程掛掉的解決方法
這篇文章主要介紹了mongodb在建立一個(gè)T級別的數(shù)據(jù)庫時(shí),進(jìn)程掛掉,需要的朋友可以參考下2017-03-03MongoDB快速入門筆記(三)之MongoDB插入文檔操作
這篇文章主要介紹了MongoDB快速入門筆記(三)之MongoDB插入文檔操作 的相關(guān)資料,非常不錯具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06