当前位置: 首页 > news >正文

mongodb备份脚本(单机+副本集)

自动识别单点或副本集

[root@centos610:/root]# ll
total 160
-rw-r--r--. 1 root root 65615 Aug 22 09:43 install.log
-rw-r--r--. 1 root root 20438 Aug 22 09:40 install.log.syslog
-rwxr-xr-x  1 root root  4997 Oct 29 15:56 mongobackup.sh
-rwxr-xr-x  1 root root   117 Aug 27 14:55 mongorestore.sh
[root@centos610:/root]# 
[root@centos610:/root]# ./mongobackup.sh
备份过程请查看 /rman/back_centos610_20251029_160547.log
[root@centos610:/root]# 
[root@centos610:/root]# cd /rman
[root@centos610:/rman]# 
[root@centos610:/rman]# ll
total 48
-rw-r--r-- 1 root   root     3944 Oct 29 16:07 back_centos610_20251029_160547.log
drwxr-xr-x 4 root   root       42 Oct 29 16:05 dump_centos610_20251029_160547
[root@centos610:/rman]# 
[root@centos610:/rman]# 
[root@centos610:/rman]# tail -50 back_centos610_20251029_160547.log
mongo备份开始:Wed Oct 29 16:05:47 CST 2025
# 单机配置 
2025-10-29T16:05:48.201+0800    writing admin.system.users to /rman/dump_centos610_20251029_160547/admin/system.users.bson.gz
2025-10-29T16:05:48.246+0800    done dumping admin.system.users (2 documents)
2025-10-29T16:05:48.247+0800    writing admin.system.version to /rman/dump_centos610_20251029_160547/admin/system.version.bson.gz
2025-10-29T16:05:48.293+0800    done dumping admin.system.version (2 documents)
2025-10-29T16:05:48.295+0800    writing test.fs.chunks to /rman/dump_centos610_20251029_160547/test/fs.chunks.bson.gz
2025-10-29T16:05:48.296+0800    writing test.fs.files to /rman/dump_centos610_20251029_160547/test/fs.files.bson.gz
2025-10-29T16:05:48.297+0800    writing test.test_collection to /rman/dump_centos610_20251029_160547/test/test_collection.bson.gz
2025-10-29T16:05:48.338+0800    done dumping test.test_collection (1 document)
2025-10-29T16:05:48.428+0800    done dumping test.fs.files (1562 documents)
2025-10-29T16:05:50.893+0800    [........................]  test.fs.chunks  172/5317  (3.2%)
2025-10-29T16:05:53.893+0800    [#.......................]  test.fs.chunks  404/5317  (7.6%)
2025-10-29T16:05:56.892+0800    [##......................]  test.fs.chunks  585/5317  (11.0%)
2025-10-29T16:05:59.893+0800    [###.....................]  test.fs.chunks  783/5317  (14.7%)
2025-10-29T16:06:02.893+0800    [####....................]  test.fs.chunks  1036/5317  (19.5%)
2025-10-29T16:06:05.893+0800    [#####...................]  test.fs.chunks  1260/5317  (23.7%)
2025-10-29T16:06:08.893+0800    [######..................]  test.fs.chunks  1454/5317  (27.3%)
2025-10-29T16:06:11.892+0800    [#######.................]  test.fs.chunks  1639/5317  (30.8%)
2025-10-29T16:06:14.893+0800    [########................]  test.fs.chunks  1832/5317  (34.5%)
2025-10-29T16:06:17.893+0800    [#########...............]  test.fs.chunks  2040/5317  (38.4%)
2025-10-29T16:06:20.893+0800    [#########...............]  test.fs.chunks  2205/5317  (41.5%)
2025-10-29T16:06:23.893+0800    [##########..............]  test.fs.chunks  2347/5317  (44.1%)
2025-10-29T16:06:26.893+0800    [##########..............]  test.fs.chunks  2347/5317  (44.1%)
2025-10-29T16:06:29.893+0800    [##########..............]  test.fs.chunks  2347/5317  (44.1%)
2025-10-29T16:06:32.893+0800    [##########..............]  test.fs.chunks  2381/5317  (44.8%)
2025-10-29T16:06:35.893+0800    [###########.............]  test.fs.chunks  2580/5317  (48.5%)
2025-10-29T16:06:38.892+0800    [############............]  test.fs.chunks  2797/5317  (52.6%)
2025-10-29T16:06:41.893+0800    [#############...........]  test.fs.chunks  2999/5317  (56.4%)
2025-10-29T16:06:44.893+0800    [##############..........]  test.fs.chunks  3216/5317  (60.5%)
2025-10-29T16:06:47.894+0800    [###############.........]  test.fs.chunks  3424/5317  (64.4%)
2025-10-29T16:06:50.893+0800    [################........]  test.fs.chunks  3621/5317  (68.1%)
2025-10-29T16:06:53.893+0800    [#################.......]  test.fs.chunks  3778/5317  (71.1%)
2025-10-29T16:06:56.893+0800    [#################.......]  test.fs.chunks  3778/5317  (71.1%)
2025-10-29T16:06:59.893+0800    [#################.......]  test.fs.chunks  3824/5317  (71.9%)
2025-10-29T16:07:02.893+0800    [##################......]  test.fs.chunks  4114/5317  (77.4%)
2025-10-29T16:07:05.893+0800    [###################.....]  test.fs.chunks  4314/5317  (81.1%)
2025-10-29T16:07:08.893+0800    [####################....]  test.fs.chunks  4541/5317  (85.4%)
2025-10-29T16:07:11.893+0800    [#####################...]  test.fs.chunks  4734/5317  (89.0%)
2025-10-29T16:07:14.893+0800    [######################..]  test.fs.chunks  4962/5317  (93.3%)
2025-10-29T16:07:17.893+0800    [#######################.]  test.fs.chunks  5204/5317  (97.9%)
2025-10-29T16:07:19.359+0800    [########################]  test.fs.chunks  5317/5317  (100.0%)
2025-10-29T16:07:26.322+0800    done dumping test.fs.chunks (5317 documents)
mongo备份完成:Wed Oct 29 16:07:26 CST 2025

mongobackup.sh

#!/bin/bash
#==============================================================#
# File    :  mongobackup.sh                                    #
# Ctime   :  2022-01-20                                        #
# Mtime   :  2025-10-28                                        #
# Desc    :  Mongodb Database Backup                           #
# Version :  3.0.0                                             #
# Author  :  楚枫默寒                                          #
# Copyright (C) 2022-2099                                      #
#==============================================================## 检查是否以root身份运行
if [[ $EUID -ne 0 ]]; thenecho "此脚本必须以root权限运行!"exit 1
elseALTIME=$(date +%Y%m%d_%H%M%S)BACKPATH=/rmanFILEPATH=dump_$(hostname)_${ALTIME}LOGFILE=back_$(hostname)_${ALTIME}.log
ficolor_setting(){RC='\033[31;1m'        #红色 errorGC='\033[32;1m'        #绿色 successYC='\033[33;1m'        #黄色 warningBC='\033[34;1m'        #蓝色 outputDC='\033[35;1m'        #粉色 detailAC='\033[36;1m'        #天蓝 infoEC='\033[0m'           #黑白 EC
}#提取副本集名称
pro_conf(){HOST=$(/sbin/ip addr |egrep -v  "127|0.0.0.0|00.00.00.00|lo:0|00:|:"| egrep -o '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}'| head -n 1|awk '{print $1}')PORT=$(netstat -an|grep mongo|awk '{print $9}'| sed 's/[^0-9]*//g')# 如果需要认证,填写用户名USERNAME="userxxxx"# 如果需要认证,填写密码PASSWORD="passxxxx"# 认证数据库,通常是adminAUTH_DB="admin"# 认证AUTH=${USERNAME}:${PASSWORD}#提取conf文件conf_file=$(ps -ef|egrep "mongo|mongod.conf|mongodb.conf"|grep -v grep|awk -F '-f ' '{print $2}'|awk -F ' ' '{print $1}')#显示副本集名称replSet=$(cat ${conf_file}|tr -d ' '|grep replSet|egrep -v "^#")if [[ -n ${replSet} ]];thenif [[ ${replSet} =~ ":" ]];thenrepl_name=$(echo $replSet|grep -v '^#'|awk -F ':' '{print $2}'|tr -d ' '|cut -d'#' -f1)elif [[ ${replSet} =~ "=" ]];thenrepl_name=$(echo $replSet|grep -v '^#'|awk -F '=' '{print $2}'|tr -d ' '|cut -d'#' -f1)fielserepl_name=''fi
}#提取库名
#get_dbname(){
#    local repl_name=$1
#    if [[ -n $1 ]];then
#        # 构建连接字符串
#        #db_name=$(mongo "mongodb://${USERNAME}:${PASSWORD}@${HOSTS}/?replicaSet=${repl_name}&authSource=${AUTH_DB}" --quiet --eval "db.adminCommand('listDatabases').databases.map(db => db.name)"|grep -v NETWORK|sed 's/^\[//;s/\]$//;s/,/\n/g'|sed 's/"//g'|sed '/^$/d'|sort)
#        db_name=$(echo "show dbs" | mongo "mongodb://${AUTH}@${HOST}:${PORT}/?replicaSet=${repl_name}&authSource=${AUTH_DB}"|egrep -v "NETWORK|^bye$"|awk 'NR>3{print $1}'|grep -v "^MongoDB$")
#    else #单实例
#        db_name=$(echo "show dbs" | mongo "mongodb://${AUTH}@${HOST}:${PORT}/?authSource=${AUTH_DB}"|egrep -v "NETWORK|^bye$"|awk 'NR>3{print $1}'|grep -v "^MongoDB$")
#    fi
#}#备份过程
back_process(){echo -e "${DC}备份过程请查看 ${BACKPATH}/${LOGFILE}${EC}"CMD=$(which mongodump)CMD_V=$(${CMD} --version|grep "mongodump version:"| awk -F '[^0-9]+' '{print $2}')echo -e ${GC}"mongo备份开始:"${AC}$(date)${EC} >> ${BACKPATH}/${LOGFILE}if [[ -n ${repl_name} ]];thenecho -e ${RC}"# 副本集配置 "${EC} >> ${BACKPATH}/${LOGFILE}case ${CMD_V} in3)${CMD} --uri="mongodb://${AUTH}@${HOST}:${PORT}/?replicaSet=${repl_name}&authSource=${AUTH_DB}" -o ${BACKPATH}/${FILEPATH}        >> ${BACKPATH}/${LOGFILE} 2>&1 ;;*)${CMD} --uri="mongodb://${AUTH}@${HOST}:${PORT}/?replicaSet=${repl_name}&authSource=${AUTH_DB}" -o ${BACKPATH}/${FILEPATH} --gzip >> ${BACKPATH}/${LOGFILE} 2>&1 ;;esacelseecho -e ${RC}"# 单机配置 "${EC} >> ${BACKPATH}/${LOGFILE}case ${CMD_V} in3)${CMD} --host ${HOST}:${PORT} -u${USERNAME} -p${PASSWORD} --authenticationDatabase ${AUTH_DB} -o ${BACKPATH}/${FILEPATH}        >> ${BACKPATH}/${LOGFILE} 2>&1 ;;*)${CMD} --host ${HOST}:${PORT} -u${USERNAME} -p${PASSWORD} --authenticationDatabase ${AUTH_DB} -o ${BACKPATH}/${FILEPATH} --gzip >> ${BACKPATH}/${LOGFILE} 2>&1 ;;esacfiecho -e ${GC}"mongo备份完成:"${AC}$(date)${EC} >> ${BACKPATH}/${LOGFILE}
}#清理日志
clear_log(){REDUNDANCY=2rmdir_no=$(find $BACKPATH -maxdepth 1 -type d -name "dump_*"|sort|tail -n $REDUNDANCY|wc -l)if [ $rmdir_no -ge 2 ];thenrmdir=$(find $BACKPATH -maxdepth 1 -type d -name "dump_*"|sort|tail -n $REDUNDANCY|head -n 1);if [ $rmdir ];thenrm -rf $rmdir;fififind $BACKPATH -type f -name "back_*.log" -mtime +10 -delete
}main(){color_settingpro_confback_processclear_log
}main "$@"

http://www.dtcms.com/a/544526.html

相关文章:

  • 金仓数据库平替MongoDB全栈安全实战:从文档存储到多模一体化的演进之路
  • 基于k8s环境下mongodb备份恢复实战
  • 申威ky10架构安装MongoDB 4.0.1(rpm包:mongodb-4.0.1-8.ky10.sw_64.rpm)详细步骤
  • 网站建设开发语言和使用工具it培训套路
  • Diffusion Model与视频超分(2):解读字节开源视频增强模型SeedVR2
  • Linux小课堂: 系统硬件资源管理与设备操作指南
  • ROS2核心概念之代码示例一
  • 工厂考勤系统选型参考:如何选出最合适的方案
  • 【前端小站】CSS 样式美学:从基础语法到界面精筑的实战宝典
  • Linux错误(7)接口处于Down状态不通告IPv6地址变更事件
  • 开发避坑指南(67):Maven引入iText7-core依赖失败解决方案
  • 北京南站地图建设公司简介怎么写
  • 镇江网站建设平台江苏企业展厅设计公司
  • 用JetBrains Rider开发C#应用程序指南
  • 快速创建Word箱单(2/2)
  • LangChain4j学习11:模型上下文协议 (MCP)
  • mysql线上主从集群设置
  • RK3568 11.0编译报错ld.lld: error: undefined symbol: rtkbt_cts_info
  • 南京大学LLM开发基础(四)MoE, LoRA, 数的精度 + MLP层实验
  • 机器学习-回归分析概述
  • 企业建设网站的主要作用网站seo搜索引擎优化怎么做
  • 微信小程序可以做电影网站吗安网多少钱
  • 计算机专业做网站的开题报告门户建设开源软件
  • js基础:08、构造函数(共享方法)、原型(prototype)、原型对象、(修改原型)toString方法、垃圾回收
  • 如何通过机器学习(如K-means、SVM、决策树)与深度学习(如CNN、LSTM)模型,进行全球气候变化驱动因素的数据分析与趋势预测
  • Docker篇6-项目app.py和flask_app.service配置和映射到docker中
  • 从零开始搭建 flask 博客(1)实验
  • 深入解析 Rust 解构模式:元组、结构体与枚举的精准拆解
  • 从零开始搭建 flask 博客实验(2)
  • 筑牢智算“地基”:华为以RAS理念重塑AIDC建设新模式