最近需要对部署在ubuntu上的MongoDB数据库中的数据进行备份,一接到该需求,心里就是想只能用shell等脚本语言才能实现该功能。
于是根据自身实际问题整理出了一些解决方案:
-
一、创建存储MongoDB数据库备份的文件
-
mkdir -p mnt/user1/data/program/mongodb_bak_now mkdir -p /mnt/user1/data/program/mongodb_bak_list
二、shell脚本
-
1、创建shell等脚本
-
cd /usr/data_bak/mongo_bak vim mongodb_dump.sh
2、对刚刚创建的shell脚本进行内容编辑
-
# !/bin/bash # backup MongoDB #mongodump命令路径 DUMP=/mnt/user1/data/program/mongodb/bin/mongodump #临时备份目录 OUT_DIR=/mnt/user1/data/program/mongodb_bak_now #备份存放路径 TAR_DIR=/mnt/user1/data/program/mongodb_bak_list #获取当前系统时间 DATE=`date +%Y_%m_%d` #数据库账号 DB_USER="" #数据库密码 DB_PASS="" #DAYS=150 代表删除150天前的备份,即只保留近15天的备份 DAYS=150 #最终保存的数据库备份文件 TAR_BAK="mongodb_bak_$DATE.tar.gz" cd $OUT_DIR rm -rf $OUT_DIR/* mkdir -p $OUT_DIR/$DATE $DUMP -o $OUT_DIR/$DATE #压缩格式为 .tar.gz 格式 tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE #删除 150 天前的备份文件 find $TAR_DIR/ -mtime +$DAYS -delete exit
3、对编辑好的shell脚本赋予权限操作
-
chmod 777 mongodb_dump.sh
-
-
三、添加定时任务,执行上述shell脚本内容
-
1、添加定时任务
-
vim /etc/crontab
-
在crontab文件中末尾添加新的定时任务,用于执行MongoDB自动备份
30 12 * * * root /usr/data_bak/mongodb_bak/mongodb_dump.sh
以上表示每天12:30执行具体目录下的MongoDB自动备份shell脚本
-
-
四、重启定时服务
-
sudo service cron status sudo service cron restart
如上述定时任务没有执行,可查看cron日志进行问题排查
ubuntu 中cron运行日志默认是关闭的,因此需要进入默认配置文件中将配置打开
sudo vim /etc/rsyslog.d/50-default.conf
找到这行,将前面注释符#去掉,保存退出
# 重启rsyslog
sudo service rsyslog restart
# 查看cron运行日志信息
vim /var/log/cron.log