MongoDB 数据定时备份

数据的安全性至关重要,由于一些不可预测的故障,如突然断电、断网等,数据可能会丢失。这就要求我们定时备份数据。

这里记录如何用 crontab 定时任务,每天定时备份 MongoDB 的数据到另一台服务器。

shell 脚本

mongodb_bak.sh:

#!/bin/sh
DUMP=/home/jochen/mongodb/bin/mongodump             # mongodump备份文件执行路径
OUT_DIR=/home/jochen/mongodb_bak/mongodb_bak_now    # 临时备份目录
TAR_DIR=/home/jochen/mongodb_bak/mongodb_bak_list   # 备份存放路径
DATE=`date -d "today" +"%Y-%m-%d-%H-%M-%S"`         # 获取当前系统时间,作为文件名的一部分
DAYS=7                                              # DAYS=7代表删除7天前的备份, 即只保留最近7天的备份
TAR_BAK="mongodb_bak_$DATE.tar.gz"                  # 最终保存的数据库备份文件名
cd $OUT_DIR
rm -rf $OUT_DIR/
mkdir -p $OUT_DIR/$DATE
mkdir -p $TAR_DIR/
$DUMP -o $OUT_DIR/$DATE                             # 备份全部数据库
tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE          # 压缩为.tar.gz格式
find $TAR_DIR/ -mtime +$DAYS -delete                # 删除7天前的备份文件
scp $TAR_DIR/$TAR_BAK jochen@123.123.123.123:/home/jochen/mongodb_bak/$TAR_BAK  # 通过 scp 发送至另一台服务器

crontab 定时任务

利用 linux 系统自带的 crontab 定时任务,每天定时执行以上脚本。

新建定时任务:

$ crontab -e

在最后一行写上:

# 每日凌晨3点,执行相应脚本
* 3 * * * /home/jochen/mongodb_bak.sh > /dev/null &
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值