定时脚本备份mongo数据库

//部分有借鉴,如有侵权,请通知,立即删除

shell脚本执行定时备份mongo数据库:

1、简单例子:

新建文件:

vim hello.sh

编辑此文件:

#!/bin/bash
echo "hello world"

给文件赋予权限:

chomd 755 hello.sh

执行文件:


./hello.sh

2、定时任务

linux安装crontab:


yum install vixie-cron
yum install crontab
//vixie-cron软件包是cron的主程序
//crontabs软件包用来安装,卸载或列举用来驱动cron守护进程的表格的程序

启动crontab服务:


service crond start//启动服务
service crond stop //关闭服务
service crond restart//重启服务
service crond reload //重新载入配置
service crond status //查看crontab服务状态

设置需要执行的脚本:

新增调度任务可用两种方法:

1、在命令行输入:crontab -e 然后添加相应的任务,wq存盘退出;

2、直接编辑/etc/crontab文件,即vi/etc/crontab,添加相应的任务

两种方法的区别:第一种是针对某个用户的;第二种是针对系统的任务。

查看调度任务:


crontab -l //列出当前的所有调度任务
crontab -l -u jp //列出用户jp的所有调度任务
删除任务调度工作
crontab -r //删除所有任务调度工作

编辑/etc/crontab的文件内容如下:

前四行是cron任务运行的环境变量:

SHELL变量的值指定系统使用的SHELL环境(该样例为bash shell),
PATH变量定义了执行命令的路径。Cron的输出以电子邮件的形式发给MAILTO变量定义的用户名。
如果MAILTO变量定义为空字符串(MAILTO=""),电子邮件不会被发送。
执行命令或脚本时HOME变量可用来设置基目录。

文件/etc/crontab中每行任务的描述格式如下:

minute hour day month dayofweek command
minute - 从0到59的整数
hour - 从0到23的整数
day - 从1到31的整数 (必须是指定月份的有效日期)
month - 从1到12的整数 (或如Jan或Feb简写的月份)
dayofweek - 从0到7的整数,0或7用来描述周日 (或用Sun或Mon简写来表示)
command - 需要执行的命令(可用as ls /proc >> /tmp/proc或 执行自定义脚本的命令)
root表示以root用户身份来运行
run-parts表示后面跟着的是一个文件夹,要执行的是该文件夹下的所有脚本
对于以上各语句,星号(*)表示所有可用的值。例如*在指代month时表示每月执行(需要符合其他限制条件)该命令。
整数间的连字号(-)表示整数列,例如1-4意思是整数1,2,3,4
指定数值由逗号分开。如:3,4,6,8表示这四个指定整数。

符号“/”指定步进设置。“/<interger>”表示步进值。如0-59/2定义每两分钟执行一次。步进值也可用星号表示。如*/3用来运行每三个月份运行指定任务。

以“#”开头的为注释行,不会被执行。
比如上述图中 执行的是每隔一分钟执行一半hello.sh脚本 上边脚本输出的内容 大家也知道   >> 符号 指定文件获取内容的存放位置

3、真正执行:

编写脚本:


#!/bin/bash
# dump命令路径
DUMP=/root/mongo/mongodb-linux-x86_64-rhel62-4.2.3/bin/mongodump
# 备份路径
OUT_DIR=/root/mongo/backupMG
# 当前系统时间
DATE=`date +%Y_%m_%d`
echo $DATE
#数据库名称
DB_NAME=data
sudo mkdir -p $OUT_DIR/$DATE
$DUMP -h 127.0.0.1:27017 -d $DB_NAME -o $OUT_DIR/$DATE
exit

添加定时任务:


[root@csmserver mongo]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
0 10 * * * root /root/mongo/backupMongo.sh

0 10 * * * root /root/mongo/backupMongo.sh//每天十点执行定时任务

猜你喜欢

转载自www.cnblogs.com/notchangeworld/p/12533939.html