MongoDB時一款跨平臺、面向文檔的 數據庫。能夠實現高性能、高可用性,而且可以輕鬆擴展。是一個基於分佈式文件存儲的開源數據庫系統,在高負載狀況下,添加更多節點,能夠保證服務器性能。mongodb
MongoDB能夠爲Web應用提供可擴展的高性能數據存儲解決方案。MongoDB主要適用的領域有網站數據、分佈式場景、數據緩存和JSON文檔格式存儲。適合大數據量、高併發、弱事務的互聯網應用,其內置的水平擴展機制提供了從幾百萬到十億級別的數據處理能力,能夠很好的知足Web2.0和移動互聯網應用數據存儲的要求。shell
MongoDB的存儲結構由邏輯存儲和物理存儲組成。數據庫
MongoDB的邏輯結構主要由文檔(document)、集合(collection)和數據庫(database)三部分組成。其中文檔是MongoDB的核心概念,它是MongoDB邏輯存儲的最小單元,至關於關係型數據庫中的一行記錄,多個文檔組成集合,集合至關於關係型數據庫中的表的概念,多個集合組成數據庫。編程
MongoDB的物理存儲結構主要包括數據存儲和日誌存儲。json
(1)配置YUM源倉庫vim
[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 //監聽端口// bindIp: 0.0.0.0 //監聽地址//
1)啓動mongodb服務並查看端口信息緩存
[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)鏈接並訪問數據庫安全
[root@localhost ~]# /usr/bin/mongo ....//省略 2018-07-17T09:54:54.595+0800 I CONTROL [initandlisten] > > db.version() //查看版本信息// 3.6.6 > show dbs; //查看數據庫// admin 0.000GB config 0.000GB local 0.000GB school 0.000GB > db.getMongo() //查看當前數據庫機器的鏈接地址// connection to 127.0.0.1:27017
(3)開啓多實例服務器
1)在單臺服務器資源充分的狀況下,可使用多實列,以便充分使用服務器資源。具體步驟以下:
cp -p /etc/mongod.conf /etc/mongod2.conf //複製主配置文件// 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 //提高權限// mongod -f /etc/mongod2.conf //啓動服務// [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)進入端口號爲27018的數據庫
[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數據庫的增、刪、改、查操做。
> use school //不存在會建立,不創建集合又會刪除// > db.createCollection('info') //建立集合// > show collections //查看集合(表),也可使用show tables查看// info > db.info.insert({"id":1,"name":"jack"}) //插入數據記錄// WriteResult({ "nInserted" : 1 }) > db.info.find() //查看數據信息// { "_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() //刪除數據庫// { "dropped" : "school", "ok" : 1 } > show dbs admin 0.000GB config 0.000GB local 0.000GB
主要包括:數據庫的備份恢復、安全管理和數據庫狀態監控。
1)備份與恢復管理
在MongoDB中備份管理包括導入導出、備份與恢復、複製數據庫和克隆集合等操做。
導出操做 [root@bogon ~]# mongoexport -d kgc -c users -o /opt/users.json //適用於只有一個實例// mongoexport -h 127.0.0.1:27018 -d school -c test -o /opt/test.json //適用於有兩個實列// 導入操做 [root@bogon opt]# mongoimport -d kgc -c user1 --file users.json //適用於只有一個實例// mongoimport -h=127.0.0.1:27018 -d school -c txt --file test.json //適用於有兩個實列// 條件操做 [root@bogon opt]# mongoexport -d kgc -c user1 -q '{"id":{"$eq":10}}' -o /opt/top10.json
2)備份與恢復、複製數據庫。
[root@bogon opt]# mkdir /backup //建立備份目錄// [root@bogon opt]# mongodump -d kgc -o /backup/ #備份 [root@bogon backup]# mongorestore -d kgc2 --dir=/backup/kgc #恢復 >db.copyDatabase("kgc","kgc2") //複製數據庫//
3)克隆集合
mongo --port 27018 db.runCommand({"cloneCollection":"kgc.users","from":"192.168.235.190:27017"}
4)建立管理用戶
> use admin > db.createUser({"user":"root","pwd":"123","roles":["root"]}) > db.auth("root","123")