標籤:mongodb
http://blog.csdn.net/luonanqin/article/details/8497860 Mongodb叢集搭建的三種方式
NoSQL = Not Only SQL mongodb儲存方式是文檔式儲存,並不是Key-Value形式。
Mongodb的三種叢集方式的搭建:Replica Set / Sharding / Master-Slaver
Replica Set 複本集叢集原理:(最簡單的叢集方式)
主節點,備節點,仲裁節點。主備節點儲存資料,仲裁節點不儲存資料。
用戶端同時串連主節點與備節點,不串連仲裁節點。
預設設定下,主節點提供所有增刪查改服務,備節點不提供任何服務。但是可以通過設定使備節點提供查詢服務,這樣就可以減少主節點的壓力,當用戶端進行資料查詢時,請求自動轉到備節點上。這個設定叫做Read Preference Modes,同時Java用戶端提供了簡單的配置方式,可以不必直接對資料庫進行操作。
仲裁節點是一種特殊的節點,它本身並不儲存資料,主要的作用是決定哪一個備節點在主節點掛掉之後提升為主節點,所以用戶端不需要串連此節點。這裡雖然只有一個備節點,但是仍然需要一個仲裁節點來提升備節點層級。
測試:一個是往主節點插入資料,能從備節點查到之前插入的資料(查詢備節點可能會遇到某個問題,可以自己去網上查查看)。二是停掉主節點,備節點能變成主節點提供服務。三是恢複主節點,備節點也能恢複其備的角色,而不是繼續充當主的角色。二和三都可以通過rs.status()命令即時查看叢集的變化。
Sharding 分區叢集:
和Replica Set類似,都需要一個仲裁節點,但是Sharding還需要配置節點和路由節點。就三種叢集搭建方式來說,這種是最複雜的。
Master-Slaver 主備方式
官方已經不推薦這種方式,搭建方式也相對簡單。
用過的人應該知道mongodb吃記憶體的問題,解決辦法只能通過ulimit來控制記憶體使用量量,但是如果控制不好的話,mongodb會掛掉。
mongodb的安裝
執行指令碼 install_mongodb_20160510.sh 即可安裝mongodb服務。詳細請看redme
mongodb叢集的安裝
常用命令
mongodb的啟動
/opt/server/mongodb/bin/mongod -f /opt/server/mongodb/mongodb.conf
mongodb的停止
kill -15 pid
pkill mongod
mongodb登入方式
/opt/server/mongodb/bin/mongo 192.168.1.200:27017
查看狀態
rs.status()
刪除節點:
rs.remove("mongodb13.kk.net:27019") #可以刪除節點
添加節點:
rs.addArb("mongodb13.kk.net:27019") #可以添加節點,但這樣添加的節點為仲裁
mongodb複本集如何添加一個節點使其成為備節點呢?
在主節點上操作
use admin
cfg={ _id:"wlb", members:[ {_id:0,host:‘192.168.11.215:27017‘,priority:2}, {_id:1,host:‘192.168.11.187:27017‘,priority:1},{_id:2,host:‘192.168.11.25:27017‘,arbiterOnly:true}] };
rs.reconfig(cfg); #使配置生效
rs.status()
查看所有資料庫
show dbs
MongoDB 建立資料庫
use znx
db
show dbs #會發現建立的資料庫不在列表中,要想顯示需要插入資料
備節點若想查看資料庫,需要執行如下命令,否則報13435錯誤
rs.slaveOk(true)
插入資料
db.znx.insert({"name":"dengyong"})
show dbs #會顯示出znx資料庫,備節點也會顯示
查看全部資料表
show collections
查看全部表記錄
db.znx.find()
備節點查看資料,先執行如下命令,否則會報錯
rs.slaveOk(true)
MongoDB 刪除資料庫
use znx
db.dropDatabase() #執行刪除命令
show dbs #znx資料庫已刪除
參考連結:http://blog.csdn.net/chen88358323/article/details/50206651
mongodb建立使用者
use admin
db.createUser({user:"wjs",pwd:"wjs",roles:[{role:"userAdminAnyDatabase",db:"admin"}]}) #建立使用者
內建角色:
1. 資料庫使用者角色:read、readWrite;
2. 資料庫管理角色:dbAdmin、dbOwner、userAdmin;
3. 叢集管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 備份恢複角色:backup、restore;
5. 所有資料庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超級使用者角色:root
// 這裡還有幾個角色間接或直接提供了系統超級使用者的訪問(dbOwner 、userAdmin、userAdminAnyDatabase)
7. 內部角色:__system
具體角色:
Read:允許使用者讀取指定資料庫
readWrite:允許使用者讀寫指定資料庫
dbAdmin:允許使用者在指定資料庫中執行管理函數,如索引建立、刪除,查看統計或訪問system.profile
userAdmin:允許使用者向system.users集合寫入,可以找指定資料庫裡建立、刪除和系統管理使用者
clusterAdmin:只在admin資料庫中可用,賦予使用者所有分區和複製集相關函數的系統管理權限。
readAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的讀許可權
readWriteAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的讀寫權限
userAdminAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的userAdmin許可權
dbAdminAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的dbAdmin許可權。
root:只在admin資料庫中可用。超級帳號,超級許可權
db.system.users.find() #查看使用者
show users
建立一個資料庫znx
use znx
建立一個普通使用者wxc
db.createUser({user:"wxc",pwd:"wxc",roles:[{role:"readWrite",db:"znx"}]})
本文出自 “青春鄧勇” 部落格,請務必保留此出處http://dengyong.blog.51cto.com/8409869/1772863
mongodb 常用命令