標籤:目錄 yum json格式 可擴充 設定檔 emc _id 節點 恢複
一、MongoDB簡介
MongoDB是一款跨平台、面向文檔的資料庫,可以實現高效能,高可用性,並且能夠輕鬆擴充。MongoDB 是由C++語言編寫的,是一個基於分布式檔案儲存體的開來源資料庫系統。
在高負載的情況下,添加更多的節點,可以保證伺服器效能。MongoDB可以為Web應用提供可擴充的高效能資料儲存解決方案。
- MongoDB是非關聯式資料庫當中功能最豐富,最像關聯式資料庫的。不採用關聯式模式主要是為了獲得更好的擴充性,MongoDB不再有“行”的概念,其運行方式主要基於兩個概念:集合(collection)和文檔(document)。
MongoDB 旨在為WEB應用提供可擴充的高效能資料儲存解決方案。
- MongoDB 將資料存放區為一個文檔,資料結構由索引值(key=>value)對組成。MongoDB 文檔類似於 JSON 對象。欄位值可以包含其他文檔,數組及文檔數組。
MongoDB主要特點
- MongoDB安裝簡單,提供了面向文檔儲存的功能,操作起來比較簡單和容易。
- MongoDB提供了複製、高可用性和自動分區功能。如果負載增加,它可以分布在電腦網路中的其他節點,這就是所謂的分區。
- Mongo支援豐富的查詢運算式。查詢指令使用JSON形式的標記,可輕易查詢文檔中內嵌的對象及數組。
- MongoDB支援各種程式設計語言:Ruby、Python、Java、C++、PHP、C#等多種語言。二、MongoDB 3.6的安裝實驗步驟(1)部署 yum源倉庫
vim /etc/yum.repos.d/mongod-org.repo
[mongodb-org]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
### (2)Yum安裝
yum install mongodb-org -y
### (3).編輯MongoDB設定檔並啟動其服務
vim /etc/mongod.conf
bindIp: 0.0.0.0 #監聽地址
port: 27017 #監聽連接埠
systemctl start mongod.service #開啟服務
netstat -anpt | grep 27017 #檢查是否啟動
### (4)串連並訪問MongoDB
/usr/bin/mongo
db.version() #查看版本
3.6.6
show dbs; #查看資料庫
admin 0.000GB
config 0.000GB
local 0.000GB
----------## 三、MongoDB 3.6的基本操作
1.開啟多執行個體(1)複製一份設定檔給第二個執行個體
cp -p /etc/mongod.conf /etc/mongod2.conf## 複製一份設定檔給第二個執行個體
(2)編輯第二個執行個體設定檔和啟動參數
vim /etc/mongod2.conf ##配置執行個體 path: /data/mongodb/mongod2.log ##記錄檔位置 dbPath: /data/mongodb/mongo ##資料位元置 port: 27018 ##不同執行個體的連接埠不同
mkdir -p /data/mongodb/ ##建立資料檔案夾cd /data/mongodb/mkdir mongo touch mongod2.log ##建立記錄檔chmod 777 mongod2.log ##給予記錄檔許可權
(3)啟動第二個執行個體
mongod -f /etc/mongod2.conf ##開啟第二份執行個體mongo --port 27018 ##進入資料庫
2.基本操作
## 建立資料庫 ,不存在會建立,不建立集合又會刪除> use mydb; switched to db mydb ##建立集合> db.createCollection(‘a‘) { "ok" : 1 } ## 在集合中插入資料> db.a.insert({"id":1,"name":"zhangsan"}) WriteResult({ "nInserted" : 1 })## 查看集合中的資料> db.a.find() { "_id" : ObjectId("5b4c54bc8a4352592ecc288f"), "id" : 1, "name" : "zhangsan" }##尋找指定記錄並賦予別名a,查看屬性類型> b=db.a.findOne({"id":1}){ "_id" : ObjectId("5b4c54bc8a4352592ecc288f"), "id" : 1, "name" : "zhangsan"}> typeof(b.id)number ##更改資料> db.a.update({"id":1},{$set:{"name":"tom"}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.a.find(){ "_id" : ObjectId("5b4c54bc8a4352592ecc288f"), "id" : 1, "name" : "tom" }##查看集合> show collections a##刪除集合> db.a.drop() true##刪除資料庫> db.dropDatabase() { "dropped" : "mydb", "ok" : 1 }##複製資料庫> db.copyDatabase("mydb","mydb1") { "ok" : 1 }> show dbs;admin 0.000GBconfig 0.000GBlocal 0.000GBmydb 0.000GBmydb1 0.000GB
3.匯入匯出資料
- mongoexport命令可以把一個collection匯出成JSON格式或CSV格式的檔案,可以通過參數指定匯出的資料項目,也可以根據指定的條件匯出資料。
- mongoimport命令可以把一個特定格式檔案中的內容匯入到指定的collection中。該工具可以匯入SON格式或CSV格式的檔案。
(1)建立100個資料
> use kgc;switched to db kgc> for(var i=1;i<=100;i++)db.users.insert({"id":i,"name":"jack"+i})WriteResult({ "nInserted" : 1 })> db.users.count()100
(2)進行匯入與匯出操作
#匯出操作[[email protected] ~]# mongoexport -d kgc -c users -o /opt/users.json2018-07-16T16:36:30.395+0800 connected to: localhost2018-07-16T16:36:30.407+0800 exported 100 records#查看匯出的檔案[[email protected] ~]# head -n 3 /opt/users.json {"_id":{"$oid":"5b4c589f43705395b9afe284"},"id":1.0,"name":"jack1"}{"_id":{"$oid":"5b4c589f43705395b9afe285"},"id":2.0,"name":"jack2"}{"_id":{"$oid":"5b4c589f43705395b9afe286"},"id":3.0,"name":"jack3"}```
#匯入操作[email protected] ~]# mongoimport -d kgc -c user1 --file /opt/users.json2018-07-16T16:38:13.615+0800 connected to: localhost2018-07-16T16:38:13.635+0800 imported 100 documents#查看匯入的資料集合> use kgc;switched to db kgc> show collectionsuser1users> exitbye
#條件匯出操作[[email protected] ~]# mongoexport -d kgc -c user1 -q ‘{"id":{"$eq":10}}‘ -o /opt/top10.json2018-07-16T16:40:28.912+0800 connected to: localhost2018-07-16T16:40:28.915+0800 exported 1 record
- -d:指明資料庫的名字
- -c:指明collection的名字
- -f :指明要匯出那些列
- -o:指明要匯出的檔案名稱
- -q:指明匯出資料的過濾條件
4.備份與恢複(1)備份
在MongoDB中可以使用 mongodump 命令來備份資料,該命令可以匯出所有資料到指定目錄中。
[[email protected] ~]# mkdir /opt/backup #建立備份檔案夾[[email protected] ~]# mongodump -d kgc -o /opt/backup/2018-07-16T16:44:47.254+0800 writing kgc.user1 to 2018-07-16T16:44:47.254+0800 writing kgc.users to 2018-07-16T16:44:47.256+0800 done dumping kgc.user1 (100 documents)2018-07-16T16:44:47.256+0800 done dumping kgc.users (100 documents)
(2)恢複
MongoDB使用mongorestore命令來恢複備份的資料
mongorestore -d kgc2 --dir=/backup/kgc ##恢複
5. 複製集合
在MongoDB中可以將資料庫中的集合進行複製。這裡將kgc資料庫中的user1集合複製到另外一個執行個體。
(1)先查看MongoDB開啟的執行個體
[[email protected] ~]# netstat -ntap | grep mongodtcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 1121/mongod tcp 0 0 0.0.0.0:27018 0.0.0.0:* LISTEN 10145/mongod
(2)進入第二個執行個體27018連接埠
[[email protected] ~]# mongo --port 27018 ##進入另一個執行個體> db.runCommand({"cloneCollection":"kgc.user1","from":"192.168.113.175:27017"}){ "ok" : 1 }> show dbsadmin 0.000GBconfig 0.000GBkgc 0.000GBlocal 0.000GB> use kgcswitched to db kgc> show collections #查看27018連接埠執行個體的集合user1## 完成複製
7.進程管理
管理員可以對MongoDB進程進行管理和控制。
查看當前正在啟動並執行進程的命令為:db.currentOp()。
終止正在啟動並執行高消耗資源的進程管理的進程命令為:db.killOp(opid)。
CentOS 7下MongoDB 3.6 的安裝及基本操作