標籤: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(四)——管理架構