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

mongodb增量/全量備份腳本的實現(xiàn)詳解

 更新時間:2018年09月26日 09:18:03   作者:hxt8  
這篇文章主要給大家介紹了關(guān)于mongodb增量/全量備份腳本的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

mongodb備份腳本,可以全量或增量進(jìn)行備份,兩年前所寫,目前網(wǎng)上mongodb備份相關(guān)的腳本也還是很少。下面話不多說了,來一起看看詳細(xì)的介紹吧

功能

定期對mongodb數(shù)據(jù)庫數(shù)據(jù)進(jìn)行全量備份或增量備份(副本集架構(gòu)),并可以壓縮上傳到阿里云oss(本地會先生成壓縮包,可以設(shè)置不上傳oss)。

腳本運行環(huán)境

使用python語言編寫,需安裝python,pymongo和mongodb shell客戶端(測試時使用python 2.7.6,pymongo 3.0.3和mongodb shell 2.0.4)。

腳本部署步驟

1. 將腳本放到一臺linux主機

2. 如果是增量備份,創(chuàng)建mongodb 備份角色用戶或更高權(quán)限的admin庫用戶。(導(dǎo)出時會先切換到admin庫來驗證權(quán)限,需有查詢local庫,mongodump local庫和mongodump目標(biāo)庫的權(quán)限)

use admin
 db.addUser( { user: "xxxxx",
  pwd: "xxxxx",
  roles: [ "backup" ]
 } )

3. 編輯config.properties,修改oss、mongodb連接等配置信息

## 阿里云oss 連接配置
 endpoint= oss.aliyuncs.com
 accessKeyId = xxxxxxx
 accessKeySecret = xxxxxxx
 bucket = db-backup
 ## mongodb 連接配置
 # 建議用從庫的地址,減少對主庫壓力
 db_host= localhost
 db_port= 27017
 # 如果是增量備份方案,為步驟2中的創(chuàng)建的用戶,或更高權(quán)限的admin用戶;如果是全量備份方案,則只需有目標(biāo)庫的操作權(quán)限
 db_user= testb
 db_passwd= testb
 # 目標(biāo)庫
 db_name= che
 # 備份到本地的臨時目錄 
 db_backup_root_path= /temp/backup/
 # 如果使用mongo客戶端綠色版的,寫上mongo客戶端的絕對路徑
 mongo_shell_path= /dev/hanxuetong/mongodb/mongodb-linux-x86_64-3.0.6/bin/
 # 增量備份還是全量備份 1: 增量備份 0:全量備份
 is_inc_backup=1
 # 每多少天進(jìn)行一次全量備份
 full_backup_period=7
 # 是否上傳到oss,如果 1 ,上傳成功后會刪除本地備份文件;0:不上傳到oss
 is_upload_to_oss= 0

4. 將start.py加入linux定時任務(wù)。crontab任務(wù)配置如 0 4 * * * python /xxx/start.py >> /xxx/xxx.log 2>&1

增量時恢復(fù)步驟:

1. 創(chuàng)建mongodb 具有applyOps權(quán)限的角色 以及用此角色的用戶。(需有執(zhí)行 mongorestore --oplogReplay的用戶權(quán)限)

use admin
 db.createRole(
 {
 role: "applyOpsRole",
 privileges: [
 { resource: { anyResource: true }, actions: [ "anyAction"] }
 ],
 roles: []
 }
 )
 db.addUser( { user: "xxxx",
 pwd: "xxxx",
 roles: [ "applyOpsRole" ]
 } )

2. 修改 restore_inc.py里的配置

## 阿里云oss 配置
 endpoint="oss.aliyuncs.com"
 accessKeyId="xxxxxxx"
 accessKeySecret="xxxxxxx"
 bucket="db-backup"

 ## mongodb導(dǎo)入的配置
 db_host="localhost"
 db_port=27017
 # 步驟1創(chuàng)建的用戶
 db_user="testr"
 db_passwd="testr" 
 db_name="che"

 # recent circle backup direactory on oss 最新備份文件的周期名,即備份臨時目錄中mongodb_inc_backup_info.json的last_circle_backup_dir_name 或 oss中文件夾名
 last_circle_backup_dir_name="mongodb_cycle_backup_20151124141133"
 # 從oss上下載到本地的臨時目錄
 restore_local_temp_path="H:\\pythoncode\\temp\\restore\\"
 # 如果使用mongo客戶端綠色版的,寫上mongo客戶端的絕對路徑
 mongo_shell_path= "/alidata1/dev/hanxuetong/mongodb/mongodb-linux-x86_64-3.0.6/bin/"
 # backup file has download to local ? if True,will not download backup files from oss
 # 是否備份文件已經(jīng)下載到本地,如果true,則不會從oss下載和解壓,本地已有
 has_download_to_local=False
 # 恢復(fù)時是否先刪除舊的數(shù)據(jù)庫
 is_drop_old_restore=True

3. 導(dǎo)入期間停止mongodb寫入

4. 執(zhí)行 restore_inc.py

全量時恢復(fù)步驟:

1. 修改 restore_full.py里的配置

## 阿里云oss 配置
 endpoint="oss.aliyuncs.com"
 accessKeyId="xxxxxxx"
 accessKeySecret="xxxxxxx"
 bucket="db-backup"

 ## mongodb導(dǎo)入的配置
 db_host="localhost"
 db_port=27017
 # 數(shù)據(jù)庫對應(yīng)的用戶
 db_user="test"
 db_passwd="test" 
 db_name="che"

 # recent circle backup direactory on oss 最新備份文件的周期名, oss 上存儲的文件名稱是 last_circle_backup_dir_name+last_full_backup_file_suffix
 last_circle_backup_dir_name="mongodb_cycle_backup_20151124141133"

 last_full_backup_file_suffix=".tar.gz"
 # 備份的目錄,實際全量備份的路徑為 restore_local_temp_path+last_circle_backup_dir_name+db_name
 restore_local_temp_path="H:\\pythoncode\\temp\\restore\\"
 # 如果使用mongo客戶端綠色版的,寫上mongo客戶端的絕對路徑
 mongo_shell_path="/alidata1/dev/hanxuetong/mongodb/mongodb-linux-x86_64-3.0.6/bin/"
 # backup file has download to local ? if True,will not download backup files from oss
 # 是否備份文件已經(jīng)下載到本地,如果true,則不會從oss下載和解壓,本地已有
 has_download_to_local=False
 # 恢復(fù)時是否先刪除舊的數(shù)據(jù)庫
 is_drop_old_restore=True

2. 執(zhí)行 restore_full.py

相關(guān):

增量備份實現(xiàn)原理

一個周期內(nèi)(如一星期)先備份一次全量數(shù)據(jù)庫,然后后面每次備份 上次記錄點到最新時間內(nèi)的oplog文件。 Oplog 記錄了MongoDB數(shù)據(jù)庫的更改操作信息,其保存在local庫的oplog.rs表,在集群架構(gòu)才存在,單機不會有,故增量備份不能在單機下使用。從庫是通過異步復(fù)制主庫的Oplog文件,從而達(dá)到與主庫的同步。 oplog有大小限制,超過指定大小,新的記錄會覆蓋舊的操作記錄。

全量腳本執(zhí)行時的流程

備份mongodb數(shù)據(jù)庫到本地

進(jìn)行壓縮

上傳到oss

檢驗oss與本地文件的大小是否相同

刪除本地備份文件

增量腳本執(zhí)行時的流程

  1. 讀取上一個周期執(zhí)行信息判斷是否需要創(chuàng)建新的周期
  2. 獲得mongodb上oplog最近記錄的時間點current timestamp position
  3. 從本地讀取上一次執(zhí)行時mongodb的oplog時間點
  4. dump導(dǎo)出全量數(shù)據(jù)或增量oplog文件到本地,增量oplog文件的導(dǎo)出范圍是 上次oplog記錄點到最新時間內(nèi)的oplog文件
  5. 保存步驟2獲取的current timestamp position到本地,作為下一次執(zhí)行步驟3中的時間點
  6. 進(jìn)行壓縮
  7. 上傳到oss
  8. 刪除本地備份文件

恢復(fù)時腳本執(zhí)行的流程

  1. 從oss上下載指定周期的備份文件到本地
  2. 對全量文件和增量oplog的zip文件進(jìn)行解壓
  3. 用 mongorestore對全量文件進(jìn)行導(dǎo)入
  4. 用 mongorestore --oplogReplay 分別對各時間段的oplog文件進(jìn)行導(dǎo)入

mongodb增量備份 腳本源碼地址:

https://gitee.com/passer/mongodb_backup_script

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • 阿里云服務(wù)器部署mongodb的詳細(xì)過程

    阿里云服務(wù)器部署mongodb的詳細(xì)過程

    這篇文章主要介紹了阿里云服務(wù)器部署mongodb的過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • 淺析MongoDB用戶管理

    淺析MongoDB用戶管理

    mongodb在2.4最新版本中對用戶權(quán)限管理做了全新的調(diào)整,把權(quán)限細(xì)化了,增強了安全性,越來越像mysql的權(quán)限管理了。廢話少說,我們來詳細(xì)看下吧
    2014-08-08
  • MongoDB開發(fā)規(guī)范與數(shù)據(jù)建模詳解

    MongoDB開發(fā)規(guī)范與數(shù)據(jù)建模詳解

    在MongoDB中,遵循良好的開發(fā)規(guī)范和數(shù)據(jù)建模技巧可以提升數(shù)據(jù)庫性能,簡化數(shù)據(jù)管理,并減少潛在的錯誤,這篇文章主要介紹了MongoDB開發(fā)規(guī)范與數(shù)據(jù)建模,需要的朋友可以參考下
    2024-08-08
  • MongoDB中的主從同步配置和mongod相關(guān)啟動命令講解

    MongoDB中的主從同步配置和mongod相關(guān)啟動命令講解

    這篇文章主要介紹了MongoDB中的主從同步配置和mongod相關(guān)啟動命令講解,文中也羅列了很多其他常用的mongod命令參數(shù),需要的朋友可以參考下
    2016-03-03
  • MongoDB備份、還原、導(dǎo)出、導(dǎo)入、克隆操作示例

    MongoDB備份、還原、導(dǎo)出、導(dǎo)入、克隆操作示例

    這篇文章主要介紹了MongoDB備份、還原、導(dǎo)出、導(dǎo)入、克隆操作示例,本文分別給操作代碼、命令實例,需要的朋友可以參考下
    2015-07-07
  • MongoDB數(shù)據(jù)庫基礎(chǔ)知識整理

    MongoDB數(shù)據(jù)庫基礎(chǔ)知識整理

    這篇文章介紹了MongoDB數(shù)據(jù)庫的基礎(chǔ)知識,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Mongodb副本集和分片示例詳解

    Mongodb副本集和分片示例詳解

    這篇文章主要給大家介紹了關(guān)于Mongodb副本集和分片的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Mongodb具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 深入了解MongoDB 分布式集群

    深入了解MongoDB 分布式集群

    這篇文章主要介紹了MongoDB 分布式集群的相關(guān)資料,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • 詳解mongodb 主從配置

    詳解mongodb 主從配置

    我研究過的nosql,memcache,redis,mongodb都是支持分布式的,生產(chǎn)環(huán)境中用過memcache,redis,性能穩(wěn)定。mongodb是最接近關(guān)系型數(shù)據(jù)庫的,不用花很多時間去構(gòu)建數(shù)據(jù)庫模型,將來我會用mongodb,看一下主從配置
    2014-07-07
  • MongoDB的chunk詳解

    MongoDB的chunk詳解

    這篇文章主要介紹了MongoDB的chunk的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用MongoDB數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-04-04

最新評論

金溪县| 千阳县| 沅江市| 昂仁县| 泰顺县| 连州市| 绥芬河市| 台东市| 通河县| 珲春市| 弋阳县| 五家渠市| 兰溪市| 五原县| 梁山县| 黄梅县| 石柱| 岳阳县| 汉寿县| 津市市| 隆回县| 云浮市| 建阳市| 南和县| 丹东市| 昭通市| 大埔县| 邳州市| 建水县| 晴隆县| 扶余县| 香格里拉县| 颍上县| 修文县| 象山县| 闻喜县| 通州区| 平原县| 新兴县| 白山市| 贵定县|