一、系統準備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
四、登陸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
查看當前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中文文檔