定时脚本备份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

添加权限:

chmod -X mongodb.sh(chmod +x mongodb.sh)

添加定时任务:


[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//每天十点执行定时任务

mongo的备份以及导入功能:

1、导出工具:mongoexport

mongoexport -h host -u username -p password -d dbname -c Collection -o /filePath.filename -type json/csv -f "field"
-h :要导出的数据库主机地址
-u :数据库用户名,没有可以不写
-p :数据库密码,没有可以不写
-d : 导出的数据库名
-c :导出的集合collection名
-o :导出到的文件路径文件名
-type :导出的类型:json 或者csv 如果是CSV格式,需要指定-f字段参数
-f :字段参数,要导出集合的字段名,也就是要导出那些列
-q :指出导出数据的过滤条件

2、导入工具:mongoimport

mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv -f field --upsert

-d :数据库名
-c :collection名
--type :导入的格式默认json
-f :导入的字段名
--headerline :如果导入的格式是csv,则可以使用第一行的标题作为导入的字段
--file :要导入的文件
--upsert : 新增或者更新的方式导入数据库

3、备份工具

mongodump -h dbhost -d dbname -o dbdirectory
-h: MongDB所在服务器地址,
-d: 需要备份的数据库实例,
-o: 备份的数据存放位置,


mongo具有用户名和密码
mongodump -h localhost -d article -o dbdirectory  -u=root -p=123456 --authenticationDatabase admin
-h 地址
-d 数据库名称
-u 用户名
-p 密码
-o 输出地址
--authenticationDatabase admin 验证账户的数据库

4、数据库恢复

 mongorestore -h dbhost -d dbname --dir dbdirectory
-h: MongoDB所在服务器地址
-d: 需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2
--dir: 备份数据所在位置,例如:/home/mongodump/itcast/
--drop: 恢复的时候,先删除当前数据,然后恢复备份的数据。

 

posted @ 2020-03-20 18:59  忧伤还是快乐EL  阅读(364)  评论(0编辑  收藏  举报