mongodb定时备份

window系统数据库备份

在window下创建创建后缀bat的文件,将下面内容添加去。

rem ******Mongodb backup start******
@echo off

rem set:等号两边不要有空格;变量值包含特殊字符需用双引号
rem dump命令执行路径,根据mongodb安装路径而定
set DUMP=D:PTYTMongoDBServer3.6in
rem 压缩工具对应路径及信息
set "TAR_CMD=D:PTYT7-Zip7z.exe a"
rem 临时备份路径
set OUT_DIR=D:PTYTackupmongodbak_tmp
rem 压缩后的备份存放路径
set TAR_DIR=D:PTYTackupmongodbak_list
rem 需要备份的数据库
set DB_NAME=ucpdb
rem 数据库账号
set DB_USER=ptyt
rem 数据库密码
set DB_PASS=111111
rem 代表删除DAYS(天)前的备份,即只保留近 DAYS(天)的备份
set DAYS=10

rem 自动获取日期信息生成
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%"
rem 最终保存的数据库备份文件
set TAR_BAK="%TAR_DIR%\%Ymd%.7z"

rem 清空临时备份路径下内容
rd /s /q %OUT_DIR%

rem 进入mongodump所在路径执行dump命令
cd /D %DUMP%
mongodump -h 127.0.0.1:27017 -u %DB_USER% -p %DB_PASS% -d %DB_NAME% -o %OUT_DIR%\%Ymd%

rem 打包备份数据以减少空间占用
%TAR_CMD% %TAR_BAK% %OUT_DIR%\%Ymd%

rem 删除DAYS(天)前的备份文件
Forfiles /p %TAR_DIR% /s /d -%DAYS% /m *.* /c "cmd /c del /q /f @path"

@echo on
rem ******Mongodb backup end******

用window自带计划任务,设置定时任务。

Linux系统备份:可以在window下配置好sh后缀的文件,或者使用touch命令创建

#!/bin/sh
# dump 命令执行路径,根据mongodb安装路径而定
DUMP=/root/PTYT/mongodb/bin/mongodump
# 临时备份路径
OUT_DIR=/root/PTYT/backup/mongodb/bak_tmp
# 压缩后的备份存放路径
TAR_DIR=/root/PTYT/backup/mongodb/bak_list
# 当前系统时间
DATE=`date +%Y-%m-%d`
#需要备份的数据库
DB_NAME=ucpdb
# 数据库账号
DB_USER=root
# 数据库密码
DB_PASS=111111
# 代表删除DAYS天前的备份,即只保留近DAYS天的备份
DAYS=10
# 最终保存的数据库备份文件
TAR_BAK="mongod_bak_$DATE.tar.gz"
cd $OUT_DIR
rm -rf $OUT_DIR/*
mkdir -p $OUT_DIR/$DATE
$DUMP -h 127.0.0.1:27017 -u $DB_USER -p $DB_PASS -d $DB_NAME -o $OUT_DIR/$DATE
# 压缩格式为 .tar.gz 格式
tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE
# 删除DAYS天前的备份文件
find $TAR_DIR/ -mtime +$DAYS -delete

exit

 

一、确认脚本配置相关处理正常

修改完成后,先通过直接执行mongodb_bak.sh确认脚本配置等正常,如执行正常应在对应目录生成对应备份。

以下为执行成功结果示例:

 

二、添加计划任务执行

1、简介

Linux crontab是用来定期执行程序的命令。

当安装完成操作系统之后,默认便会启动此任务调度命令。

crond 命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

注意:新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行。

linux 任务调度的工作主要分为以下两类:

1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存

2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置

2、命令说明

语法crontab {-l | -e | -r}

-l : 列出目前的时程表

-e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI。

-r : 删除目前的时程表

3、文件含义

用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

minute hour day month week command

其中:

minute:表示分钟,可以是从0到59之间的任何整数。

hour:表示小时,可以是从0到23之间的任何整数。

day:表示日期,可以是从1到31之间的任何整数。

month:表示月份,可以是从1到12之间的任何整数,或jan,febmar,apr ……

week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日,或sun,mon,tue……

command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

如忘记以上具体信息可通过cat /etc/crontab查看。

在以上各个字段中,还可以使用以下特殊字符:

星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”

中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”

正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

三、编辑定时执行脚本测试确认

1、输入crontab -e,然后输入i进入编辑模式,添加对应定时执行命令。

具体现场操作时建议先设定一个当前时间往后几分钟的时间进行计划执行,如笔者处理时间为15:50,所以笔者特意将定时时间设定为15:55,这样方便很快检查执行效果。插入内容为:55 15 * * * /root/PTYT/mongodb/mongodb_bak.sh

编辑完按常规的文本编辑退出保存处理(Esc退出编辑模式,输入:进入命令模式,输入wq!保存退出)。

2、执行crontab -l查看确认编辑好的crontab定时任务。

如下所示为成功添加了一条15:55即执行/root/PTYT/mongodb/mongodb_bak.sh的任务:

 

3、等设定的时间到后确认备份目录按时生成新的备份数据

如果在前面确认脚本配置相关处理中已生成过备份,需留意下新的备份数据是否设定时间之后更新的。

以下确认为定时执行时间15:55生成的备份示例:

 

至此,已确认基本的定时执行及脚本都正常成功。

四、编辑计划任务及确认

1、输入crontab -e,重新进入编辑模式,修改原测试执行时间为计划执行时间保存退出。

如每天凌晨3:30执行/root/PTYT/mongodb/mongodb_bak.sh则按如下设置:

30 3 * * * /root/PTYT/mongodb/mongodb_bak.sh

如每周一凌晨3:30执行/root/PTYT/mongodb/mongodb_bak.sh则按如下设置:

30 3 * * 1 /root/PTYT/mongodb/mongodb_bak.sh

或如下等价设置也可:

30 3 * * mon /root/PTYT/mongodb/mongodb_bak.sh

2、执行crontab -l确认配置好的crontab定时任务与预期相符。

如下示例表示已将相关定时任务修改为每天凌晨3:30:

至此相关处理基本完成,定时任务能否按时生效不能马上确认,建议待第一个执行时间到后再另行回头确认下是否与预期设定相符。

原文地址:https://www.cnblogs.com/pzm-1024/p/15503679.html