mongo数据定时导入mysql_定时脚本备份mongo数据库

本文详细介绍了如何在Linux系统中使用shell脚本进行MongoDB数据库的备份和恢复操作,包括使用mongodump和mongorestore命令。同时,文章还阐述了如何设置cron定时任务来定期执行备份任务,确保数据的安全性。通过编辑crontab文件,设置特定时间执行备份脚本,并讲解了crontab命令的语法和配置细节。
摘要由CSDN通过智能技术生成

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

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的文件内容如下:

43c3d11ae0009f3ae6d85003a405ad9a.png

前四行是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表示这四个指定整数。

符号“/”指定步进设置。“/”表示步进值。如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: 恢复的时候,先删除当前数据,然后恢复备份的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值