1.创建bash文件
如下脚本转载自:link
假设保存文件到 /var/server/mongodb/backup.sh
假设备份工具路径是 /var/server/mongodb/bin/mongodump 如下是脚本:
#!/bin/sh
DB_HOST="127.0.0.1"
DB_NAME="dbname"
OUT_DIR="/data/backup/mongod_bak/mongod_bak_now" #临时备份目录
TAR_DIR="/data/backup/mongod_bak/mongod_bak_list" #备份存放路径
DATE=$(date +%Y_%m_%d) #获取当前系统时间
echo "-----当前时间为$DATE-----"
DAYS=7 #DAYS=7代表删除7天前的备份,即只保留最近7天的备份
TAR_BAK="mongod_bak_$DATE.tar.gz" #最终保存的数据库备份文件名
cd $OUT_DIR
echo "-----删除原有备份文件-----"
find $OUT_DIR/ -print
rm -rf $OUT_DIR/*
mkdir -p $OUT_DIR/$DATE
echo "-----开始备份全部数据库-----"
/var/server/mongodb/bin/mongodump -h $DB_HOST -u xxxx -p xxxxx -o $OUT_DIR/$DATE #备份全部数据库,具体可以参照: mongodump --help
echo "-----开始压缩备份文件-----"
tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE #压缩为.tar.gz格式
echo "-----删除7天前的备份文件-----"
find $TAR_DIR/ -mtime +$DAYS -delete #删除7天前的备份文件
2.添加到crontab
执行如下命令:
crontab -e
假设设置为凌晨2:30来备份:
30 2 * * * /var/server/mongodb/backup.sh >> /data/backup/mongod/logs/backup.log 2>&1
注意点:
1.备份的账号需要有 dbAdminAnyDatabase 和 backup 角色权限;
2.客户端和服务端版本相差多了,比如大版本不同可能会有问题,那么下载同一个大版本的客户端通常能搞定;
3.使用前测试好计划任务是否能够正确执行;
寻找对应版本,如linux下mongodb3.X版本,可以从从官网下载源码 link
如:
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.7.tgz
解压后可以使用对应的 mongodump 即可;
配置完成!