一.定期备份脚本
在Mongodb中我们使用mongodump命令来备份MongoDB数据。该命令可以导出所有数据到指定目录中。
mongodump命令可以通过参数指定导出的数据量级转存的服务器。
>mongodump -h dbhost -d dbname -o dbdirectory
参数解释:
-h:
MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
-d:
需要备份的数据库实例,例如:test
-o:
备份的数据存放位置,例如:c:\data\dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。
以下是定期备份的脚本
#!/bin/sh
# dump 命令执行路径,根据mongodb安装路径而定
DUMP=/usr/bin/mongodump
# 临时备份路径
OUT_DIR=/home/backup/mongod_bak/mongod_bak_now
# 压缩后的备份存放路径
TAR_DIR=/home/backup/mongod_bak/mongod_bak_list
# 当前系统时间
DATE=`date +%Y-%m-%d`
#需要备份的数据库
DB_NAME=数据库名称
# 数据库账号
DB_USER=数据库账号
# 数据库密码
DB_PASS=数据库密码
# 代表删除15天前的备份,即只保留近 15 天的备份
DAYS=15
# 最终保存的数据库备份文件
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
# 删除 15 天前的备份文件
find $TAR_DIR/ -mtime +$DAYS -delete
exit
脚本解释:
# dump 命令执行路径,根据mongodb安装路径而定
DUMP=/usr/bin/mongodump
# 临时备份路径
OUT_DIR=/home/backup/mongod_bak/mongod_bak_now
# 压缩后的备份存放路径
TAR_DIR=/home/backup/mongod_bak/mongod_bak_list
二.Linux中使用crontab命令启用自定义定时任务
所有用户crontab文件都存放在 /var/spool/cron/ 目录下,以用户名命名。其中每一行都代表一项任务,每行的每个字段代表一项配置,它的格式一共分为六个字段,前五段是时间设置段,第六段是要执行的命令段,格式如下:
minute hour day month week command
-
minute: 表示分钟,可以是从0到59之间的任何整数
-
hour:表示小时,可以是从0到23之间的任何整数
-
day:表示日期,可以是从1到31之间的任何整数
-
month:表示月份,可以是从1到12之间的任何整数
-
week:表示星期,可以是从0到7之间的任何整数,这里的0或7代表星期日
-
command:表示需要执行的命令,可以是系统命令,也可以是自己编写的脚本文件
在以上各个字段中,还可以使用以下特殊字符:
-
* 代表所有可能的值,例如:如果month字段是星号,则表示在满足其它字段的约束条件后每月都执行该命令
-
, 用逗号隔开的值表示一个范围列表,例如:如果minute字段的值是“1,3,15”,则表示每小时的第1分钟、第3分钟和第15分钟都执行该命令
-
– 可以用整数之间的 – 表示一个整数范围,例如:如果day字段的值是“2-6”,则表示每月的第2天到底6天都执行该命令
-
/ 可以用斜线表示命令的执行频率,例如:如果minute字段的值是“*/10”,则表示每十分钟执行一次命令
三.其他(一个定时任务实例)
某台服务器每10分钟向192.168.1.2进行时间同步:
[root@web01 cron]# vim /var/spool/cron/root
添加以下内容:
0-59/10 * * * * /usr/sbin/ntpdate -s 192.168.1.2
从上面的介绍可以知道,这句代码的意思是:从0到59分这个时间段每10分钟都执行时间同步命令,其时间同步服务器是192.168.1.2
四 一些其他实例
实例1:每1分钟执行一次command
命令:
* * * * * command
实例2:每小时的第3和第15分钟执行
命令:
3,15 * * * * command
实例3:在上午8点到11点的第3和第15分钟执行
命令:
3,15 8-11 * * * command
实例4:每两天的上午8点到11点的第3和第15分钟执行
命令:
3,15 8-11 */2 * * command
实例5:每个星期一的上午8点到11点的第3和第15分钟执行
命令:
3,15 8-11 * * 1 command
实例6:每晚的21:30重启smb
命令:
30 21 * * * /etc/init.d/smb restart
实例7:每月1、10、22日的4 : 45重启smb
命令:
45 4 1,10,22 * * /etc/init.d/smb restart
实例8:每周六、周日的1 : 10重启smb
命令:
10 1 * * 6,0 /etc/init.d/smb restart
实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb
命令:
0,30 18-23 * * * /etc/init.d/smb restart
实例10:每星期六的晚上11 : 00 pm重启smb
命令:
0 23 * * 6 /etc/init.d/smb restart