Mongodb筆記

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

相關文章
相關標籤/搜索