数据对我们现在应用系统越来越重要,这就驱使我们必须去做的一件事就是冗余备份,保证数据的完整性和可恢复性。既然如此重要,我们就必须去备份,但如果手动去做的话,不仅浪费时间,也可能导致数据丢失。最好的方式当然是自动实现备份,本次主要说mongodb数据库的自动备份。
实现思路:
1)创建备份文件存放的文件夹
2)编译脚本实现备份
3)设置定时任务实现定时备份
1、创建mongodb备份目录
mkdir -p /mongodb/data/mongodb_bak/mongodb/data/mongodb_bak (临时备份文件存放地址)
mkdir -p /mongodb/data/mongodb_bak/mongodb/data/mongodb_list (备份文件存放地址)
2、新建mongodb数据库备份脚本
1. #!/bin/bash
2. #backup MongoDB
3.
4. #mongodump命令路径
5. DUMP=/usr/local/mongodb/bin/mongodump
6. #临时备份目录
7. OUT_DIR=/mongodb/data/mongodb_bak/mongodb_bak_now
8. #备份存放路径
9. TAR_DIR=/mongodb/data/mongodb_bak/mongodb_bak_list
10. #获取当前系统时间
11. DATE=`date +%Y_%m_%d`
12. #数据库账号
13. DB_USER=user
14. #数据库密码
15. DB_PASS=123
16. #DAYS=15代表删除15天前的备份,即只保留近15天的备份
17. DAYS=15
18. #最终保存的数据库备份文件
19. TAR_BAK="mongodb_bak_$DATE.tar.gz"
20.
21. cd $OUT_DIR
22. rm -rf $OUT_DIR/*
23. mkdir -p $OUT_DIR/$DATE
24. #备份全部数据库
25. $DUMP -h 15.62.32.112:27017 -u $DB_USER -p $DB_PASS --authenticationDatabase "admin" -o $OUT_DIR/$DATE
26. #压缩为.tar.gz格式
27. tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE
28. #删除15天前的备份文件
29. find $TAR_DIR/ -mtime +$DAYS -delete
30.
31. exit
3、修改文件属性
chmod +x mongoDB_bak.sh
4、修改/etc/crontab,添加定时任务
vi /etc/crontab
#每星期六晚上0:0开始执行MongoDB数据库备份脚本
0 0 * * 6 root /mongodb/data/mongodb_bak/mongoDB_bak.sh