- A+
前言
mongodb备份剧本,可以全量或增量进行备份,两年前所写,今朝网上mongodb备份相关的剧本也照样很少。下面话不多说了,来一路看看具体的先容吧
功效
按期对mongodb数据库数据进行全量备份或增量备份(副本集架构),并可以紧缩上传到阿里云oss(当地会老师成紧缩包,可以设置不上传oss)。
剧本运行情况
使用python语言编写,需安装python,pymongo和mongodb shell客户端(测试时使用python 2.7.6,pymongo 3.0.3和mongodb shell 2.0.4)。
剧本部署步调
1. 将剧本放到一台linux主机
2. 假如是增量备份,创立mongodb 备份脚色用户或更高权限的admin库用户。(导出时会先切换到admin库来验证权限,需有查询local库,mongodump local库和mongodump目的库的权限)
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中的创立的用户,或更高权限的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. 创立mongodb 具有applyOps权限的脚色 以及用此脚色的用户。(需有执行 mongorestore --oplogReplay的用户权限)
2. 改动 restore_inc.py里的设置装备摆设
## 阿里云oss 设置装备摆设 endpoint="大众oss.aliyuncs.com"大众 accessKeyId="大众xxxxxxx"大众 accessKeySecret="大众xxxxxxx"大众 bucket="大众db-backup"大众 ## mongodb导入的设置装备摆设 db_host="大众localhost"大众 db_port=27017 # 步调1创立的用户 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 # 是否备份文件已经下载到当地,假如true,则不会从oss下载息争压,当地已有 has_download_to_local=False # 规复时是否先删除旧的数据库 is_drop_old_restore=True
3. 导入时代结束mongodb写入
4. 执行 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 # 数据库对应的用户 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 # 是否备份文件已经下载到当地,假如true,则不会从oss下载息争压,当地已有 has_download_to_local=False # 规复时是否先删除旧的数据库 is_drop_old_restore=True
2. 执行 restore_full.py
相关:
增量备份实现原理
一个周期内(如一礼拜)先备份一次全量数据库,然后后面每次备份 前次记载点到最新光阴内的oplog文件。 Oplog 记载了MongoDB数据库的变动操作信息,其保留在local库的oplog.rs表,在集群架构才存在,单机不会有,故增量备份不克不及在单机下使用。从库是经由过程异步复制主库的Oplog文件,从而到达与主库的同步。 oplog有年夜小限定,跨越指定年夜小,新的记载会笼罩旧的操作记载。
全量剧本执行时的流程
备份mongodb数据库到当地
进行紧缩
上传到oss
查验oss与当地文件的年夜小是否雷同
删除当地备份文件
增量剧本执行时的流程
读取上一个周期执行信息断定是否必要创立新的周期
得到mongodb上oplog比来记载的光阴点current timestamp position
从当地读取上一次执行时mongodb的oplog光阴点
dump导出全量数据或增量oplog文件到当地,增量oplog文件的导出规模是 前次oplog记载点到最新光阴内的oplog文件
保留步调2获取的current timestamp position到当地,作为下一次执行步调3中的光阴点
进行紧缩
上传到oss
删除当地备份文件
规复时剧本执行的流程
从oss上下载指定周期的备份文件到当地
对全量文件和增量oplog的zip文件进行解压
用 mongorestore对全量文件进行导入
用 mongorestore --oplogReplay 分离对各光阴段的oplog文件进行导入
mongodb增量备份 剧本源码地址:
https://gitee.com/passer/mongodb_backup_script
总结
以上便是这篇文章的全体内容了,愿望本文的内容对年夜家的进修或者事情具有必定的参考进修代价,假如有疑问年夜家可以留言交流,谢谢年夜家对剧本之家的支撑。
您可能感兴致的文章:
mongodb 数据库操作--备份 还原 导出 导入MongoDB整库备份与还原以及单个collection备份、规复办法MongoDB备份、还原、导出、导入、克隆操作示例Windows下主动备份MongoDB的批处置剧本Mongodb实现准时备份与规复的办法教程Windows或Linux体系中备份和规复MongoDB数据的教程Linux下MongoDB数据库实现主动备份详解浅谈MongoDB的备份方式MongoDB使用自带的敕令行对象进行备份和规复的教程mongodb增量备份剧本的实现和原理详解