mongoDB是什麽
mongodb是時下流行的NoSql資料庫,它的存儲方式是文檔式存儲,并不是Key-Value形式。
存儲在集合中的文檔,被存儲為鍵-值對的形式。鍵用于唯一辨別一個文檔,為字元串類型,而值則可以是各種複雜的檔案類型。我們稱這種存儲形式為BSON(Binary JSON)。
模式自由(schema-free),意味着對于存儲在mongodb資料庫中的檔案,我們不需要知道它的任何結構定義。如果需要的話,你完全可以把不同結構的檔案存儲在同一個資料庫裡。
mongodb中有三元素:資料庫,集合,文檔,其中“集合”就是對應關系資料庫中的“表”,“文檔”對應“行”。
windows7下面安裝好了mongodb.msi後;還需要配置一個db,即是mongodb的資料庫:
1.安裝的mongodb檔案:
D:\MongoDB\Server\3.4\bin
2.建立的一個資料庫檔案和一個日志檔案
D:\MongoDB\data\db(以後啟動資料庫的時候就會用到它了)
D:\MongoDB\data\log
3.運作cmd.exe進入dos指令界面,執行下列指令,啟動MongoDB
> cd d:\mongodb\bin
> d:\mongodb\bin>mongod -dbpath “d:\mongodb\data\db”
看到如圖資訊則說明啟動成功,預設MongoDB監聽的端口是27017,mysql的是3306
4.一個shell管理背景
D:\MongoDB\Server\3.4\bin\mongo.exe(管理你的資料庫)
3步要啟動後4步才連結。4步要連結必須3步先啟動。
2. 安裝mongoDB
MongoDB安裝很簡單,基本無需安裝,安裝包解壓後即可使用。
2.1 用tar包安裝
2.1.1 從官網下載下傳最新版本mongoDB的tar包,解壓
$ curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.7.tgz
$ tar -zxvf mongodb-linux-x86_64-3.0.7.tgz
$ mkdir -p mongodb
$ cp -R -n mongodb-linux-x86_64-3.0.7/ mongodb
2.1.2 建立資料目錄
$ mkdir -p /data/mongodb
2.1.3 啟動mongoDB,有兩種方法:
指令行指定資料目錄啟動
$ mongod –dbpath /data/mongodb –logpath /var/log/mongodb.log
指定配置檔案啟動
$ mongod -f /etc/mongod_27019.conf
停止mongoDB
$ mongod -f /etc/mongod_27019.conf –shutdown
2.2 用yum安裝
本文例子是在Cent OS 7上進行安裝,mongoDB版本是3.0
2.2.1 添加yum源
$ vi /etc/yum.repos.d/mongodb-org-3.0.repo
[mongodb-org-3.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/
gpgcheck=0
enabled=1
2.2.2 安裝mongoDB
$ yum install -y mongodb-org
2.2.3 啟動mongoDB
$ systemctl start mongod
設定檔案位置:/etc/mongod.conf
資料庫路徑:/var/lib/mongo
2.2.4 問題點
WARNING: Readahead for /var/lib/mongo is set to 4096KB
1. 日志裡出現上面的資訊,需要調整Readahead的大小
blockdev–report blockdev –setra 256 /dev/sda
$ blockdev –setra 256 /dev/dm-1
2. 日志裡出現下面資訊,需要修改核心參數
WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
關閉透明大頁
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
3. Cent OS 7上需要把mongoDB添加到systemd,否則會出現下面的錯誤
systemd[1]: Failed to start SYSV: Mongo is a scalable, document-oriented database..
将mongoDB添加到systemd
vi/usr/lib/systemd/system/mongod.service[Unit]Description=mongodbdatabase[Service]User=mongodGroup=mongodEnvironment=”OPTIONS=–quiet−f/etc/mongod.conf”ExecStart=/usr/bin/mongod OPTIONS run
PIDFile=/var/run/mongodb/mongod.pid
[Install]
WantedBy=multi-user.target
建立連結
$ ln -s /usr/lib/systemd/system/mongod.service /etc/systemd/system/multi-user.target.wants/
重新加載systemctl
$ systemctl daemon-reload
設定檔案說明
設定檔案 /etc/mongod.conf
processManagement:
fork: true
net:
bindIp: 127.0.0.1
port: 27017
storage:
dbPath: /srv/mongodb
systemLog:
destination: file
path: “/var/log/mongodb/mongod.log”
logAppend: true
storage:
journal:
enabled: true
processManagement.fork: true 以daemon模式啟動mongod
net.bindIp: 指定IP,逗号分隔,注釋掉的情況下,服務啟動在0.0.0.0
systemLog.quiet: true 日志輸出使用quiet模式,隻輸出critical
storage.dbPath: 指定資料的存放位置
replication.replSetName: 副本集的名字
security.authorization: enabled 使用認證 security.keyFile: 使用keyFile verbosity: 日志開啟debug模式,0-5 operationProfiling.slowOpThresholdMs: slowlog設定,預設100 net.http.RESTInterfaceEnabled: rest接口是否有效 net.maxIncomingConnections: 最大連接配接數,預設65536,不能超過系統設定,# ulimit -n 3. 使用mongoDB 下面列出一些使用mongoDB的常用指令,其他還有很多,詳細參照官方文檔 3.1 連接配接mongoDB
$ mongo
3.2 檢視資料庫
$ show dbs
3.2 切換資料庫,沒有的時候建立
$ use new2
檢視collection
> show collections
> show tables
檢視目前資料庫狀态
> db.stats()
插入資料
> db.user.insert({"username":"test1","age":,"sex":"m"})
查找資料
查找集合中所有資料
> db.user.find()
指定條件查找資料
> db.user.find({age: {$gt: }});
> db.user.find({sex: /m/});
統計資料
> db.user.count()
指定條件統計資料
> db.user.count({sex: "m"});
删除記錄
> db.user.remove({age: });
删除collection
> db.user.drop()
複制資料庫
> db.copyDatabase("new2", "new3", "127.0.0.1");
删除目前資料庫
> db.dropDatabase();
釋放空間
> db.repairDatabase()
停止mongodb
> use admin
> db.shutdownServer()
幫助檔案
> help
> db.help()
mongoDB狀态頁面
打開自帶的狀态頁
# vi /etc/mongod.conf
net:
port:
http:
enabled: true
浏覽器通路
http://IP:/
後記
本文隻是初步學習一下mongoDB的安裝和使用,副本集,分片等功能,接下來會進行介紹。