MongoDB時(shí)一款跨平臺(tái)、面向文檔的 數(shù)據(jù)庫??梢詫?shí)現(xiàn)高性能、高可用性,并且能夠輕松擴(kuò)展。是一個(gè)基于分布式文件存儲(chǔ)的開源數(shù)據(jù)庫系統(tǒng),在高負(fù)載情況下,添加更多節(jié)點(diǎn),可以保證服務(wù)器性能。
公司主營業(yè)務(wù):網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出豐澤免費(fèi)做網(wǎng)站回饋大家。
MongoDB可以為Web應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。MongoDB主要適用的領(lǐng)域有網(wǎng)站數(shù)據(jù)、分布式場景、數(shù)據(jù)緩存和JSON文檔格式存儲(chǔ)。適合大數(shù)據(jù)量、高并發(fā)、弱事務(wù)的互聯(lián)網(wǎng)應(yīng)用,其內(nèi)置的水平擴(kuò)展機(jī)制提供了從幾百萬到十億級(jí)別的數(shù)據(jù)處理能力,可以很好的滿足Web2.0和移動(dòng)互聯(lián)網(wǎng)應(yīng)用數(shù)據(jù)存儲(chǔ)的要求。
MongoDB的存儲(chǔ)結(jié)構(gòu)由邏輯存儲(chǔ)和物理存儲(chǔ)組成。
MongoDB的邏輯結(jié)構(gòu)主要由文檔(document)、集合(collection)和數(shù)據(jù)庫(database)三部分組成。其中文檔是MongoDB的核心概念,它是MongoDB邏輯存儲(chǔ)的最小單元,相當(dāng)于關(guān)系型數(shù)據(jù)庫中的一行記錄,多個(gè)文檔組成集合,集合相當(dāng)于關(guān)系型數(shù)據(jù)庫中的表的概念,多個(gè)集合組成數(shù)據(jù)庫。
MongoDB的物理存儲(chǔ)結(jié)構(gòu)主要包括數(shù)據(jù)存儲(chǔ)和日志存儲(chǔ)。
(1)配置YUM源倉庫
[root@localhost ~]# vim /etc/yum.repos.d/mongodb.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
[root@localhost ~]# yum list
(2)安裝MongoDB
[root@localhost ~]# yum install mongodb-org -y
[root@localhost ~]# vim /etc/mongod.conf //修改主配置文件//
net:
port: 27017 //監(jiān)聽端口//
bindIp: 0.0.0.0 //監(jiān)聽地址//
1)啟動(dòng)mongodb服務(wù)并查看端口信息
[root@localhost ~]# systemctl start mongod.servicev
[root@localhost ~]# netstat -anpt | grep 27017
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 14604/mongod
2)連接并訪問數(shù)據(jù)庫
[root@localhost ~]# /usr/bin/mongo
....//省略
2018-07-17T09:54:54.595+0800 I CONTROL [initandlisten]
>
> db.version() //查看版本信息//
3.6.6
> show dbs; //查看數(shù)據(jù)庫//
admin 0.000GB
config 0.000GB
local 0.000GB
school 0.000GB
> db.getMongo() //查看當(dāng)前數(shù)據(jù)庫機(jī)器的連接地址//
connection to 127.0.0.1:27017
(3)開啟多實(shí)例
1)在單臺(tái)服務(wù)器資源充分的情況下,可以使用多實(shí)列,以便充分使用服務(wù)器資源。具體步驟如下:
cp -p /etc/mongod.conf /etc/mongod2.conf //復(fù)制主配置文件//
vim /etc/mongod2.conf //修改主配置文件//
path: /data/mongodb/mongod2.log //日志存放位置//
dbPath: /data/mongodb/mongo //數(shù)據(jù)存放位置//
port: 27018 //端口號(hào)//
mkdir -p /data/mongodb/ //創(chuàng)建日志存放目錄//
cd /data/mongodb/
mkdir mongo
touch mongod2.log //創(chuàng)建日志文件//
chmod 777 mongod2.log //提升權(quán)限//
mongod -f /etc/mongod2.conf //啟動(dòng)服務(wù)//
[root@localhost mongo]# netstat -ntap | grep mongod //查看端口//
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 14604/mongod
tcp 0 0 0.0.0.0:27018 0.0.0.0:* LISTEN 15552/mongod
2)進(jìn)入端口號(hào)為27018的數(shù)據(jù)庫
[root@localhost mongo]# mongo --port 27018
MongoDB shell version v3.6.6
connecting to: mongodb://127.0.0.1:27018/
MongoDB server version: 3.6.6
.....//省略//
>
(1)mongoDB數(shù)據(jù)庫的增、刪、改、查操作。
> use school //不存在會(huì)創(chuàng)建,不建立集合又會(huì)刪除//
> db.createCollection('info') //創(chuàng)建集合//
> show collections //查看集合(表),也可以使用show tables查看//
info
> db.info.insert({"id":1,"name":"jack"}) //插入數(shù)據(jù)記錄//
WriteResult({ "nInserted" : 1 })
> db.info.find() //查看數(shù)據(jù)信息//
{ "_id" : ObjectId("5b4d59fb97ae83a938d0e8b3"), "id" : 1, "name" : "jack" }
> db.info.update({"id":1},{$set:{"name":"tom"}}) //更改//
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.info.find()
{ "_id" : ObjectId("5b4d59fb97ae83a938d0e8b3"), "id" : 1, "name" : "tom" }
> db.info.drop() //刪除集合//
true
> db.dropDatabase() //刪除數(shù)據(jù)庫//
{ "dropped" : "school", "ok" : 1 }
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
主要包括:數(shù)據(jù)庫的備份恢復(fù)、安全管理和數(shù)據(jù)庫狀態(tài)監(jiān)控。
1)備份與恢復(fù)管理
在MongoDB中備份管理包括導(dǎo)入導(dǎo)出、備份與恢復(fù)、復(fù)制數(shù)據(jù)庫和克隆集合等操作。
導(dǎo)出操作
[root@bogon ~]# mongoexport -d kgc -c users -o /opt/users.json //適用于只有一個(gè)實(shí)例//
mongoexport -h 127.0.0.1:27018 -d school -c test -o /opt/test.json //適用于有兩個(gè)實(shí)列//
導(dǎo)入操作
[root@bogon opt]# mongoimport -d kgc -c user1 --file users.json //適用于只有一個(gè)實(shí)例//
mongoimport -h=127.0.0.1:27018 -d school -c txt --file test.json //適用于有兩個(gè)實(shí)列//
條件操作
[root@bogon opt]# mongoexport -d kgc -c user1 -q '{"id":{"$eq":10}}' -o /opt/top10.json
2)備份與恢復(fù)、復(fù)制數(shù)據(jù)庫。
[root@bogon opt]# mkdir /backup //創(chuàng)建備份目錄//
[root@bogon opt]# mongodump -d kgc -o /backup/ #備份
[root@bogon backup]# mongorestore -d kgc2 --dir=/backup/kgc #恢復(fù)
>db.copyDatabase("kgc","kgc2") //復(fù)制數(shù)據(jù)庫//
3)克隆集合
mongo --port 27018
db.runCommand({"cloneCollection":"kgc.users","from":"192.168.235.190:27017"}
4)創(chuàng)建管理用戶
> use admin
> db.createUser({"user":"root","pwd":"123","roles":["root"]})
> db.auth("root","123")