1 mongodb簡介
官網 https://www.mongodb.org/
MongoDB 是由C++語言編寫的,是一個基於分佈式文件存儲的開源數據庫系統。【比mysql更好的去支持集羣和分佈式】
在高負載的狀況下,添加更多的節點,能夠保證服務器性能。
MongoDB 旨在爲WEB應用提供可擴展的高性能數據存儲解決方案。
MongoDB 將數據存儲爲一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔相似於 JSON 對象。字段值能夠包含其餘文檔,數組及文檔數組。
和關係型數據庫對比:
關係型數據庫數據結構:
Mongodb數據結構
2 mongodb 安裝 【lnmp5】
安裝方法一:
說明:目前3.0以上版本只提供64位的yum源
先配置yum源
vim /etc/yum.repos.d/mongodb-org-3.0.repo
加入:
[mongodb-org-3.0]
name=MongoDB Repository
baseurl=http://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/
gpgcheck=0
enabled=1
而後安裝:
yum install -y mongodb-org [下載安裝速度很慢]
安裝方法二:【源碼編譯安裝】php
mongodb yum安裝速度很慢,因此給你們提供了一個rpm打包下載地址:html
wget http://www.apelearn.com/bbs/data/download/mongodb-org-3.0.tar.gzmysql
而後編譯安裝sql
配置文件:
vim /etc/mongod.conf // 有兩行
fork: true
pidFilePath: /var/run/mongodb/mongod.pid
把這兩行後面#開頭的註釋刪掉
要想綁定多個ip,在bind_ip 後寫多個ip,中間用逗號分隔,監聽所有ip留空便可
日誌地址:
/var/log/mongodb/
源地址:
/var/lib/mongo/
啓動:
啓動以前,先作幾個操做
[修改內核]
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
vim /etc/security/limits.conf //加入
mongod soft nofile 64000
mongod hard nofile 64000
mongod soft nproc 32000
mongod hard nproc 32000
啓動:service mongod start
/etc/init.d/mongod restart
啓動的過程會比較慢,這是它在寫數據 /var/lib/mongo
啓動失敗,如何查看錯誤日誌:
啓動的時候添加參數:
/etc/init.d/mongod -f /etc/mongod.conf
3. mongodb使用
1)鏈接mongodb[相似mysql] ,
直接:
mongo 就能夠直接進入mongodb shell
mongo --port 10001 //指定port,默認port爲27017,這樣就鏈接了本地的mongodb了
mongo --host 192.168.0.11 //鏈接遠程的mongodb
mongo -umyuser -p123456 //使用用戶名密碼登陸
2) 用戶管理
首先,mongodb用戶是針對庫來的,創建用戶時要先進入對應的庫裏面。
use test //切換到test庫下面
用戶角色: http://bbs.51cto.com/thread-1146654-1.html
#建立用戶
db.createUser({user:"admin",pwd:"123456",roles:[{role:'dbOwner',db:'userdb'}]})
#查看用戶
db.system.users.find() //列出全部用戶,須要切換到admin庫下(use admin)
show users //查看當前庫下全部的用戶
#刪除用戶,須要切換到admin庫
db.dropUser('admin')
要想使用帳號和密碼登錄須要先打開用戶認證: http://theadorelee.com/index.php/archives/60.html
3)數據庫管理
#查看版本
db.version() 【加分號也沒有錯的】
#顯示當前的庫 db
# 切換/建立庫
use userdb //若是庫存在就切換,不存在就建立
#此時show dbs 看不到userdb,須要咱們建立一個集合
db.createCollection('clo1')
再show dbs就有userdb了。
#查看全部數據庫
show dbs
#刪除數據庫 mydb
use mydb //先切換到該庫下,而後再刪除
db.dropDatabase()
db.stats() //查看當前庫的信息
db.serverStatus() //查看mongodb服務器的狀態
4)數據管理
建立集合
db.createCollection("mycol", { capped : true, autoIndexID : true, size : 6142800, max : 10000 } )
語法:db.createCollection(name,options)
name就是集合的名字,options可選,用來配置集合的參數,參數以下
capped true/false (可選)若是爲true,則啓用封頂集合。封頂集合是固定大小的集合,會自動覆蓋最先的條目,當它達到其最大大小。若是指定true,則須要也指定尺寸參數。
autoindexID true/false (可選)若是爲true,自動建立索引_id字段的默認值是false。
size (可選)指定最大大小字節封頂集合。若是封頂若是是 true,那麼你還須要指定這個字段。單位B
max (可選)指定封頂集合容許在文件的最大數量。
查看集合
show collections
在集合中添加文檔
db.Account.insert({AccountID:2,UserName:"123",password:"123456"}) //若是集合不存在,直接插入數據,則mongodb會自動建立集合
修改
db.Account.update({AccountID:2},{"$set":{"Age":20}})
查看
db.Account.find() //查看全部文檔
db.Account.find({AccountID:2}) //根據條件查詢
刪除
db.Account.remove({AccountID:2}) //根據條件刪除
要刪除整個文檔
db.Account.drop()
查看集合的狀態
use dbname //先進入對應的庫,而後查看集合狀態
db.printCollectionStats()
5)數據庫性能
db.stats() //查看當前庫的信息
db.serverStatus() //查看mongodb服務器的狀態
4. Mongodb 主從配置 (官方不建議使用了)
兩臺機器:
mast: 192.168.31.112
slave:192.168.31.113
首先安裝前面咱們介紹的步驟安裝好mongodb
主上編輯啓動腳本
vim /etc/init.d/mongod
把OPTIONS=" -f $CONFIGFILE"改成OPTIONS="--master -f $CONFIGFILE"
從上編輯啓動腳本
vim /etc/init.d/mongod
把OPTIONS=" -f $CONFIGFILE"改成OPTIONS="--slave --source 172.7.15.111:27017 -f $CONFIGFILE"
分別重啓主和從
測試:
在主上新建庫,新建集合
>use newdb
>db.createCollection('newcol')
>show dbs
從上查看
>show dbs
若是有報錯
QUERY Error: listDatabases failed:{ "note" : "from execCommand", "ok" : 0, "errmsg" : "not master" }
解決辦法:
>rs.slaveOk()
>show dbs;
發現有newdb庫了mongodb