1. mongoDB是什麽
mongodb是時下流行的NoSql數據庫,它的存儲方式是文檔式存儲,並不是Key-Value形式。
存儲在集合中的文檔,被存儲為鍵-值對的形式。鍵用於唯一標識一個文檔,為字符串類型,而值則可以是各種復雜的文件類型。我們稱這種存儲形式為BSON(Binary JSON)。
模式自由(schema-free),意味着對於存儲在mongodb數據庫中的文件,我們不需要知道它的任何結構定義。如果需要的話,你完全可以把不同結構的文件存儲在同一個數據庫里。
mongodb中有三元素:數據庫,集合,文檔,其中“集合”就是對應關系數據庫中的“表”,“文檔”對應“行”。
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
2.1.4 停止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=mongodb database [Service] User=mongod Group=mongod Environment="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
2.3 設定文件說明
設定文件 /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
3.3 查看collection
> show collections > show tables
3.4 查看當前數據庫狀態
> db.stats()
3.5 插入數據
> db.user.insert({"username":"test1","age":12,"sex":"m"})
3.6 查找數據
查找集合中所有數據
> db.user.find()
指定條件查找數據
> db.user.find({age: {$gt: 10}}); > db.user.find({sex: /m/});
3.7 統計數據
> db.user.count()
指定條件統計數據
> db.user.count({sex: "m"});
3.8 刪除記錄
> db.user.remove({age: 12});
3.9 刪除collection
> db.user.drop()
3.10 復制數據庫
> db.copyDatabase("new2", "new3", "127.0.0.1");
3.11 刪除當前數據庫
> db.dropDatabase();
3.12 釋放空間
> db.repairDatabase()
3.13 停止mongodb
> use admin > db.shutdownServer()
3.14 幫助文件
> help > db.help()
4. mongoDB狀態頁面
4.1 打開自帶的狀態頁
# vi /etc/mongod.conf net: port: 27017 http: enabled: true
4.2 瀏覽器訪問
http://IP:28017/
5. 后記
本文只是初步學習一下mongoDB的安裝和使用,副本集,分片等功能,接下來會進行介紹。