工具参考:

MongoDB 逻辑备份工具mongodump


1、创建备份目录

[root@localhost data]# mkdir -p /data/backup/mongo/mongodb_bak_tmp
[root@localhost data]# mkdir -p /data/backup/mongo/mongodb_bak_path

2、创建MongoDB备份shell脚本

复制代码
#!/bin/bash
# @Author: Tse先生
# @Create date: 2019-11-21
# @full backup MongoDB
  
#mongodump命令路径
DUMP=/usr/local/mongodb/bin/mongodump
#tar备份包临时备份目录,这个tar包最好定时传到本地存储做备份
OUT_DIR=/data/backup/mongo/mongodb_bak_tmp
#完整备份目录路径
TAR_DIR=/data/backup/mongo/mongodb_bak_path
#获取当前系统时间
DATE=`date +%Y_%m_%d_%H_%M`
#数据库账号
DB_USER=root
#数据库密码
DB_PASS=123456
#DAYS=15代表删除15天前的备份,即只保留近15天的备份
DAYS=15
#最终保存的数据库备份文件
TAR_BAK="mongodb_bak_$DATE.tar.gz"
  
cd $OUT_DIR
#rm -rf $OUT_DIR/*
mkdir -p $OUT_DIR/$DATE
#备份全部数据库
$DUMP -h 127.0.0.1:3717 -u $DB_USER -p $DB_PASS --authenticationDatabase "admin" -o $OUT_DIR/$DATE
#压缩为.tar.gz格式
tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE
#删除15天前的备份文件
find $TAR_DIR/ -mtime +$DAYS -delete
#删除tar备份包10天前的备份文件
find $OUT_DIR/ -mtime +10 -name "*.tar.gz" -exec rm -rf {} \;
exit
复制代码

3、添加文件为可执行权限

[root@localhost script]# chmod +x mongodbfullbackup.sh

4、添加定时计划任务(设置每天晚上3点定时完整备份)

[root@localhost script]# crontab -e
#每天凌晨3点开始执行MongoDB完整备份脚本
0 3 * * *  sh  /data/script/mongodbfullbackup.sh    >/dev/null 2>&1

关于需要修改crontab的定时任务时间的,可以参考:

https://www.cnblogs.com/Sungeek/p/9561833.html

5、MongoDB数据库恢复说明

#恢复单个库:
/usr/local/mongodb/bin/mongorestore  --host 127.0.0.1 --port 3717 --authenticationDatabase admin --username root --password 123456  --drop  --stopOnError  --db local  /tmp/2019_11_21_14_57/local

#恢复所有库:
/usr/local/mongodb/bin/mongorestore  --host 127.0.0.1 --port 3717 --authenticationDatabase admin --username root --password 123456  --drop  --stopOnError  /tmp/2019_11_21_14_57

参数说明:

  • --authenticationDatabase admin:验证库,也就验证你账号密码的
  • --drop:恢复数据之前删除原来的数据,避免数据重复
  • --stopOnError:恢复时候遇到错误就停止
  • --db:恢复单个库的时候,后面加库名
posted on 2021-03-06 17:11  宇宙超级无敌无敌小明  阅读(158)  评论(0编辑  收藏  举报