Linux下MongDB定时备份方案-备份MONGO数据并设置定时

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
  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值