Linux下shell脚本实现mongodb定时自动备份

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。html

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。mongodb

它支持的数据结构很是松散,是相似json的bson格式,所以能够存储比较复杂的数据类型。shell

Mongo最大的特色是它支持的查询语言很是强大,其语法有点相似于面向对象的查询语言,几乎能够实现相似关系数据库单表查询的绝大部分功能,并且还支持对数据创建索引。数据库

 

一、建立备份目录

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

二、建立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

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

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

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

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

关于须要修改crontab的定时任务时间的,能够参考博主另一篇随笔文章说明:json

http://www.javashuo.com/article/p-rmovnffl-m.htmlbash

五、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:恢复单个库的时候,后面加库名
相关文章
相关标签/搜索