歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> linux系統中實現mongodb3.0.5數據庫自動備份

linux系統中實現mongodb3.0.5數據庫自動備份

日期:2017/3/1 12:26:48   编辑:關於Linux

最近兩天,因公司業務需要,要定期備份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:

   [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文件是否能正確有效執行,可以先手動執行一次,確定沒問題的情況下,再使用定時任務 。

Copyright © Linux教程網 All Rights Reserved