欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

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

功能

定期對mongodb數(shù)據(jù)庫數(shù)據(jù)進行全量備份或增量備份(副本集架構),并可以壓縮上傳到阿里云oss(本地會先生成壓縮包,可以設置不上傳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 備份角色用戶或更高權限的admin庫用戶。(導出時會先切換到admin庫來驗證權限,需有查詢local庫,mongodump local庫和mongodump目標庫的權限)

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)建的用戶,或更高權限的admin用戶;如果是全量備份方案,則只需有目標庫的操作權限
 db_user= testb
 db_passwd= testb
 # 目標庫
 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
 # 每多少天進行一次全量備份
 full_backup_period=7
 # 是否上傳到oss,如果 1 ,上傳成功后會刪除本地備份文件;0:不上傳到oss
 is_upload_to_oss= 0

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

增量時恢復步驟:

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

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導入的配置
 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
 # 恢復時是否先刪除舊的數(shù)據(jù)庫
 is_drop_old_restore=True

3. 導入期間停止mongodb寫入

4. 執(zhí)行 restore_inc.py

全量時恢復步驟:

1. 修改 restore_full.py里的配置

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

 ## mongodb導入的配置
 db_host="localhost"
 db_port=27017
 # 數(shù)據(jù)庫對應的用戶
 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
 # 恢復時是否先刪除舊的數(shù)據(jù)庫
 is_drop_old_restore=True

2. 執(zhí)行 restore_full.py

相關:

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

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

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

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

進行壓縮

上傳到oss

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

刪除本地備份文件

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

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

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

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

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

https://gitee.com/passer/mongodb_backup_script

總結(jié)

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

相關文章

  • MongoDB4.0在windows10下的安裝與服務配置教程詳解

    MongoDB4.0在windows10下的安裝與服務配置教程詳解

    本文通過圖文并茂的形式給大家介紹了MongoDB4.0在windows10下的安裝與服務配置教程,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-08-08
  • 使用Mongodb實現(xiàn)打卡簽到系統(tǒng)的實例代碼

    使用Mongodb實現(xiàn)打卡簽到系統(tǒng)的實例代碼

    這篇文章主要介紹了使用Mongodb實現(xiàn)打卡簽到系統(tǒng)的示例代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • MongoDB 常用的數(shù)據(jù)類型和基本操作

    MongoDB 常用的數(shù)據(jù)類型和基本操作

    這篇文章主要介紹了MongoDB 常用的數(shù)據(jù)類型和基本操作,幫助大家更好的理解和學習使用MongoDB數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-03-03
  • Spring Boot中使用MongoDB數(shù)據(jù)庫的方法

    Spring Boot中使用MongoDB數(shù)據(jù)庫的方法

    MongoDB是一個高性能,開源,無模式的,基于分布式文件存儲的文檔型數(shù)據(jù)庫,由C++語言編寫,其名稱來源取自“humongous”,是一種開源的文檔數(shù)據(jù)庫──NoSql數(shù)據(jù)庫的一種。這篇文章主要介紹了Spring Boot中使用MongoDB數(shù)據(jù)庫的方法,需要的朋友可以參考下
    2017-12-12
  • mongodb的寫操作

    mongodb的寫操作

    今天小編就為大家分享一篇關于mongodb的寫操作,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • MongoDB快速入門及其SpringBoot實戰(zhàn)教程

    MongoDB快速入門及其SpringBoot實戰(zhàn)教程

    MongoDB是一個開源、高性能、無模式的文檔型數(shù)據(jù)庫,當初的設計就是用于簡化開發(fā)和方便擴展,是NoSQL數(shù)據(jù)庫產(chǎn)品中的一種,它支持的數(shù)據(jù)結(jié)構非常松散,是一種類似于JSON的格式叫BSON,本文介紹MongoDB快速入門及其SpringBoot實戰(zhàn),感興趣的朋友一起看看吧
    2023-12-12
  • MongoDB學習筆記之GridFS使用介紹

    MongoDB學習筆記之GridFS使用介紹

    這篇文章主要介紹了MongoDB學習筆記之GridFS使用介紹,本文介紹了GridFS的作用、GridFS的一些使用方法、GridFS實現(xiàn)原理及注意事項等,需要的朋友可以參考下
    2015-07-07
  • MongoDB在系統(tǒng)數(shù)據(jù)庫local中無法創(chuàng)建用戶的解決辦法

    MongoDB在系統(tǒng)數(shù)據(jù)庫local中無法創(chuàng)建用戶的解決辦法

    這篇文章主要給大家介紹了關于MongoDB在系統(tǒng)數(shù)據(jù)庫local中無法創(chuàng)建用戶的解決辦法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-11-11
  • MongoDB數(shù)據(jù)庫安裝部署及警告優(yōu)化

    MongoDB數(shù)據(jù)庫安裝部署及警告優(yōu)化

    大家好,本篇文章主要講的是MongoDB數(shù)據(jù)庫安裝部署及警告優(yōu)化,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • mongodb 數(shù)據(jù)生成Insert 語句的示例代碼

    mongodb 數(shù)據(jù)生成Insert 語句的示例代碼

    這篇文章主要介紹了mongodb 數(shù)據(jù)生成Insert 語句的示例代碼,本文給大家介紹的非常詳細,對大家的學習或工作,具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03

最新評論