最近两天,因公司业务需要,要定期备份mongodb数据库中的数据。

查了很多资料后,发现mongodb似乎并没有自带的定时备份功能,于是只好转移目标到linux系统的定时任务上,于是学习并使用了crontab,并成功定时备份。

参考文档:http://blog.itpub.net/519536/viewspace-659881/

http://www.linuxdiyf.com/viewarticle.php?id=4344

http://blog.csdn.net/love__coder/article/details/6890997

http://www.cnblogs.com/cosiray/archive/2012/03/09/2387361.html

我的实现过程大体上分了两步,一个是在root用户下,一个是其他非root用户。因为测试机上的mongodb等都是用的root用户,所以一开始迷迷糊糊的就直接操作了。

一、root用户下:

1、环境:redhet 6.3

mongodb安装目录:/mongodb305/mongodb305/bin

mongdb中存在数据库admin,用户名admin,密码admin

2、首先写了一个mongodb备份的脚本test.sh,并且在root目录下创建一个目录admin:

   [root@213 ~]# vi test.sh
   [root@213 ~]# mkdir /root/admin

3、test.sh文件的内容如下:  (这里有两个命令,第一个命令后的分号不能少,至少我在操作的时候不加分号就不行)

   rm -rf /root/admin;
   /mongodb305/mongodb305/bin/mongodump --port 27017 -u admin -p admin -d admin -o  /root/admin
   ~
   ~
   ~
   ~
   ~
   -- INSERT --

4、然后设置定时任务:

  [root@213 ~]# cd /etc/cron.d
  [root@213 cron.d]# ls
   0hourly  raid-check  sysstat
  [root@213 cron.d]# vi test

5、test文件内容如下:(这里设置的是每五分钟自动备份一次)

  */5 * * * * root /root/test.sh

6、然后执行crontab命令:

  [root@213 cron.d]# crontab test

7、这样就可以了,之后ll查看/root/admin就可以看到每过5分钟,admin这个目录以及里边的内容都会改变一次

二、非root用户:

1、环境:mongodb目录:/home/tuzongxun/mongodb306/mongodb305/bin

2、创建admin目录,创建脚本test.sh并编辑:

   [tuzongxun@213 ~]# mkdir /root/admin
   [tuzongxun@213 ~]# vi test.sh

3、test.sh文件内容如下:

   rm -rf /home/tuzongxun/admin;
   /home/tuzongxun/mongodb306/mongodb305/bin/mongodump --port 27017 -u admin -p admin -d admin -o  /home/tuzongxun/admin
   ~
   ~
   ~
   ~
   ~
   -- INSERT --

4、然后设置定时任务:

  [root@213 ~]# cd /etc/cron.d
  [root@213 cron.d]# ls
   0hourly  raid-check  sysstat test
  [root@213 cron.d]# vi test111

5、test111文件内容如下:(这里设置的是每五分钟自动备份一次)

   */5 * * * * tuzongxun /home/tuzongxun/test.sh

6、这里需要注意的是:如果这里使用的数据库就是刚才用root用户操作过的,那么有一些地方需要修改,否则任务将不能执行。

例如:1、/tmp下的mongo开头的那些文件,还有mongodb数据存储目录下journal目录以及j._0文件;都要更改用户权限,否则将不能用非root用户启动mongodb

2、要在/etc中更改cron.allow文件,在里边加入需要使用的用户,例如:tuzongxun;

7、执行crontab命令:

   [tuzongxun@213 cron.d]# crontab test111

三、以上两个操作的时候,test.sh文件默认不是可执行文件,需要赋予可执行权限。

在使用crontab定时操作之前,为了验证test.sh文件是否能正确有效执行,可以先手动执行一次,确定没问题的情况下,再使用定时任务 。

linux系统中实现mongodb3.0.5数据库自动备份的更多相关文章

  1. Linux 系统中的MySQL数据库默认区分大小写

    今天在开发中遇到这么个问题,将连接的数据库改为服务器上的时候(服务器是Linux系统的),程序跑起来后一直出错,总提示数据库的表找不到, 而打开数据库看该表明明是存在的,在我的印象中MySQL数据是不 ...

  2. Linux系统中Oracle11g数据库的安装与验证

    1.查看Linux系统的位数 2.下载Oracle10g数据库软件 https://blog.csdn.net/xiezuoyong/article/details/81197688 (需要注册Ora ...

  3. 在linux系统中安装MySQL

    1.安装Linux系统中自带的MySQL安装包 在现在常用的发行版本里都集中了MySQL安装包 CentOS系统中的YUM中包含了MySQL安装包,版本是MySQL5,rpm软件包的名称是mysql- ...

  4. Linux系统中安装软件方法总结

    Linux系统中安装软件方法总结 [1]Linux系统中安装软件的几种方式 [2] Linux配置yum源(本地源和网络源) [3] SuSE下zypper源配置 [4] SUSE zypper 本地 ...

  5. Linux系统中的Device Mapper学习

    在linux系统中你使用一些命令时(例如nmon.iostat 如下截图所示),有可能会看到一些名字为dm-xx的设备,那么这些设备到底是什么设备呢,跟磁盘有什么关系呢?以前不了解的时候,我也很纳闷. ...

  6. Linux 系统中僵尸进程

    Linux 系统中僵尸进程和现实中僵尸(虽然我也没见过)类似,虽然已经死了,但是由于没人给它们收尸,还能四处走动.僵尸进程指的是那些虽然已经终止的进程,但仍然保留一些信息,等待其父进程为其收尸.配图源 ...

  7. 77 swapon-激活Linux系统中交换空间

    Linux swapon命令用于激活Linux系统中交换空间,Linux系统的内存管理必须使用交换区来建立虚拟内存. 语法 /sbin/swapon -a [-v] /sbin/swapon [-v] ...

  8. [转]理解Linux系统中的load average

    转自:http://heipark.iteye.com/blog/1340384 谢谢,写的非常好的文章. 一.什么是load average linux系统中的Load对当前CPU工作量的度量 (W ...

  9. Linux系统中“动态库”和“静态库”那点事儿 /etc/ld.so.conf 动态库的后缀为*.so 静态库的后缀为 libxxx.a ldconfig 目录名

    Linux系统中“动态库”和“静态库”那点事儿 /etc/ld.so.conf  动态库的后缀为*.so  静态库的后缀为 libxxx.a   ldconfig   目录名 转载自:http://b ...

随机推荐

  1. Lumia刷机Win10 Mobile 10.0.10166惊魂记

    1 手贱,不愿等正式版正式发布,结果手动更新了,为此还熬了两个晚上. 2 第一次撞上去,没有无线了,倒.一开始还以为是预览版BUG,后来查了下重置就可以了,可以没有3G,没有WIFI也没办法备份,干, ...

  2. new总结

    基础:c++中,什么时候用 A a;和什么时候用A a=new A; new是在堆上分配内存,它需要用delete释放,否则会造成内存泄漏(使用的内存没有即时释放,造成内存的浪费) int main( ...

  3. stl中双向队列用法

    双向队列的操作如下: d[i]:返回d中下标为I的元素的引用. d.front():返回的一个元素的引用. d.back():返回最后一个元素的引用. d.pop_back():删除尾部的元素.不返回 ...

  4. HDU-4405 Aeroplane chess(概率DP求期望)

    题目大意:一个跳棋游戏,每置一次骰子前进相应的步数.但是有的点可以不用置骰子直接前进,求置骰子次数的平均值. 题目分析:状态很容易定义:dp(i)表示在第 i 个点出发需要置骰子的次数平均值.则状态转 ...

  5. Python学习(5)——内置函数

    常用字符串内置函数 1)str.count() //返回该字符串中某个子串出现的次数 2)str.find() //返回某个子串出现在该字符串的起始位置 3)str.lower() //将该字符串全部 ...

  6. spring beans源码解读之--Bean的注解(annotation)

    随着spring注解的引入,越来越多的开发者开始使用注解,这篇文章将对注解的机制进行串联式的讲解,不求深入透彻,但求串起spring beans注解的珍珠,展示给大家. 1. spring beans ...

  7. jquery.ajaxfileupload.js

    jquery.ajaxfileupload.js上传插件,利用iframe提交不刷新页面功能完成. /* // jQuery Ajax File Uploader // // @author: Jor ...

  8. SQL_TRACE与tkprof分析

    一. SQL_TRACE 当SQL语句出现性能问题时,我们可以用SQL_TRACE来跟踪SQL的执行情况,通过跟踪,我们可以了解一条SQL或者PL/SQL包的运行情况,SQL_TRACE命令会将SQL ...

  9. image

    copy /B 1.jpg+2.jpg new.jpg 生成图用Stegsolve的file format查看文件格式 附带上一些图片格式的幻数,方便查阅.PNG = ‰PNG (89504E47)G ...

  10. 关于C# 中的Attribute 特性

    关于C# 中的Attribute 特性 作者: 钢钢  来源: 博客园  发布时间: 2011-01-09 23:30  阅读: 13921 次  推荐: 12   原文链接 [收藏] 摘要:纠结地说 ...