自动识别单点或副本集[rootcentos610:/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 [rootcentos610:/root]# [rootcentos610:/root]# ./mongobackup.sh 备份过程请查看 /rman/back_centos610_20251029_160547.log [rootcentos610:/root]# [rootcentos610:/root]# cd /rman [rootcentos610:/rman]# [rootcentos610:/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 [rootcentos610:/rman]# [rootcentos610:/rman]# [rootcentos610:/rman]# tail -50 back_centos610_20251029_160547.log mongo备份开始:Wed Oct 29 16:05:47 CST 2025 # 单机配置 2025-10-29T16:05:48.2010800 writing admin.system.users to /rman/dump_centos610_20251029_160547/admin/system.users.bson.gz 2025-10-29T16:05:48.2460800 done dumping admin.system.users (2 documents) 2025-10-29T16:05:48.2470800 writing admin.system.version to /rman/dump_centos610_20251029_160547/admin/system.version.bson.gz 2025-10-29T16:05:48.2930800 done dumping admin.system.version (2 documents) 2025-10-29T16:05:48.2950800 writing test.fs.chunks to /rman/dump_centos610_20251029_160547/test/fs.chunks.bson.gz 2025-10-29T16:05:48.2960800 writing test.fs.files to /rman/dump_centos610_20251029_160547/test/fs.files.bson.gz 2025-10-29T16:05:48.2970800 writing test.test_collection to /rman/dump_centos610_20251029_160547/test/test_collection.bson.gz 2025-10-29T16:05:48.3380800 done dumping test.test_collection (1 document) 2025-10-29T16:05:48.4280800 done dumping test.fs.files (1562 documents) 2025-10-29T16:05:50.8930800 [........................] test.fs.chunks 172/5317 (3.2%) 2025-10-29T16:05:53.8930800 [#.......................] test.fs.chunks 404/5317 (7.6%) 2025-10-29T16:05:56.8920800 [##......................] test.fs.chunks 585/5317 (11.0%) 2025-10-29T16:05:59.8930800 [###.....................] test.fs.chunks 783/5317 (14.7%) 2025-10-29T16:06:02.8930800 [####....................] test.fs.chunks 1036/5317 (19.5%) 2025-10-29T16:06:05.8930800 [#####...................] test.fs.chunks 1260/5317 (23.7%) 2025-10-29T16:06:08.8930800 [######..................] test.fs.chunks 1454/5317 (27.3%) 2025-10-29T16:06:11.8920800 [#######.................] test.fs.chunks 1639/5317 (30.8%) 2025-10-29T16:06:14.8930800 [########................] test.fs.chunks 1832/5317 (34.5%) 2025-10-29T16:06:17.8930800 [#########...............] test.fs.chunks 2040/5317 (38.4%) 2025-10-29T16:06:20.8930800 [#########...............] test.fs.chunks 2205/5317 (41.5%) 2025-10-29T16:06:23.8930800 [##########..............] test.fs.chunks 2347/5317 (44.1%) 2025-10-29T16:06:26.8930800 [##########..............] test.fs.chunks 2347/5317 (44.1%) 2025-10-29T16:06:29.8930800 [##########..............] test.fs.chunks 2347/5317 (44.1%) 2025-10-29T16:06:32.8930800 [##########..............] test.fs.chunks 2381/5317 (44.8%) 2025-10-29T16:06:35.8930800 [###########.............] test.fs.chunks 2580/5317 (48.5%) 2025-10-29T16:06:38.8920800 [############............] test.fs.chunks 2797/5317 (52.6%) 2025-10-29T16:06:41.8930800 [#############...........] test.fs.chunks 2999/5317 (56.4%) 2025-10-29T16:06:44.8930800 [##############..........] test.fs.chunks 3216/5317 (60.5%) 2025-10-29T16:06:47.8940800 [###############.........] test.fs.chunks 3424/5317 (64.4%) 2025-10-29T16:06:50.8930800 [################........] test.fs.chunks 3621/5317 (68.1%) 2025-10-29T16:06:53.8930800 [#################.......] test.fs.chunks 3778/5317 (71.1%) 2025-10-29T16:06:56.8930800 [#################.......] test.fs.chunks 3778/5317 (71.1%) 2025-10-29T16:06:59.8930800 [#################.......] test.fs.chunks 3824/5317 (71.9%) 2025-10-29T16:07:02.8930800 [##################......] test.fs.chunks 4114/5317 (77.4%) 2025-10-29T16:07:05.8930800 [###################.....] test.fs.chunks 4314/5317 (81.1%) 2025-10-29T16:07:08.8930800 [####################....] test.fs.chunks 4541/5317 (85.4%) 2025-10-29T16:07:11.8930800 [#####################...] test.fs.chunks 4734/5317 (89.0%) 2025-10-29T16:07:14.8930800 [######################..] test.fs.chunks 4962/5317 (93.3%) 2025-10-29T16:07:17.8930800 [#######################.] test.fs.chunks 5204/5317 (97.9%) 2025-10-29T16:07:19.3590800 [########################] test.fs.chunks 5317/5317 (100.0%) 2025-10-29T16:07:26.3220800 done dumping test.fs.chunks (5317 documents) mongo备份完成:Wed Oct 29 16:07:26 CST 2025mongobackup.sh#!/bin/bash # # FileName : mongobackup.sh # CreateTime : root 2022-01-20 # ModifyTime : root 2026-11-02 16:03:40 # Sversion : v3.10 # Desc : 三级降级URI副本集 - --host rs/ip副本集 - 单点直连兜底 # Fix : 修复repl_name换行污染日志问题repl_name强制清除\n\r # # 检查是否以root身份运行 if [[ $EUID -ne 0 ]]; then echo 此脚本必须以root权限运行! exit 1 else ALTIME$(date %Y%m%d_%H%M%S) BACKPATH/rman FILEPATH${BACKPATH}/dump_${ALTIME}_$(hostname) PLANFILE${BACKPATH}/mongodump_plan_$(hostname).log mkdir -p ${FILEPATH} fi # 字体颜色 color_setting(){ readonly RC\033[31;1m # 红色-错误 readonly GC\033[32;1m # 绿色-成功 readonly YC\033[33;1m # 黄色-警告 readonly BC\033[34;1m # 蓝色-输出 readonly DC\033[35;1m # 粉色-详情 readonly AC\033[36;1m # 天蓝-信息 readonly FRC\033[31;5;1m # 红色闪烁-错误 readonly FGC\033[32;5;1m # 绿色闪烁-成功 readonly FYC\033[33;5;1m # 黄色闪烁-警告 readonly FBC\033[34;5;1m # 蓝色闪烁-输出 readonly FDC\033[35;5;1m # 粉色闪烁-详情 readonly FAC\033[36;5;1m # 天蓝闪烁-信息 readonly BRC\033[41;37m # 红底白字 readonly EC\033[0m # 颜色复位 } # 公共工具函数 log_print() { local LEVEL$1 local MSG$2 local NOW$(date %Y-%m-%d %H:%M:%S) local COLOR_PREFIX case ${LEVEL} in ERROR) COLOR_PREFIX${FRC} ;; WARNING) COLOR_PREFIX${YC} ;; SUCCESS) COLOR_PREFIX${GC} ;; INFO) COLOR_PREFIX${AC} ;; *) COLOR_PREFIX ;; esac local COLOR_LINE[${NOW}] [${COLOR_PREFIX}${LEVEL}${EC}] ${MSG} echo -e ${COLOR_LINE} [[ -w ${BACKPATH} ]] echo [${NOW}] [${LEVEL}] ${MSG} ${PLANFILE} } # 提取副本集名称、IP、端口 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) USERNAMEuserxxxx PASSWORDpassxxxx AUTH_DBadmin AUTH${USERNAME}:${PASSWORD} conf_file$(ps -ef|egrep mongod.conf|mongodb.conf|grep -v grep|awk -F -f {print $2}|awk {print $1}|head -n1) repl_name if [[ -n ${conf_file} -f ${conf_file} ]];then replSet$(sed -e s/#.*$// ${conf_file} | grep -E replSet(Name)?[[:space:]]*[:] || true) if [[ -n ${replSet} ]];then raw_repl$(echo ${replSet} | sed -E s/.*[:][[:space:]]*//; s///g; s/\x27//g) # 强制清除换行、回车再去首尾空白 repl_name$(echo ${raw_repl} | tr -d \n\r | xargs) log_print INFO 已提取到副本集名称:${repl_name},将进行副本集备份. else log_print INFO 配置文件内未找到replSet配置,将进行单点备份. fi else log_print WARNING 未获取到有效的mongod配置文件(进程无-f参数或文件不存在),尝试从进程命令行提取replSet raw_repl$(ps -ef | grep mongod | grep -v grep | grep -Eo --replSet[[:space:]][^ ] | awk {print $2} | head -n1) # 强制清除换行、回车再去首尾空白 repl_name$(echo ${raw_repl} | tr -d \n\r | xargs) if [[ -n ${repl_name} ]];then log_print INFO 从进程启动参数提取副本集名称:${repl_name},将进行副本集备份. else log_print INFO 进程参数也未找到replSet,判定为单点备份. repl_name fi fi } # 备份过程三级降级 back_process(){ CMD$(which mongodump) CMD_V$(${CMD} --version 2/dev/null |grep mongodump version:| awk -F [^0-9] {print $2}) log_print INFO mongo备份开始. local dump_ret0 case ${CMD_V} in 3) ${CMD} --host ${HOST}:${PORT} -u${USERNAME} -p${PASSWORD} --authenticationDatabase ${AUTH_DB} -o ${FILEPATH} 21 | tee -a ${PLANFILE} dump_ret${PIPESTATUS[0]} ;; *) if [[ -n ${repl_name} ]];then # 第1级 URI副本集 log_print INFO 副本集配置第1尝试 URI方式备份. ${CMD} --urimongodb://${AUTH}${HOST}:${PORT}/?replicaSet${repl_name}authSource${AUTH_DB} -o ${FILEPATH} 21 | tee -a ${PLANFILE} dump_ret${PIPESTATUS[0]} # 第2级 --host rsname/ip:port 副本集模式 if [[ ${dump_ret} -ne 0 ]];then log_print WARNING URI连接副本集失败第2尝试降级 --host ${repl_name}/${HOST}:${PORT} ${CMD} --host ${repl_name}/${HOST}:${PORT} -u${USERNAME} -p${PASSWORD} --authenticationDatabase ${AUTH_DB} -o ${FILEPATH} 21 | tee -a ${PLANFILE} dump_ret${PIPESTATUS[0]} fi # 第3级兜底单点直连当前节点不再走副本集拓扑发现 if [[ ${dump_ret} -ne 0 ]];then log_print WARNING 副本集拓扑模式全部失败第3兜底单点直连 ${HOST}:${PORT} 备份 ${CMD} --host ${HOST}:${PORT} -u${USERNAME} -p${PASSWORD} --authenticationDatabase ${AUTH_DB} --readPreference secondaryPreferred -o ${FILEPATH} 21 | tee -a ${PLANFILE} dump_ret${PIPESTATUS[0]} fi else log_print INFO 单机配置. ${CMD} --host ${HOST}:${PORT} -u${USERNAME} -p${PASSWORD} --authenticationDatabase ${AUTH_DB} --readPreference secondaryPreferred -o ${FILEPATH} 21 | tee -a ${PLANFILE} dump_ret${PIPESTATUS[0]} fi ;; esac if [[ ${dump_ret} -ne 0 ]];then log_print ERROR mongodump 三级尝试全部失败返回码 ${dump_ret} exit 1 fi log_print INFO mongo备份完成. } # 清理日志旧备份 clear_log(){ local REDUNDANCY2 local BACKPATH$BACKPATH if [[ ! -d ${BACKPATH} ]];then log_print ERROR 备份目录${BACKPATH}不存在跳过清理 return 1 fi local dump_list dump_list$(find ${BACKPATH} -maxdepth 1 -type d -name dump_* | sort) local total_dump total_dump$(echo ${dump_list} | wc -l) if [[ ${total_dump} -gt ${REDUNDANCY} ]];then local threshold_dir threshold_dir$(echo ${dump_list} | tail -n ${REDUNDANCY} | head -n 1) if [[ -n ${threshold_dir} -d ${threshold_dir} ]];then find ${BACKPATH} -maxdepth 1 -type d -name dump_* ! -newer ${threshold_dir} -exec rm -rf {} log_print INFO 清理dump老旧备份完成保留最近${REDUNDANCY}份 fi else log_print INFO dump备份共${total_dump}份未超过保留阈值${REDUNDANCY}无需清理 fi if find ${BACKPATH} -maxdepth 1 -type f -name mongodump_plan_*.log -mtime 10 -delete;then log_print INFO 清理历史mongodump备份日志完成 else log_print WARNING mongodump日志清理异常权限或目录不存在 fi } # 主程序 main(){ color_setting pro_conf back_process clear_log log_print SUCCESS 备份脚本全部执行完成 } ########################### 程序入口 ########################### main $
企业数字化 ERP 产品动态
相关推荐
字节跳动ByteFF2发布:AI极化力场重构药物与新材料研发范式 字节跳动ByteFF2发布:AI极化力场重构药物与新材料研发范式
导语
字节跳动推出AI驱动的极化力场模型ByteFF2(ByteFF-Pol),通过图神经网络与量子力学数据融合,无需实验校准即可实现有机液体和电解质的高精度模拟&#… · 2026/11/3 1:43:16
【数据治理(7)】安全与隐私:把“不能做”变成系统真正执行的边界 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 2:19:23
【算法四】从前序和中序遍历构造二叉树 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 2:19:23
【数据治理(6)】DataOps 不是调度工具,而是让数据产品长期可信的运行机制 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 2:19:23
理解 GC Roots:对象为什么不能被回收 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 2:19:23
【数据治理(2)】数据工程生命周期:从数据产生到价值实现的判断框架 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 2:19:23
3 分钟看懂 Debezium:数据库变更捕获怎么做到毫秒级、不动业务库 3 分钟看懂 Debezium:数据库变更捕获怎么做到毫秒级、不动业务库 【免费下载链接】debezium Change data capture for a variety of databases. Please log issues at https://github.com/debezium/dbz/issues. 项目地址: https://gitcode.com/gh_mirrors/de/debe… · 2026/11/3 2:18:22
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 4:42:45
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 5:17:18
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 4:42:45
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 5:17:18