MongoDB 備份與還原 mongodump、mongorestore
MongoDB 備份與還原 mongodump、mongorestore
目錄
MongoDB 備份與還原
一、 MongoDB 備份
MongoDB 備份的幾種方式:
- mongodump
- 系統快照(這裡不做詳細介紹,具體內容見官網:Back Up with Filesystem Snapshots)
- cp 或者 rsync
1、mongodump
mongodump 是 MongoDB 官方提供的備份工具,它可以從 MongoDB 資料庫讀取資料,並生成 BSON 檔案,mongodump 適合用於備份和恢復資料量較小的 MongoDB 資料庫,不適用於大資料量備份。
預設情況下 mongodump 不獲取 local 資料庫裡面的內容。
mongodump 僅備份資料庫中的文件,不備份索引,所以我們還原後,需要重新生成索引。
mongodump 備份過程中會對 mongod 服務的效能產生影響,我們建議在業務低峰期進行操作。如果我們備份的資料,大於系統記憶體,我們備份的時候容易出現錯誤。
在執行 mongodump 的時候,mongod 服務還是可以提供服務的,可以進行修改資料,如果我們在備份的時候加上引數 --oplog 的話,那麼 oplog 是會記錄這一次操作的,如果我們想在 restore 的時候也有日誌記錄,我們可以使用 mongorestore --oplogReplay 進行恢復
1.1、mongodump常用命令和引數
官方文件:mongodump
mongodump 預設輸出的目錄名為 dump ,如果輸出路徑包含 dump 目錄,會直接覆蓋的。 預設備份是沒有壓縮的。
引數:
--host <hostname><:port>, -h <hostname><:port> # 指定備份的主機ip和埠號,預設值localhost:27017
--port # 指定埠號 預設27017
--username <username>, -u <username> # 指定使用者名稱
--password <password>, -p <password> # 指定密碼
--authenticationDatabase <dbname> # 指定認證的資料庫
--authenticationMechanism <name> # 指定認證的演算法 ,預設值 SCRAM-SHA-1
--db <database>, -d <database> # 指定備份的資料庫,未指定的話,備份所有的資料庫,但不包含local庫
--collection <collection>, -c <collection> # 指定備份的集合,未指定則備份指定庫中的所有集合。
--query <json>, -q <json> # 指定 json 作為查詢條件。來備份我們過濾後的資料。
--queryFile <path> # 指定 json 文件路徑,以該文件的內容作為查詢條件,來備份我們過濾後的資料。
--quit # 通過抑制 MongoDB的複製,連線等活動,來實現備份。
--gzip # 開啟壓縮,3.2版本後可以使用,輸出為檔案的話會帶有後綴.gz
--out <path>, -o <path> # 輸出的目錄路徑
--repir # 修復資料時使用 下面有詳細介紹
--oplog # mongodump 會將 mongodump 執行期間的 oplog 日誌 輸出到檔案 oplog.bson,這就意味著從備份開始到備份結束的資料操作我們都可以記錄下來。
--archive <file> # 輸出到單個存檔檔案或者是直接輸出。
--dumpDbUsersAndRoles # 只有在 使用 --db 時才適用,備份資料庫的包含的使用者和角色。
--excludeCollection string # 排除指定的集合,如果要排除多個,使用多個--excludeCollection
--numParallelCollections int, -j int # 並行匯出的集合數,預設為4
--ssl # 指定 TLS/SSL 協議
--sslCAFile filename # 指定認證檔名
--sslPEMKeyFile <filename>
--sslPEMKeyPassword <value>
--sslCRLFile <filename>
--sslAllowInvalidCertificates
--sslAllowInvalidHostnames
--sslFIPSMode
示例:
-
排除指定的集合
mongodump --db test --excludeCollection=users --excludeCollection=salaries
-
指定ip,埠,使用者名稱,認證,壓縮,輸出目錄
mongodump --host mongodb1.example.net --port 37017 --username user --password "pass" --gzip --out /opt/backup/mongodump-2019-04-17
1.2 、注意
當我們的刪除一個集合的資料,這個集合有10000條資料,那麼在 Oplog 裡面也是會有 10000條刪除記錄。
這樣的操作就會導致 Oplog 裡面的之前的操作記錄會被快速覆蓋。
所以我們在備份的時候,需要注意 備份的間隔時間 和 Oplog 記錄被覆蓋的時間(也就是 Oplog 記錄了多長時間的日誌 )。要後者大於前者。
示例:
我們的備份計劃是,每天備份一次資料,Oplog 記錄的保持時間要大於1天。
Oplog 的開啟是需要開啟副本集才能開啟的,所以以上備份策略是針對副本集。
2 、cp 或者rsync
我們可以直接複製資料檔案,但是我們必須在複製檔案前停止對 MongoDB 的操作,否則我們複製的檔案是無效的。
3、單節點意外關閉後,如何恢復資料
注意以下操作是針對單節點。
在意外關閉節點後,我們進行重新節點,發現有如下的日誌錯誤:
2018-10-24T18:05:18.248-0400 W STORAGE [initandlisten] Detected unclean shutdown - mongod.lock is not empty.
...
2018-10-24T17:24:53.122-0400 E STORAGE [initandlisten] Failed to get the cursor for uri: table:collection-2-6854866147293273505
2018-10-24T17:24:53.122-0400 E STORAGE [initandlisten] This may be due to missing data files. ...
...
***aborting after fassert() failure
並且在 資料儲存路徑中有一個 mongod.lock 檔案。
我們可以使用 mongod --repair
來恢復資料。
在MongoDB中4.0.3,對 WiredTiger 引擎,使用該命令會進行以下操作
- 重建所有索引
- 丟棄損壞的資料
- 為殘缺的元資料建立存根檔案。
對於MMAPv1 引擎
- 重建所有索引
- 丟棄損壞的資料
資料恢復流程:
-
先備份現有的資料
我們可以用 cp 命令將現有的資料的整個目錄的所有檔案都備份一份。
-
使用 mongod --repair
# 針對 所有資料庫 mongod --repair # 針對 單個數據庫 mongod --dbpath /opt/mongodb/data/djx --repair
一般情況下,你不應該手動刪除該
mongod.lock
檔案。而是,使用上述過程來恢復資料庫。在嚴峻的情況下,您可以刪除檔案,使用可能損壞的檔案啟動資料庫,並嘗試從資料庫中恢復資料,但這存在風險。
4、檢視備份資料
我們部分的資料都是二進位制的,我們直接檢視是檢視不到的,那麼我們可以通過工具 bsondump(安裝 MongoDB 自帶了) 來進行檢視。
[root@djx uu_dev]# bsondump order_detail.bson
2019-04-17T16:14:51.430+0800 549 objects found
{"_id":{"$oid":"5cae98d0f23d932dscdfc2ff"}}
{"_id":{"$oid":"5cae98d0f23d932dscdfca00"}}
{"_id":{"$oid":"5cae98d1f23d932dscdfca31"}}
{"_id":{"$oid":"5cae98d1f23d932dscdfca32"}}
二、MongoDB 還原
1、mongorestore特點
mongorestore
可以建立新的資料庫或將資料新增到現有的資料庫,但是mongorestore
僅僅執行insert
操作,不執行update
操作。這就意味著如果將文件還原到現有的資料庫,現有的資料庫中的文件的_id
的值和要還原的文件中的_id
值是一樣的,是不會將資料庫原有的值覆蓋的。- 重建索引,
mongorestore
會重建索引。 mongorestore
不恢復system.profile
的資料
2、mongorestore 常用引數
--help # 檢視幫助
--quiet # 通過抑制 MongoDB的複製,連線等活動,來實現資料恢復。
--host <hostname><:port>, -h <hostname><:port> # 指定恢復的主機ip和埠號,預設值localhost:27017
--port # 指定埠號 預設27017
--username <username>, -u <username> # 指定使用者名稱
--password <password>, -p <password> # 指定密碼
--authenticationDatabase <dbname> # 指定認證的資料庫
--authenticationMechanism <name> # 指定認證的演算法 ,預設值 SCRAM-SHA-1
--objcheck # 開啟驗證,驗證還原操作,確保沒有無效的文件插入資料庫。會有較小的效能影響
--oplogReplay # 恢復備份資料並將 mongodump 執行期間的操作(記錄在匯出的日誌)恢復。
--oplogLimit # 指定恢復
--oplogFile # 指定 Oplog 路徑
--keepIndexVersion # 阻止mongorestore在還原過程中將索引升級到最新版本。
--restoreDbUsersAndRoles # 還原指定的資料庫使用者和角色。
--maintainInsertionOrder # 預設值為False,如果為 True,mongorestore 將按照輸入源的文件順序插入,否則是 隨機執行插入。
--numParallelCollections int, -j int # 指定並行恢復的集合數。
--numInsertionWorkersPerCollection int # 預設值為 1,指定每個集合恢復的併發數,大資料量匯入增加該值可提高 恢復速度。
--gzip # 從壓縮文件中 恢復。
--archive # 從歸檔檔案中恢復。
--dir # 指定還原資料儲存目錄。
3、還原示例
mongorestore --collection people --db accounts dump/
mongorestore --host mongodb1.example.net --port 37017 --username user --password "pass" /opt/backup/mongodump-2011-10-24
mongorestore --gzip --archive=test.20150715.gz --db test
mongorestore --archive=test.20150715.archive --db test
作者:理想三旬
出處:https://www.cnblogs.com/operationhome/
如果覺得文章寫得不錯,或者幫助到您了,請點個贊,加個關注哦。運維學習交流群:544692191
本文版權歸作者所有,歡迎轉載,如果文章有寫的不足的地方,或者是寫得錯誤的地方,請你一定要指出,因為這樣不光是對我寫文章的一種促進,也是一份對後面看此文章的人的責任。謝謝。
分類:
MongoDB 備份與還原 mongodump、mongorestore
目錄
MongoDB 備份與還原
備份 rest body ack 文件 linux log oba dir linux系統下的備份還原兩條命令
1、./mongodump --host 127.0.0.1 --port 10001 -d 需備份的數據庫名 -o /home/mongodb/backup/m 一 需求描述
我們知道資料是公司的重要資產,業務的系統化、資訊化就是數字化。資料高效的儲存與查詢是系統完善和優化的方向,而資料庫的穩定性、可靠性是實現的基礎。高可用和RPO(RecoveryPointObjective,復原點目標,指能容忍的最大資料丟失量)是衡量一個數據庫優劣的重要指標。作為一個DBA,搭 註釋 命令 數據庫備份 event sin 提交 mas 數據庫 inno 以下都以在linux操作系統上的mysql為例
mysqldump備份
mysqldump實際就是將數據庫中的數據轉化為建庫、建表和插入記錄的sql語句
1.備份一個數據庫 [或其中幾個表],不指定 一 研究背景需求
目前作者所在公司的MongoDB資料庫是每天凌晨做一次全庫完整備份,但資料庫出現故障時,只能保證恢復到全備時間點,比如,00:30 做的完整備份,而出現故障是下午18:00,那麼現有的備份機制只可以恢復到00:30,即丟失00:30 – 18:00 的操作資料。
此外,我們現在的副本集沒有
一 研究背景需求
目前作者所在公司的MongoDB資料庫是每天凌晨做一次全庫完整備份,但資料庫出現故障時,只能保證恢復到全備時間點,比如,00:30 做的完整備份,而出現故障是下午18:00,那麼現有的備份機制只可以恢復到00:30,即丟失00:30 – 18:00 的操 一 需求描述
我們知道資料是公司的重要資產,業務的系統化、資訊化就是數字化。資料高效的儲存與查詢是系統完善和優化的方向,而資料庫的穩定性、可靠性是實現的基礎。高可用和RPO(RecoveryPointObjective,復原點目標,指能容忍的最大資料丟失量)是衡量一個數據庫優劣的重要指標。作為一個DBA,搭建
在ECShop後臺可進行商品管理、促銷管理、訂單管理、廣告管理、報表統計、文章管理、會員管理、模板管理、簡訊管理、資料庫管理等模組的設定。
模板管理
一個好的網店模板,首先會給人留下深刻的視覺印象。網店建設的精美不精美,模板扮演了十分重要的作用。當然,好的網店模板
一、XFS 檔案系統的備份與還原
使用 tar 通常是針對目錄樹系統來進行備份的工作,那麼如果想要針對整個檔案系統來進行備份與還原呢?由於 CentOS 7 已經使用 XFS 檔案系統作為預設值,所以那個好用的 xfsdump與 xfsrestore 兩個工具對 CentO
前言備份還原oracle資料庫的方式有很多種,本文只講解使用expdp、impdp資料泵方式備份與還原(恢復)資料庫,此種方式可以匯出/匯入資料庫表以及表中的資料。請自行修改目錄路徑,否則出現錯誤別怪我哦~一、備份step1:使用system登入oracle開啟DOS命令列介 事務 總結 自然 rop systemctl 操作 示例 校驗 perl 一 理解MySQL備份與恢復
備份:存儲的數據副本;原始數據,持續改變。
恢復:把副本應用到線上系統;僅能恢復至備份操作時刻的數據狀態。
時間點恢復:binary logs。
為什麽備份?1.災難恢復 大白菜 mar 我們 iso isp clas 啟動 local 介紹 磁盤系統備份
大家應該都制作過啟動盤吧!!!如果沒有制作過啟動盤的,估計怕是看不懂的喲~~~~~ 市場上常見的pe啟動盤有很多種(大白菜、老毛桃、U大師等等),它們都是傻瓜式的非常簡單就可以安 mysql備份 還原 備份工具使用xtrabackup mysql大數據備份和增量備份及還原Xtrabackup實現是物理備份,而且是物理熱備目前主流的有兩個工具可以實現物理熱備:ibbackup和xtrabackup ;ibbackup是需要授權價格昂貴 減少 備份類型 目標 大量 t-sql語句 不同 不能 -i 情況 為什麽SqlServer有完整備份、差異備份和事務日誌備份三種備份方式,以及為什麽數據庫又有簡單模式、完整模式和大容量日誌模式這三種恢復模式。本文內容適用於2005以上所有版本的SqlServer數據庫。
名稱 數據 rri att trac catch form number ride mysql每天23:00自動備份
public class DatabaseBackup {
/**
*
* @param dbdir mysql數據 高級 font member fig 重啟 個數 config文件 ber 普通用戶 上周在維護考研的3個網站(心理、歷史、教育學)時,遇到了後臺網址登不進去的問題,大概是報的數據庫錯誤。
可以先到根目錄下找有沒有admin_loginxxx.aspx這個文件,從 mongodb 逗哥自動化 mongodb 備份與恢復 一、備份數據[email protected]/* */ ~]# mongodump -h localhost -d admin -o /home/qiuyuetao/
2017-08-10T16:07:51.188+0800wr 數據庫名 dsw -o string data except 文件夾 user lock
通常在MySQL數據庫的備份和恢復的時候,多是采用在cmd中執行mysql命令來實現。
例如:
mysqldump -h127.0.0.1 -uroot -ppas pic 還原 mysql .com ace sql .cn uid 數據備份 http://pic.cnhubei.com/space.php?uid=4614&do=album&id=1719909http://pic.cnhubei.com/space. cron logs mysqld nta back kiss data oot username http://www.cnblogs.com/kissdodog/p/4174421.html備份:mysqldump -u username -p dbname > B 相關推薦
MongoDB 備份與還原 mongodump、mongorestore
mongodb的備份與還原
瞧一瞧!這兒實現了MongoDB的增量備份與還原(含部署程式碼)
mysql備份與還原-mysqldump備份、mysql與source還原
挖一挖MongoDB的備份與還原
挖一挖MongoDB的備份與還原(實現指定時間點還原和增量備份還原)
瞧一瞧!看一看!這兒實現了MongoDB的增量備份與還原(含部署程式碼)
ECShop後臺詳解-模組管理、基本資訊設定、商品展示、促銷管理、訂單管理、文章管理、報表統計、資料備份與還原
Linux學習筆記19——XFS 檔案系統的備份與還原、光碟寫入工具、其他常見的壓縮與備份工具
通過資料泵expdp、impdp方式備份與還原(匯出與匯入)Oracle資料庫
MySQL備份與還原
系統全盤備份與還原
mysql大數據備份與還原(二)
SQL Server 2008數據備份與還原的原理是什麽?
java操作數據庫定時備份與還原
數據庫的備份與還原
Mongodb 備份與恢復
[知了堂學習筆記]_Java代碼實現MySQL數據庫的備份與還原
MySQL(十四)之數據備份與還原
mysql數據據備份與還原