使用crontab 对docker下的mongoDB数据定时备份

定时备份 MongoDB数据

环境:

我做备份的环境是 linux 4.19 64位、docker 19、Mongo:4.2.3

crontab:
crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρ?νο?),原意是时间。通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。
1.创建存放备份文件目录

mkdir -p mnt/mongo_bak

2.创建Mongo定时备份脚本

mkdir -p home/crontab #创建文件夹

touch mongod_bak.sh #创建文件

在创建的mongod_bak.sh文件下加入以下内容:(这个时候就会用到 vi 命令,当时做备份的时候,要被搞疯了,这里推荐一个博客链接: vi命令详解.)

#!/bin/bash
# 容器名叫Mongo
# 时间, 做文件名用
dd=`date +%Y-%m-%d`
# 备份到容器的 /mnt/cdrom/mongo_bak/$dd文件夹
docker exec  Mongo mongodump   -o /mnt/cdrom/mongo_bak/$dd
# 复制到宿主机的/mnt/mongo_bak/$dd
docker cp Mongo:/mnt/cdrom/mongo_bak/$dd /mnt/mongo_bak/$dd
# 删除docker中的备份数据
docker exec  Mongo rm -rf /mnt/cdrom/mongo_bak/*
3.修改文件属性,使其可执行

chmod +x /home/crontab/mongod_bak.sh

4.修改/etc/crontab 添加计划任务

crontab -e #编辑定时任务文件

然后在文件下加入以下内容:
30 12 * * * sudo /home/crontab/mongod_bak.sh #表示每天12点30执行备份

使用crontab 对docker下的mongoDB数据定时备份_第1张图片
在编辑crontab的定时任务文件时,保存退出跟vi是不一样的,先Ctrl+O 【写入】,Ctrl+M【保存】,Ctrl+X【退出】

5.重新启动crond使设置生效

/sbin/service cron reload #重新载入配置 /sbin/service cron start #启动服务
crontab -l #列出crontab文件

每天在/mnt/mongod_bak目录下面可以看到 2020-10-19 这样的文件。我这里没处理压缩,想要压缩在备份脚本中加上即可。至此,Linux下自动备份Mongodb数据库并删除指定天数前的备份完成。

你可能感兴趣的:(crontab,linux,mongodb)