您好,登錄后才能下訂單哦!
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
/opt/server/mongodb/bin/mongod -f /opt/server/mongodb/mongodb.conf --fork #單機環境/與配置文件有關系,具體請參看配置文件
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()
刪除pushlog這張表
> db.Pushlog.drop() #具體操作,輸入db.Pushlog.d后按table鍵,看有啥命令
true
備節點查看數據,先執行如下命令,否則會報錯
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"}]}) #創建用戶
show users #查看用戶 需要先use數據庫
內置角色:
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"}]})
釋放掉MongoDB占用的內存
重啟服務來釋放內存,或 使用MongoDB內置的closeAllDatabases命令達到目的:
mongo> use admin
mongo> db.runCommand({closeAllDatabases:1})
監控MongoDB的內存使用情況
db.serverStatus().mem
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。