最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MongoDB的備份與恢復(fù)

 更新時(shí)間:2021年03月24日 11:59:05   作者:AsiaYe  
這篇文章主要介紹了MongoDB的備份與恢復(fù),幫助大家更好的理解和學(xué)習(xí)使用MongoDB,感興趣的朋友可以了解下

    任何數(shù)據(jù)庫都離不開日常的備份與恢復(fù),這二者是數(shù)據(jù)庫安全的前提,MongoDB的備份與恢復(fù)方法一般而言都采用自帶的工具來進(jìn)行。

     在開始講述備份之前,需要首先了解兩個(gè)概念,一個(gè)是恢復(fù)點(diǎn)目標(biāo)、一個(gè)叫恢復(fù)時(shí)間目標(biāo),下面我們分別來看:

  • 恢復(fù)點(diǎn)目標(biāo):

(也叫RPO,recovery point objective)

也就是數(shù)據(jù)可以恢復(fù)到哪個(gè)時(shí)間點(diǎn),可以承受多少損失。

  • 恢復(fù)時(shí)間目標(biāo):

(也叫RTO,recover time objective),在發(fā)生故障的時(shí)候,數(shù)據(jù)庫可以承受多長時(shí)間宕機(jī)。

有了這兩個(gè)概念,就可以理解不同備份恢復(fù)方法可以滿足的RPO和RTO是多少了。

來看備份工具:

Mongodump工具

在MongoDB中,mongodump工具通常用來做備份使用。它有如下特點(diǎn):

1、可以對(duì)mongos和mongod進(jìn)行操作

2、備份的是數(shù)據(jù)和數(shù)據(jù)結(jié)構(gòu),會(huì)以bson數(shù)據(jù)格式存儲(chǔ)

3、不會(huì)備份索引,只會(huì)備份索引的元數(shù)據(jù),只有在恢復(fù)的時(shí)候才會(huì)重建索引。

4、備份的過程中,mongodump會(huì)批量的將數(shù)據(jù)加載到內(nèi)存中,該方法在數(shù)據(jù)量比較大的時(shí)候,會(huì)持續(xù)占用內(nèi)存資源,會(huì)增加IO負(fù)載壓力。

5、可以備份整個(gè)數(shù)據(jù)庫、整個(gè)集合、部分集合內(nèi)容

該工具的缺點(diǎn):

1、僅僅適合備份小型的、或者單一數(shù)據(jù)庫的備份

2、數(shù)據(jù)量大的時(shí)候,備份時(shí)間較長

關(guān)于Mongodump的命令使用方法,大家可以mongodump --help去查看,常用選項(xiàng)如下:

-p,--port:端口

-h,--host:IP地址

-d,--db:數(shù)據(jù)庫

-c,--collection:備份的集合名稱

-q,--query:備份數(shù)據(jù)的條件表達(dá)式

-o,--out:備份文件的存放位置

-u,--username:用戶名

-p,--password:密碼

--authenticationDataBase:認(rèn)證數(shù)據(jù)庫

具體的使用方法,下面有例子。

Mongorestore工具

   數(shù)據(jù)備份和數(shù)據(jù)恢復(fù)二者是不可分割的,因?yàn)閿?shù)據(jù)的備份,本質(zhì)上還是為了恢復(fù)準(zhǔn)備的,如果備份的數(shù)據(jù)不能恢復(fù),那么備份也就失去了意義。

    在MongoDB中,Mongorestore這個(gè)工具是用來做數(shù)據(jù)恢復(fù)的,數(shù)據(jù)恢復(fù)命令的常用參數(shù)如下:

與mongodump重復(fù)的部分不再贅述

-p,--port

-h,--host

-d,--db

-c,--collection

--dir:恢復(fù)文件存放的位置,如果指定了數(shù)據(jù)庫文件夾或者集合文件,則只恢復(fù)當(dāng)前數(shù)據(jù)庫或者當(dāng)前集合,如果沒有指定,則恢復(fù)當(dāng)前目錄下所有備份數(shù)據(jù)。

--drop:恢復(fù)前會(huì)刪除已有的數(shù)據(jù)庫

-u,--user

-p,--password

--authenticationDatabase

下面來看樣例:

數(shù)據(jù)備份舉例

備份所有數(shù)據(jù)庫
mongodump --port=27017 -h 127.0.0.1 -o /data/mongodb_backup -u root -p 123456 
2020-11-23T23:40:41.599+0800 writing admin.system.users to 
2020-11-23T23:40:41.626+0800 done dumping admin.system.users (3 documents)
2020-11-23T23:40:41.626+0800 writing admin.system.roles to 
2020-11-23T23:40:41.651+0800 done dumping admin.system.roles (1 document)
2020-11-23T23:40:41.651+0800 writing admin.system.version to 
2020-11-23T23:40:41.680+0800 done dumping admin.system.version (2 documents)
2020-11-23T23:40:41.680+0800 writing test.yeyz to 
2020-11-23T23:40:41.680+0800 writing yeyz.test to 
2020-11-23T23:40:41.726+0800 done dumping yeyz.test (2 documents)
2020-11-23T23:40:41.727+0800 done dumping test.yeyz (3 documents)

備份yeyz這一個(gè)數(shù)據(jù)庫
[root@VM-0-14-centos ~]# mongodump -d yeyz --port=27017 -h 127.0.0.1 -o /data/mongodb_backup -u root -p 123456 --authenticationDatabase admin   
2020-11-23T23:41:58.991+0800 writing yeyz.test to 
2020-11-23T23:41:59.050+0800 done dumping yeyz.test (2 documents)

備份yeyz數(shù)據(jù)庫中的test集合中的name=ccc的記錄
[root@VM-0-14-centos ~]# mongodump -d yeyz -c test -q '{name:{$eq:"ccc"}}' --port=27017 -h 127.0.0.1 -o /data/mongodb_backup -u root -p 123456 --authenticationDatabase admin
2020-11-23T23:43:24.473+0800 writing yeyz.test to 
2020-11-23T23:43:24.501+0800 done dumping yeyz.test (1 document)

數(shù)據(jù)恢復(fù)舉例

恢復(fù)前
> use yeyz
switched to db yeyz
> show tables;
test
> db.test.find()
{ "_id" : ObjectId("5fa7eae2515b814f18f2d474"), "name" : "ccc" }
{ "_id" : ObjectId("5fa7f00e523d80402cdfa326"), "name" : "bbb" }

恢復(fù)后
> show tables;
test
test_recover
> db.test_recover.find()
{ "_id" : ObjectId("5fa7eae2515b814f18f2d474"), "name" : "ccc" }

我們成功的將上面的yeyz數(shù)據(jù)庫中的test集合中的name=ccc的記錄恢復(fù)到了test_recover這個(gè)集合當(dāng)中。

物理備份

    物理備份的概念大家應(yīng)該都理解,常用的方法是復(fù)制物理硬盤上的數(shù)據(jù)庫文件。

    想要保證復(fù)制的物理文件和真實(shí)的數(shù)據(jù)庫文件一致,需要保證當(dāng)前數(shù)據(jù)庫沒有寫入。如果數(shù)據(jù)庫有寫入,則復(fù)制的數(shù)據(jù)是不準(zhǔn)確的。所以,物理復(fù)制必須在MongoDB實(shí)例停機(jī)狀態(tài)或者鎖定狀態(tài)下進(jìn)行。一般來講,在MongoDB集群中,我們會(huì)使用鎖定從庫的辦法來進(jìn)行備份。

    通常情況下,使用:

db.fsyncLock()  鎖定從數(shù)據(jù)庫。

db.fsyncUnlock() 解鎖數(shù)據(jù)庫

    鎖定從節(jié)點(diǎn)的數(shù)據(jù)庫之后,在從節(jié)點(diǎn)上使用物理文件拷貝的方式進(jìn)行備份即可。

    備份完成即可解鎖數(shù)據(jù)庫。

最后,數(shù)據(jù)備份的時(shí)候,如果有寫入,那么備份的數(shù)據(jù)是否會(huì)不準(zhǔn)確?例如下面這樣:

如果我們的備份進(jìn)度處在中間位置,即:

    A庫備份完成的時(shí)候,B庫沒有開始備份

此時(shí)分別寫入A庫和B庫兩個(gè)文檔,則最終的備份結(jié)果中,A庫的數(shù)據(jù)沒有新增的數(shù)據(jù),B庫的數(shù)據(jù)有新增的數(shù)據(jù),就會(huì)產(chǎn)生數(shù)據(jù)的不一致。為了解決這個(gè)問題,備份一般都使用鎖定數(shù)據(jù)庫或者停止實(shí)例的方法來解決。

    在MongoDB中,可以在從庫上進(jìn)行鎖定或者停止實(shí)例的備份操作,不建議在線上環(huán)境使用MongoDB單庫,因?yàn)檫@種情況,備份恢復(fù)將會(huì)成為一個(gè)瓶頸問題。

以上就是MongoDB的備份與恢復(fù)的詳細(xì)內(nèi)容,更多關(guān)于MongoDB 備份與恢復(fù)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • MongoDB balancer的使用詳解

    MongoDB balancer的使用詳解

    這篇文章主要介紹了MongoDB balancer的使用詳解,幫助大家更好的理解和學(xué)習(xí)使用MongoDB,感興趣的朋友可以了解下
    2021-04-04
  • MongoDB數(shù)據(jù)庫的特色和優(yōu)點(diǎn)介紹

    MongoDB數(shù)據(jù)庫的特色和優(yōu)點(diǎn)介紹

    這篇文章主要介紹了MongoDB數(shù)據(jù)庫的特色和優(yōu)點(diǎn)介紹,本文總結(jié)了每個(gè)開發(fā)人員都應(yīng)該知道的5個(gè)MongoDB特點(diǎn),需要的朋友可以參考下
    2015-05-05
  • MongoDB數(shù)據(jù)庫查詢性能提高40倍的經(jīng)歷分享

    MongoDB數(shù)據(jù)庫查詢性能提高40倍的經(jīng)歷分享

    大家在使用 MongoDB 的時(shí)候有沒有碰到過性能問題呢?下面這篇文章主要給大家分享了MongoDB數(shù)據(jù)庫查詢性能提高40倍的經(jīng)歷,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-02-02
  • 常用的MongoDB查詢語句的示例代碼

    常用的MongoDB查詢語句的示例代碼

    最近做了幾個(gè)規(guī)則邏輯。用到mongo查詢比較多,就是查詢交易信息跑既定規(guī)則篩選出交易商戶,使用聚合管道進(jìn)行統(tǒng)計(jì)和取出簡單處理后的數(shù)據(jù),用SQL代替業(yè)務(wù)代碼邏輯的判斷,本文給大家介紹Mongodb查詢語句的示例代碼,一起看看吧
    2021-07-07
  • 詳解MongoDB4.0構(gòu)建分布式分片群集

    詳解MongoDB4.0構(gòu)建分布式分片群集

    這篇文章主要介紹了詳解MongoDB4.0構(gòu)建分布式分片群集,詳細(xì)的介紹了什么是MongoDB分片和具體使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • MongoDB數(shù)據(jù)備份遷移的全過程

    MongoDB數(shù)據(jù)備份遷移的全過程

    這篇文章主要記錄了MongoDB數(shù)據(jù)備份遷移的全過程,文中通過圖文結(jié)合的方式介紹的非常詳細(xì),對(duì)大家了解學(xué)習(xí)MongoDB數(shù)據(jù)備份遷移有一定的幫助,需要的朋友可以參考下
    2024-06-06
  • MongoDB和mysql的區(qū)別對(duì)比分析

    MongoDB和mysql的區(qū)別對(duì)比分析

    MongoDB?是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫,而MySQL?是一款安全、跨平臺(tái)、高效的,并與?PHP、Java?等主流編程語言緊密結(jié)合的數(shù)據(jù)庫系統(tǒng),本文重點(diǎn)給大家介紹MongoDB和mysql的區(qū)別,需要的朋友可以參考下
    2023-01-01
  • MongoDB使用自帶的命令行工具進(jìn)行備份和恢復(fù)的教程

    MongoDB使用自帶的命令行工具進(jìn)行備份和恢復(fù)的教程

    這篇文章主要介紹了MongoDB使用自帶的命令行工具進(jìn)行備份和恢復(fù)的教程,我們只需要在命令行界面中用簡單的命令操作mongorestore和mongodump工具就可以實(shí)現(xiàn),需要的朋友可以參考下
    2016-06-06
  • MongoDB實(shí)現(xiàn)基于關(guān)鍵詞的文章檢索功能(C#版)

    MongoDB實(shí)現(xiàn)基于關(guān)鍵詞的文章檢索功能(C#版)

    這篇文章主要介紹了MongoDB實(shí)現(xiàn)基于關(guān)鍵詞的文章檢索功能(C#版)的相關(guān)資料,需要的朋友可以參考下
    2016-04-04
  • mongodb設(shè)置后臺(tái)運(yùn)行的方法

    mongodb設(shè)置后臺(tái)運(yùn)行的方法

    這篇文章主要介紹了mongodb設(shè)置后臺(tái)運(yùn)行的方法,本文同時(shí)給出了關(guān)閉已在后臺(tái)運(yùn)行mongodb的方法,需要的朋友可以參考下
    2014-09-09

最新評(píng)論

平潭县| 乐平市| 海林市| 长垣县| 江川县| 宁陵县| 大足县| 广平县| 神农架林区| 冀州市| 威宁| 额尔古纳市| 东乡县| 平舆县| 平武县| 绥江县| 东源县| 望江县| 定襄县| 宿州市| 和平区| 顺平县| 封丘县| 买车| 合山市| 盐城市| 手游| 潼南县| 琼海市| 弥渡县| 北海市| 郓城县| 铜山县| 太康县| 乌拉特中旗| 西藏| 沈丘县| 聂荣县| 成安县| 新龙县| 红原县|