最近怼一个老项目,需要做MongoDB的备份,就找了一下脚本,大家可以参考一下。

备份脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/bin/bash  
sourcepath=''
targetpath='/home/ubuntu/backup_db'
# 改成你自己的备份目录
nowtime=$(date +%Y%m%d)

start()
{
${sourcepath}mongodump --host 127.0.0.1 --port 27017 --out ${targetpath}/${nowtime}
# 备份 127.0.0.1:27017 的整个MongoDB数据库
# 输出到目标目录下的当前日期目录
# 如:/backup_db/20171003/
}
execute()
{
start
if [ $? -eq 0 ]
then
echo "back successfully!"
else
echo "back failure!"
fi
}

if [ ! -d "${targetpath}/${nowtime}/" ]
then
mkdir ${targetpath}/${nowtime}
fi
execute
echo "============== back end ${nowtime} =============="

使用前记得改一下脚本里面的参数,按照需求调整目录

删除过期备份

1
2
3
4
5
6
7
8
9
#!/bin/bash  
targetpath='/home/ubuntu/backup_db'
nowtime=$(date -d '-7 days' "+%Y%m%d")
if [ -d "${targetpath}/${nowtime}/" ]
then
rm -rf "${targetpath}/${nowtime}/"
echo "=======${targetpath}/${nowtime}/===删除完毕=="
fi
echo "===$nowtime ==="

哈哈,只是把命令改成 rm -rf 了而已。记得按照需求调整参数里面的目录

自动备份和删除备份

不得不说我们的主角 crontab -e

Cron 可以实现定时任务的功能。

1
2
10 04 * * * /home/ubuntu/cron-shell/mongobak 1 > /var/log/cron/crontab_mongo_back.log &
10 02 * * * /home/ubuntu/cron-shell/mongobak_delete 1 > /var/log/cron/crontab_mongo_delete.log &

半夜三更的时候,定时任务就会执行 mongobakmongobak_delete 两个脚本啦~

并且两个脚本的输出也会保存到 /var/log/cron/ 的日志文件里面,方便你后期检查。

上面的命令请根据实际需要调整喔

除非注明,麦麦小家文章均为原创,转载请以链接形式标明本文地址。

版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)

本文地址:https://blog.micblo.com/2017/10/03/MongoDB%E8%87%AA%E5%8A%A8%E5%A4%87%E4%BB%BD%E5%B0%8F%E8%84%9A%E6%9C%AC/