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