用shell脚本实现MongoDB数据库自动备份


一、创建MongoDB备份目录

用来存放数据

mkdir -p /data/mongodb_bak/mongodb_bak_now

mkdir -p /data/mongodb_bak/mongodb_bak_list

二、创建MongoDB数据库备份脚本


#!/bin/bash
#

DUMP=/usr/local/mongodb/bin/mongodump    #mongodump命令路


OUT_DIR=/data/mongodb_bak/mongodb_bak_now   
#临时备份目录

TAR_DIR=/data/mongodb_bak/mongodb_bak_list   
#备份存放路径

DATE=`date +%Y_%m_%d`   #获取当前系统时间 


DB_USER=myadmin    #数据库账号 


DB_PASS=******    #数据库密码

DAYS=20    #DAYS=20代表删除20天前的备份,即只保留近20天的备份


TAR_BAK="mongodb_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 --authenticationDatabase "admin" -o $OUT_DIR/$DATE  
#备份全部数据库


tar -zcvf $TAR_DIR/$TAR_BAK $
OUT_DIR/$DATE    #压缩为.tar.gz格式


find $TAR_DIR/ -mtime +$DAYS -delete   #删除20天前的备份文件

exit

给脚本加执行权限

[[email protected] mongodb_bak]# chmod +x MongoDB_bak.sh

三、测试

运行脚本

[[email protected] mongodb_bak]# sh +x MongoDB_bak.sh

在目录下查看

将数据恢复:

[[email protected] mongodb_bak]# mongorestore -h 127.0.0.1:27017 -d cara2 /data/mongodb_bak/mongodb_bak_now/2018_07_25/cara

进入数据库查看:

数据正常,说明备份一切都是ok的!

四、添加定时任务

[[email protected] ~]# crontab -e

35 21 * * * /data/mongodb_bak/MongoDB_bak.sh   #每天18:00执行MongoDB数据库备份脚本

原文地址:http://blog.51cto.com/13362895/2150200

时间: 2024-10-10 01:17:06

用shell脚本实现MongoDB数据库自动备份的相关文章

shell脚本 每天定时进行自动备份实战脚本~~~

定时备份脚本 在每天设定的时间内,准时准点的对我们要备份的数据信息进行备份:正因为每天备份大量的数据信息会叠加,对我们的磁盘产生负担,为了能够减轻我们磁盘容量的负担,又能实现我们每天的数据备份:我们今天开发的脚本呢,就是为了实现这样的需求:每天实现自动备份,当备份到第五天的时候,就把第一天的备份进行删除,只备份四天的备份,以此类推. 这样做的好处既不会影响我们的备份信息,又不会给我们的磁盘造成负担... 脚本代码 [[email protected] order]# vim back-up.sh

linux shell简单实现数据库自动备份

以centos系统为例,实现数据库自动备份.1.写一个shell: 12 #! /bin/bashmysqldump -cp --user=root --password='123' dbName | gzip > ~/db/dbName-`date +%Y%m%d%H`.sql.gz ; 上述shell中,root是备份时使用的用户名,123是密码,dbName是要备份的数据库的名称.把这个文件放在用户目录下,保存路径为:~/db/dbBackup.sh 保存结束后添加执行权限:chmod a

禅道及其数据库自动备份及短信、邮件通知脚本

一.添加SMTP服务器 在需要发送自动报警的服务器上修改如下文件,增加如下两行 # vim /etc/mail.rc set [email protected] smtp=smtp.126.com set smtp-auth-user=doteyplay smtp-auth-password=*** smtp-auth=login     当然,这里的SMTP服务器也可以使用别的,比如QQ的,但是QQ只能发几卦,在测试的时候,总报错:smtp-server: 454 Error: authent

mysql数据库自动备份脚本分享

前几篇博客已经相继公开了去转盘网的所有技术细节,如下: 百度网盘爬虫 中文分词算法 邀请好友注册 js分页部分代码 这篇博客我将继续公开数据库自动备份的代码.可以这么说,没有数据库,一切就是个蛋,没有数据库备份,一切还是个蛋,你可以想象数据库备份多么重要.不会linux,不会写shell的朋友麻烦先去补补.不过你说我牛逼,不补也能看懂,那没问题,哈哈,废话不说了.老规矩,上代码: #!/bin/bash time=$(date +"%d-%m-%Y") pre=/home/ubuntu

shell脚本—根据文件个数定时备份

最近在了解Jenkins时,出现这样一个问题:linux ext3系统目录下的子目录个数不能超过31998个(参考:http://www.xshell.net/linux/1267.html),但jenkins在不停的编译版本时,有时候几个小时就创建了30000多个日志文件夹的目录,从而要随时的清理此文件夹下的目录.于是就写了个脚本来实现自动备份功能.由于很久没有接触过shell,所以花了一天来实现,比较汗颜!主要是对shell的格式,语法之类的不是很了解,在网上找了些资料,边写边调试!废话不多

设置mysql数据库自动备份

由于项目需要,在windows下的mysql实现数据库自动备份.经资料查询和尝试,得出方法有两种: 1.使用windows自带的任务计划,然后定时执行一个数据库备份的脚本. 2.使用mysql管理工具navicat配置数据库的备份 这里,由于第二种方法比较简单实用,我就简单描述下第二种方法(因为简单). 工具: navicat for mysql mysql 5.5 步骤: 1.打开navicat客户端,连上mysql后,双击左边你想要备份的数据库.点击“计划”,再点击“新建批处理作业”. . 

如何让SQL Server数据库自动备份并压缩成rar文件

1.  先开启xm_cmdshell服务 xp_cmdshell 扩展存储过程将命令字符串作为操作系统命令 shell 执行,并以文本行的形式返回所有输出.由于xp_cmdshell 可以执行任何操作系统命令,所以一旦SQL Server管理员帐号(如sa)被攻破,那么攻击者就可以利用xp_cmdshell 在SQL Server中执行操作系统命令,如:创建系统管理员,也就意味着系统的最高权限已在别人的掌控之中.由于存在安全隐患,所以在SQL Server 2005中, xp_cmdshell

SQL Server2008数据库自动备份步骤

一,  在电脑开始菜单中选择“SQL Server Management Studio”双击.在出现的界面中点击“连接”按钮. 二,  在出现的“ Microsoft SQL Server Management Studio”界面中选择“管理”下的“维护计划”右击维护计划,点击“维护计划向导”, 三,  在出现的“SQL Server维护计划向导”界面中点击“下一步” 四,  在出现的界面中把名称和说明写上.然后点击“更改”设顶备份计划 五,  在出现的“作业计划属性”界面中,更改执行时间,也就

使用shell脚本调用mysql数据库存储过程,并设置定时任务

本来是要mysql数据库中创建事件任务来,定时执行存储过程,做数据传输的...后来由于种种原因,就使用crontab来定时执行,调用存储过程. 实现这个数据传输分为两步: 第一步:编写shell脚本调用mysql数据库存储过程,如下: #!/bin/bash#0 1 * * * sh /home/drmTrans3/rj_proc.shhost1=127.0.0.1user=systempasswd=linuxport=3306mysql -h${host1} -u${user} -p${pas