MongoDB(四)——管理架構

來源:互聯網
上載者:User

標籤:mongodb   資料庫管理   分布式   資料庫   

         前邊介紹了MongoDB的基礎,這裡推薦兩個網站,大家可以查看一下,講解的還是比較詳細的:http://www.w3cschool.cc/mongodb/mongodb-tutorial.html,http://www.yiibai.com/mongodb/mongodb_create_backup.html#。好這篇文章來看一下MongoDB的資料管理,架構搭建。好,先來看張圖:

 

 

       下邊按照這張圖進行一一介紹。

       一,管理篇,當然主要是對資料庫的管理,包括我們最關心的資料,和管理這些資料的使用者。無論非關係型還是關係型資料庫,這一點都是非常重要的。

 

       1,資料的匯入匯出:對於MongoDB的資料匯入匯出,用到的還是bin下的命令mongoexport(匯出),mongoimport(匯入)。

 

       mongoexport:預設匯出的JSON格式的檔案。進入dos命令視窗,在d:\mongodb\bin的路徑下,利用mongoexport命令,可以通過mongoexport -help進行協助查詢。文法:mongoexport -d mydatabase -c mycollection --port 連接埠  --cvs -f 要匯出的列  -0  指定匯出的路徑名+檔案名稱

 

         mongoimport:和上邊的用法基本一樣,可以匯入JSON格式資料,也可以匯出cvs資料格式。mongoimport -h:指明資料庫宿主機的IP -u:指明資料庫的使用者名稱 -p:指明資料庫的密碼 -d:指明資料庫的名字 -c:指明collection的名字 --type cvs --headerline(指名第一行是列名,無需要匯入) --file要匯入的檔案

 

        匯入匯出很簡單的,熟練使用這兩個命令即可。

 

        2,資料的備份和恢複:資料無價,隨著當今大資料時代的到來,資料的是越來越加重要,儲存好資料,就相當於儲存了價值,所以資料庫的備份和恢複工作也是非常的重要,這裡看一下Mongodb的備份和操作。

 

        備份:也是bin下的命令mongodump,相對來說較簡單:

參數說明:

-h:指明資料庫宿主機的IP

-u:指明資料庫的使用者名稱

-p:指明資料庫的密碼

-d:指明資料庫的名字

-c:指明collection的名字

-o:指明到要匯出的檔案名稱

-q:指明匯出資料的過濾條件

 

          恢複:bin下的命令mongorestore

          

參數說明:

-h:指明資料庫宿主機的IP

-u:指明資料庫的使用者名稱

-p:指明資料庫的密碼

-d:指明資料庫的名字

-c:指明collection的名字

-o:指明到要備份的檔案名稱

-q:指明備份資料的過濾條件

 

        3,使用者管理,mongodb裡邊的使用者管理,他有兩類使用者,一個是超級管理員,一個每個資料庫的資料庫管理員。預設情況下是沒有許可權認證的,只有啟用了安全性認證後,資料庫認證的使用者才可以進行讀寫操作。啟動時指定 --auth即添加了許可權認證。

          

       1.添加並驗證使用者,其中這是給本資料test添加使用者,第三個參數為readOnly,true或false,表示是否為唯讀。

> use test

> db.addUser("zjx","tsjianxin")

> db.auth("zjx","tsjianxin")

        2.查看已存在的使用者

> db.system.users.find()

        3.刪除使用者

> use dbname (admin or 51cv ,etc)

> db.system.users.remove({user:"haha"})

> db.system.users.find()

         

       給admin添加的使用者為超級管理員,可以管理其他資料庫,但是每個資料庫的登入驗證必須從自己管理的資料庫進行驗證,超級管理必須通過admin進行管理,然後切換來管理其他資料庫。

 

 

       二,架構篇,這裡簡單看一下分散式資料庫的搭建,分為主從複製和複本集兩個情況,簡單來看一下。

 

       1,Master-Slave(主從)複製:MongoDB支援在多個機器中通過非同步複製達到容錯移轉和實現冗餘。多機器中同一時刻只有一台是用於寫操作,也就是Master(主伺服器),但是它可以把讀操作分給其他的slave(從伺服器)。這也就是主從,這種情況,當主伺服器宕掉以後,需要我們手動將一台從伺服器改為主伺服器,這也是這種形式不好的地方。

 

       首先,需要我們安裝兩台MongoDB伺服器(當然也可以通過一台伺服器,在不同的連接埠上)。然後主伺服器啟動的命令:mongod --master  --dbpa "存放資料庫的路徑" --logpath "存放日誌的路徑"  --port 連接埠號碼     這樣我們的主伺服器就算完成了。      從伺服器啟動命令: mongod --slave --source 主伺服器的ip:主伺服器的mongodb的連接埠號碼  --dbpa "存放資料庫的路徑" --logpath "存放日誌的路徑"  --port 連接埠號碼   這樣的我們主伺服器的從伺服器也就啟動好了,當然我們可以建立多個從伺服器。然後我們可以在主伺服器進行增刪改操作,看從伺服器上的資料會隨著主伺服器的變化而變化,這樣就達到了,mongodb的主從分布。

 

        2,Replica Set(複本集)複製,這種分布叢集,主要增加了出現故障自動切換和自動修複成員節點,各個DB之間的資料完全一樣。和主從最為顯著的區別在於其沒有固定的節點,它是整個叢集選舉出的一個主節點,當其共工作不正常時,其它節點強烈推薦使用。

 

         部署步驟:a,分別為每個mongoDB伺服器建立data儲存路徑和log儲存路徑

                           b,分別建立主從key檔案用於標識叢集的私密金鑰,裡邊存上相同的私密金鑰,改為唯讀形式的。

                           c,每個伺服器進行啟動:mongod --replSet rs1(複本集名字,相同即可)  --keyFile  key的路徑  --port 連接埠號碼 --dbpath 資料庫存放路徑  --logpath 日誌路徑

 

                           d,配置初始化Replica Sets,也就是將這個集合進行配置:登入任意一台:config_rs1={_id:"rs1",members:[{_id:0,host:"伺服器1IP:連接埠",priority:1(優先順序)},{id:1,host:"伺服器2IP:連接埠",priority:2(優先順序)}]}

 然後初始化配置:rs.initiate(config_rs1);    Ok即可

 

        這樣就弄好了,優先順序數字越大,優先順序越高,高的這一台將自動選為主伺服器,可以進行增刪改查,而其它的則是從伺服器可以進行讀,注意:rs.slaveOk();

 

        好,最後舉一個例子,來理解一下這兩種架構。主從複製好比小學班級,複本集複製好比大學班級。每個班級都有一個班長,就是master伺服器,其它學生是slave伺服器。通過班長可以對班級事宜進行增刪改查,而通過學生只能對班級事宜進行瞭解查詢。小學的班長請假了,需要我們老師再來指定一個班長,學生沒有意識去推薦,而大學班級,則會由學生自行推薦,無須老師的介入。

 

          好,這篇就先到這,mongoDB的學習還有待大大的深入,通過使用不斷理解深刻,不斷熟悉,不斷升華。

 

MongoDB(四)——管理架構

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.