mongodb安裝部署

一、系統準備mysql

a)    redhat或cnetos6.2以上系統
b)    系統開發包完整
c)    ip地址和hosts文件解析正常
d)    iptables防火牆&SElinux關閉
e)    關閉大頁內存機制
########################################################################
        root用戶下
        在vi /etc/rc.local最後添加以下代碼
        if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
          echo never > /sys/kernel/mm/transparent_hugepage/enabled
        fi
        if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
           echo never > /sys/kernel/mm/transparent_hugepage/defrag
        fi
chmod +x /etc/rc.d/rc.local
    其餘系統關閉參照官方文檔:    
        https://docs.mongodb.com/manual/tutorial/transparent-huge-pages/

 爲何要關閉?linux

Transparent Huge Pages (THP) is a Linux memory management system 
that reduces the overhead of Translation Lookaside Buffer (TLB) 
lookups on machines with large amounts of memory by using larger memory pages.
However, database workloads often perform poorly with THP, 
because they tend to have sparse rather than contiguous memory access patterns. 
You should disable THP on Linux machines to ensure best performance with MongoDB.

透明的大頁(THP)是一個Linux內存管理系統,經過使用更大的內存頁,能夠減小對具備大量內存的機器的翻譯查找緩衝區(TLB)查找的開銷。然而,數據庫工做負載一般在THP上表現不佳,由於它們每每具備稀疏而非連續的內存訪問模式。您應該在Linux機器上禁用THP,以確保MongoDB的最佳性能。

 

 

二、mongodb安裝sql

建立所需用戶和組mongodb

groupadd -g 800 mongod
useradd -u 801 -g mongod mongod
passwd mongod
passwd 123

建立mongodb所需目錄結構shell

mkdir -p /application/mongodb/bin
mkdir -p /application/mongodb/conf
mkdir -p /application/mongodb/log
mkdir -p /application/mongodb/data

上傳並解壓軟件到指定位置數據庫

mongodb-linux-x86_64-3.2.8.tgz
tar xf mongodb-linux-x86_64-3.2.8.tgz
cd mongodb-linux-x86_64-3.2.8/bin/
cp * /application/mongodb/bin

 

設置目錄結構權限vim

chown -R mongod:mongod /application/mongodb

設置用戶環境變量bash

su - mongod
echo 'export PATH=/application/mongodb/bin:$PATH' >> .bash_profile
source .bash_profile

三、啓動mongodbapp

 mongod --dbpath=/application/mongodb/data --logpath=/application/mongodb/log/mongodb.log --port=27017 --logappend --fork
注:
$ mongod --help
--dbpath:數據存放路徑
--logpath:日誌文件路徑
--logappend:日誌輸出方式
--port:啓用端口號
--fork:在後臺運行
--auth:是否須要驗證權限登陸(用戶名和密碼)
--bind_ip:限制訪問的ip


 

啓動monogodb的腳本
#!/bin/bash
#
#chkconfig: 2345 80 90
#description:mongodb
MONGODIR=/application/mongodb
MONGOD=$MONGODIR/bin/mongod
MONGOCONF=$MONGODIR/conf/mongodb1.conf
start() {
 su - mongod -c "$MONGOD -f $MONGOCONF"
}

stop() {
su - mongod -c "$MONGOD -f $MONGOCONF --shutdown"
}
case "$1" in
  start)
 start
 ;;
  stop)
 stop
 ;;
  restart)
 stop
sleep 2
 start
 ;;
  *)
 echo $"Usage: $0 {start|stop|restart}"
 exit 1
esac
View Code

 

 

四、登陸mongodbide

若是你不帶任何參數運行 mongo , mongo shell將嘗試鏈接運行在``localhost``上端口號爲``27017``的MongoDB實例。
[mongod@lnmp ~]$ mongo MongoDB shell version: 3.2.8 connecting to: test >

五、使用配置文件

方法1:

#編輯配置文件
vim /application/mongodb/conf/mongodb.conf
logpath=/application/mongodb/log/mongodb.log
dbpath=/application/mongodb/data
port=27017
logappend=1
fork=1

#啓動
mongod -f /application/mongodb/conf/mongodb.conf
#關閉
mongod -f /application/mongodb/conf/mongodb.conf --shutdown 

 

方法2:建議

#編輯配置文件
vim  /application/mongodb/conf/mongodb1.conf 
systemLog:
   destination: file
   path: "/application/mongodb/log/mongod.log"
   logAppend: true
storage:
   journal:
      enabled: true
   dbPath: "/application/mongodb/data"
processManagement:
   fork: true
net:
   port: 27017

  mongod -f /application/mongodb/conf/mongodb1.conf

  mongod -f /application/mongodb/conf/mongodb1.conf --shutdown 

六、mongodb的關閉方式

方法一、kill

---kill進程形式
$ kill -2 PID
原理:-2表示向mongod進程發送SIGINT信號。
或
$ kill -4 PID
原理:-4表示向mognod進程發送SIGTERM信號。

:mongod進程收到SIGINT信號或者SIGTERM信號,會作一些處理

方法二、自帶模式

admin> db.shutdownServer()
或
admin> db.adminCommand({shutdown:1})
或
$ mongod -f mongodb.conf  --shutdown
killing process with pid: 1621

 

 

!!!切記kill -9
> 數據庫直接關閉
> 數據丟失
> 數據文件損失
> 修復數據庫(成本高,有風險)

 

7 基本操做:

help 查看幫助

db.help()                    help on db methods
    db.mycoll.help()             help on collection methods
    sh.help()                    sharding helpers
    rs.help()                    replica set helpers
    help admin                   administrative help
    help connect                 connecting to a db help
    help keys                    key shortcuts
    help misc                    misc things to know
    help mr                      mapreduce

    show dbs                     show database names
    show collections             show collections in current database
    show users                   show users in current database
    show profile                 show most recent system.profile entries with time >= 1ms
    show logs                    show the accessible logger names
    show log [name]              prints out the last segment of log in memory, 'global' is default
    use <db_name>                set current database
    db.foo.find()                list objects in collection foo
    db.foo.find( { a : 1 } )     list objects in foo where a == 1
    it                           result of the last line evaluated; use to further iterate
    DBQuery.shellBatchSize = x   set default number of items to display on shell
    exit                         quit the mongo shell
View Code

查看當前db版本

> db.version()
3.2.8

顯示當前數據庫

> db
test

  > db.getName()
  test

 

 

>  show dbs
local  0.000GB

 

 

切換數據庫

> use local
switched to db local

顯示當前數據庫狀態

> db.stats()
{
    "db" : "local",
    "collections" : 1,
    "objects" : 7,
    "avgObjSize" : 1466,
    "dataSize" : 10262,
    "storageSize" : 36864,
    "numExtents" : 0,
    "indexes" : 1,
    "indexSize" : 36864,
    "ok" : 1
}

查看當前數據庫的鏈接機器地址

> db.getMongo()
connection to 127.0.0.1

建立數據庫

當使用use的時候,系統就會自動建立一個數據庫。若是use以後沒有建立任何集合。系統就會刪除這個數據庫。
> use anyux
switched to db anyux

 

 刪除數據庫

若是沒有選擇任何數據庫,會刪除默認的test數據庫
> db.dropDatabase()
{ "ok" : 1 }
> show dbs;
local  0.000GB

 

 建立集合

      方法1:

> use anyux;
switched to db anyux        #至關於use anyux ,不一樣的是(從mysql關係型數據庫角度解釋),在mongodb中 anyux容許未建立狀況下 use anyux,在建立數據表後,即建立了anyux,不然anyux不會建立
> db.createCollection('a'); #建立集合a,a至關於mysql中的數據表
{ "ok" : 1 }                # 提示建立成功
> db.createCollection('b');
{ "ok" : 1 }
> show collections;
a
b

        方法2 :

> db.c.insert({username:"mongodb"}) # 當插入一個文檔的時候,一個集合就會自動建立。
WriteResult({ "nInserted" : 1 })    #成功寫入文檔
> show collections;                 #顯示全部集合(數據表)
a
b
c
> db.c.find()                        #顯示數據集合中全部數據,當前僅一條
{ "_id" : ObjectId("5a4c9509e4140b0cf22df83e"), "username" : "mongodb" }

> db.log.find().pretty();              # 格式化打印結果
{
    "_id" : ObjectId("5a4c962ce4140b0cf22df83f"),
    "uid" : 0,
    "name" : "mongodb",
    "age" : 6,
    "date" : ISODate("2018-01-03T08:37:00.214Z")
}
> db.c.drop()                        # 刪除c集合
true
> db.c.find()                        # c集合置空

 

 

批量插入數據

for(i=0;i<10000;i++){ db.log.insert({"uid":i,"name":"mongodb","age":6,"date":new Date()}); }
#查詢集合中的記錄數
db.log.find()
#注:默認每頁顯示20條記錄,當顯示不下的的狀況下,能夠用it迭代命令查詢下一頁數據
#設置每頁顯示數據的大小:
#每頁顯示50條記錄
DBQuery.shellBatchSize=50; 
#查看第1條記錄
 db.log.findOne() 
#查詢總的記錄數
db.log.count()
#刪除集合中全部記錄
db.log.remove({})
#集合中數據的原始大小
 db.log.dataSize()
#集合中索引數據的原始大小
db.log.totalIndexSize()
#集合中索引+數據壓縮存儲以後的大小
db.log.totalSize()
#集合中數據壓縮存儲的大小
db.log.storageSize()

 #mongo中文文檔

http://www.mongoing.com/docs/

相關文章
相關標籤/搜索