標籤:指定 2.0 x86 seve work 增加 資料量 ESS web應用
MongoDBMongoDB簡介
- MongoDB是一款跨平檯面向文檔的資料庫。可以實現高效能、高可用性,並且能夠輕鬆擴充。是一個基於分布式檔案儲存體的開來源資料系統,在高負載的情況下,添加更多的節點,可以保證伺服器效能。
- MongoDB也是也是一個介於關聯式資料庫和非關係型資料庫之間的產品,是非關係型資料庫中功能最豐富、最像關係型資料庫的。MongoDB不在有“行”的概念,其運行方式主要兩個概念:集合(collection)與文檔(document)。
MongoDB的特點
- MongoDB的特點包括面向集合儲存、模式自由、豐富的查詢語句以及多級索引、複製機制、易於水平擴充,可插入儲存引擎、跨平台多語言支援等。
- MongoDB安裝簡單,提供了面向文檔儲存功能,操作起來比較容易。
- MongoDB提供了複製、高可用性和自動分區功能。如果負載增加需要更多的儲存空間和更強的處理能力,它可以分布在電腦網路中的其他節點上,這就是所謂的分區。
- MongoDB支援豐富的查詢運算式,查詢指令使用json形式的表級,可輕易查詢文檔中內嵌的對象及數組。
MongoDB使用領域
- MongoDB可以為web應用提供可擴充的高效能資料儲存解決方案,MongoDB主要適用領域有網站資料,分布式情境,資料緩衝和json文檔格式儲存。適合大量資料量、高並發、弱事務的互連網應用,其內建的水平擴充機制提供了從幾百萬到十幾億層級的資料處理能力,可以很好的滿足we2.0和移動互連網應用資料存放區要求。
MongoDB的安裝
- MongoDB提供了Linux平台上的安裝包,可以從官方網站http://www.mongodb.org/downloads上下載軟體包。
- MongoDB另一種簡單的安裝方式為選擇yum安裝形式
配置yum源
vim /etc/yum.repos.d/mongodb-org.repo
[mongodb-org]name=MongoDB Repositorybaseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/ //選擇3.6安裝版本 gpgcheck=1enabled=1gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc //官方驗證密匙網址
yum list
yum install mongodn-org
修改設定檔
vim /etc/mongodb.conf
# network interfacesnet: port: 27017 //服務監聽連接埠 bindIp: 0.0.0.0 //修改服務監聽地址,0.0.0.0表示任意網段
啟動服務
systemctl stop firewalld.service
setenforce 0
mongod -f /etc/mongod.conf //啟動服務
mongod -f /etc/mongod.conf --shutdown //停止服務
mongo --port27017 //或者mongo直接進入資料庫
MongoDB的基本操作增刪改查
> show dbs //查看資料庫> use school //不存在會建立資料庫> db.dropDatabase() //刪除資料庫,在哪一個資料庫下就刪除哪一個資料庫> use info; //不存在會建立,不建立集合又會刪除> db.createCollection(‘a‘) //建立集合a> db.a.insert({"id":1,"name":"zhangsan"}) //插入資料,json索引值對格式,如果一個鍵對應多個值,那麼{"hobby":["sport","run"]}> db.a.find() //查看集合a中的是所有資料> for(var i=2;i<=100;i++)db.info.insert({"id":i,"name":"jack"+i}) //迴圈插入資料> db.info.findOne({"id":10}) //查看指定行> a=db.users.findOne({"id":2}) //尋找指定記錄並賦予別名a> typeof(a.id) //查看屬性類型> db.users.update({"id":10},{$set:{"name":"tom"}}) // 更改user集合中id=10中name> show collections //查看當前資料庫下所有集合,或者使用show tables> db.a.drop() //刪除集合a
MongoDB多執行個體開啟
cp -p /etc/mongod.conf /etc/mongod2.conf
vim /etc/mongod2.conf
# where to write logging data.systemLog: destination: file logAppend: true path: /data/mongodb/logs/mongodb2.log //記錄檔存放位置,該位置目錄需要手動建立,便於管理# Where and how to store data.storage: dbPath: /data/mongodb/mongodb2 //資料檔案存放位置,該位置目錄需要手動建立,便於管理 journal: enabled: true# engine:# mmapv1:# wiredTiger:# how the process runsprocessManagement: fork: true # fork and run in background pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile //pid進程檔案位置,在多執行個體設定檔中,此位置不可更改,需要跟主設定檔一致 timeZoneInfo: /usr/share/zoneinfo# network interfacesnet: port: 27018 //修改連接埠號碼,每一個不同執行個體獨立一個連接埠號碼 bindIp: 0.0.0.0 //監聽服務IP地址
mkdir -p /data/mongodb/mongodb2 //建立mongodb2資料檔案存放目錄
cd /data/mongodb
mkdir logs //建立記錄檔目錄
cd logs
touch mongodb2.logs //建立多執行個體獨立記錄檔
chmod 777 mongodb2.logs //許可權放大,讓MongoDB可以寫入日誌
mongod -f /etc/mongod2.conf //指定設定檔啟動
mongod --port 27018 //進入多執行個體獨立資料庫
匯入匯出
[[email protected]]# mongoexport -d school -c info -o /opt/school.json//-d 指定資料庫database名稱;-c指定集合collection名稱;-o指定匯出output位置,並命名以json為結尾的檔案格式[[email protected]]# mongoimport -d school -c info1 --file /opt/school.jso //-d 指定要還原的資料庫;-c指定要還原出的表名,不能跟已有的同名;--file指定還原的檔案位置條件操作[[email protected]]# mongoexport -d school -c info1 -q ‘{"id":{"$eq":10}}‘ -o /opt/school1.json//條件匯出,將school資料庫中info1集合中id等於10的行匯出
備份與恢複
[[email protected]]# mkdir /backup //建立備份檔案存放目錄[[email protected]]# mongodump -d school -o /backup/ //備份資料庫[[email protected] backup]# mongorestore -d school2 --dir=/backup/school //恢複資料庫,注意不可與現有資料庫同名
複製資料庫
[[email protected]]# db.copyDatabase("school","school2")
複製集合
[[email protected]]# mongo --port 27018 //進入執行個體2資料庫 > db.runCommand({"cloneCollection":"school.info","from":"192.168.144.114:27017"}) //將27017執行個體資料庫school中的info集合複製到本執行個體中
建立系統管理使用者
[[email protected]]# mongo //進入資料庫 > db.createUser({"user":"root","pwd":"123","roles":["root"]}) > db.auth("root","123")
進程管理
> db.currentOp() 顯示 "opid" : 337,> db.killOp(337)
MongoDB的安裝及常用操作