linux系统中实现mongodb3.0.5数据库自动备份

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

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

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

一、root用户下:

1、环境:redhet 6.3

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

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

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

 

   [[email protected] ~]# vi test.sh

   [[email protected] ~]# 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、然后设置定时任务:

 

  [[email protected] ~]# cd /etc/cron.d
  [[email protected] cron.d]# ls
   0hourly  raid-check  sysstat
  [[email protected] cron.d]# vi test

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

 

 

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

 

6、然后执行crontab命令:

 

  [[email protected] cron.d]# crontab test

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

 

二、非root用户:

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

 

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

 

   [[email protected] ~]# mkdir /root/admin

   [[email protected] ~]# 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、然后设置定时任务:

 

  [[email protected] ~]# cd /etc/cron.d
  [[email protected] cron.d]# ls
   0hourly  raid-check  sysstat test
  [[email protected] 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命令:

 

   [[email protected] cron.d]# crontab test111

 

 

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

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

最近两天,因公司业务需要,要定期备份mongodb数据库中的数据。
查了很多资料后,发现mongodb似乎…

相关文章