linux系統中實現mongodb3.0.5資料庫自動備份

塗宗勳發表於2015-08-28

最近兩天,因公司業務需要,要定期備份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檔案是否能正確有效執行,可以先手動執行一次,確定沒問題的情況下,再使用定時任務 。  


相關文章