mongoDB系列之(一):10分鍾玩轉mongoDB


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的安裝和使用,副本集,分片等功能,接下來會進行介紹。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM