Linux下MongDB定时备份方案-备份MONGO数据并设置定时
1:先安装crontabs
yum install crontabs
2:创建备份mongo数据的shell脚本
1、创建shell文件
touch duplicate.sh
2、编辑shell
有密码的mongo:
#!/bin/bash
#mongodump命令路径 设置了全局就可以不设置这个,将安装包中的mongodump 移动到/usr/local/bin路径下即可。
DUMP=/usr/local/bin/mongodump
#tar备份包临时备份目录
OUT_DIR=/data/backup/mongo/mongodb_bak_tmp/dev
#压缩后完整备份路径
#TAR_DIR=/data/backup/mongo/mongodb_bak_path
#创建临时备份路径
mkdir -p $OUT_DIR
#创建压缩包保存路径
#mkdir -p $TAR_DIR
#获取当前系统时间
DATE=`date +%Y_%m_%d_%H_%M`
#数据库账号,存在特殊字符的必须带引号
DB_USER='root'
#数据库密码
DB_PASS=123456
#代表删除3天前的备份,即只保留近3天的备份
DAYS=3
#最终保存的数据库备份文件
TAR_BAK="mongodb_bak_$DATE.tar.gz"
cd $OUT_DIR
#rm -rf $OUT_DIR/*
mkdir -p $OUT_DIR/$DATE
#删除3天前的备份文件
find ./ -maxdepth 1 -mtime +$DAYS -name "*" -exec rm -rf {} \;
#备份全部数据admin,注:如果要使用corntab做定时任务,这里必须设置为绝对路径,不能使用mongodump
#mongodump -h 127.0.0.1:27017 -u $DB_USER -p $DB_PASS --authenticationDatabase "admin" -o $OUT_DIR/$DATE
$DUMP -h 127.0.0.1:27017 -u $DB_USER -p $DB_PASS --authenticationDatabase "admin" -o $OUT_DIR/$DATE > $OUT_DIR/$DATE/backup.log 2>&1
#压缩为.tar.gz 格式
#tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE
#删除tar3天前的备份文件
#find $OUT_DIR/ -mtime +$DAYS -delete
exit
无密码的mongo:
#!/bin/bash
#mongodump命令路径 设置了全局就可以不设置这个,将安装包中的mongodump 移动到/usr/local/bin路径下即可。
DUMP=/usr/local/bin/mongodump
#tar备份包临时备份目录
OUT_DIR=/data/backup/mongo/mongodb_bak_tmp/dev
#压缩后完整备份路径
#TAR_DIR=/data/backup/mongo/mongodb_bak_path
#创建临时备份路径
mkdir -p $OUT_DIR
#创建压缩包保存路径
#mkdir -p $TAR_DIR
#获取当前系统时间
DATE=`date +%Y_%m_%d_%H_%M`
#代表删除3天前的备份,即只保留近3天的备份
DAYS=3
#最终保存的数据库备份文件
TAR_BAK="mongodb_bak_$DATE.tar.gz"
cd $OUT_DIR
#rm -rf $OUT_DIR/*
mkdir -p $OUT_DIR/$DATE
#删除3天前的备份文件
find ./ -maxdepth 1 -mtime +$DAYS -name "*" -exec rm -rf {} \;
#备份全部数据admin,注:如果要使用corntab做定时任务,这里必须设置为绝对路径,不能使用mongodump
$DUMP-h 127.0.0.1:27017 -d admin-o $OUT_DIR/$DATE > $OUT_DIR/$DATE/backup.log 2>&1
#压缩为.tar.gz 格式
#tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE
#删除tar3天前的备份文件
#find $OUT_DIR/ -mtime +$DAYS -delete
exit
mongodump 是使用来备份mongoDB数据,mongodump命令可以通过参数指定导出的数据量级转存的服务器。
语法
mongodump命令脚本语法如下:
mongodump -h dbhost -d dbname -o dbdirectory
- h:
MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017 - d:
需要备份的数据库实例,例如:test - o:
备份的数据存放位置,例如:c:\data\dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。
3:添加文件为可执行权限
chmod +x duplicate.sh
4:添加定时计划任务(设置每天晚上1点定时完整备份)两种方式
第一个数值代表分钟,第二个代表小时,第三个代表日期,第四个代表月份,第五个代表星期。
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
方式一、
vi /etc/crontab
# 每周六18:30进行备份
30 18 * * 6 /data/backup/duplicate.sh
方式二、在crontab -e 上设置定时任务
[root@localhost /]# crontab -e
#每天凌晨3点开始执行MongoDB完整备份脚本
0 1 * * * sh /data/backup/duplicate.sh >/dev/null 2>&1
5:修改并执行crontab
service crond reload
service crond start
6:查看备份文件是否生成
使用crontab 进行定时的时候,脚本执行成功会发送邮件,可以使用下面的语句查看
vim /var/spool/mail/root
查看任务列表
# 查看任务列表
crontab -l
# 查看日志
tail -f /var/log/cron