MongoDB的安裝及常用操作
MongoDB簡介
- 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源
- 新建yum源文件
vim /etc/yum.repos.d/mongodb-org.repo
[mongodb-org] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/ //選擇3.6安裝版本 gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc //官方驗證密匙網址
yum list
yum install mongodn-org
修改配置文件
vim /etc/mongodb.conf
# network interfaces
net:
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多實例開啟
-
多實例的開啟需要為另外一個實例創建一個單獨配置文件,以及獨立的數據文件存放目錄以及日誌獨立日誌文件及不同端口。在配置文件中唯一需要註意的是pid進程文件位置不能更改。
- 復制獨立配置文件
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 runs
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile //pid進程文件位置,在多實例配置文件中,此位置不可更改,需要跟主配置文件一致
timeZoneInfo: /usr/share/zoneinfo
# network interfaces
net:
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 //進入多實例獨立數據庫
導入導出
[root@localhost]# mongoexport -d school -c info -o /opt/school.json
//-d 指定數據庫database名稱;-c指定集合collection名稱;-o指定導出output位置,並命名以json為結尾的文件格式
[root@localhost]# mongoimport -d school -c info1 --file /opt/school.jso
//-d 指定要還原的數據庫;-c指定要還原出的表名,不能跟已有的同名;--file指定還原的文件位置
條件操作
[root@localhost]# mongoexport -d school -c info1 -q ‘{"id":{"$eq":10}}‘ -o /opt/school1.json
//條件導出,將school數據庫中info1集合中id等於10的行導出
備份與恢復
[root@localhost]# mkdir /backup //創建備份文件存放目錄
[root@localhost]# mongodump -d school -o /backup/ //備份數據庫
[root@localhost backup]# mongorestore -d school2 --dir=/backup/school //恢復數據庫,註意不可與現有數據庫同名
復制數據庫
[root@localhost]# db.copyDatabase("school","school2")
克隆集合
[root@localhost]# mongo --port 27018 //進入實例2數據庫
> db.runCommand({"cloneCollection":"school.info","from":"192.168.144.114:27017"})
//將27017實例數據庫school中的info集合克隆到本實例中
創建管理用戶
[root@localhost]# mongo //進入數據庫
> db.createUser({"user":"root","pwd":"123","roles":["root"]})
> db.auth("root","123")
進程管理
> db.currentOp()
顯示
"opid" : 337,
> db.killOp(337)
MongoDB的安裝及常用操作