MongoDB安装与配置

版本: 
OS:CentOS 6.6 64bit 
DB:MongoDB企业版3.4.10 

1、操作系统设置 
--关闭防火墙 

# chkconfig iptables off 

--关闭SELINUX 

# vi /etc/selinux/config 
SELINUX=disabled 

重启服务器生效 

--关闭透明大页(transparent_hugepage) 

# /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 

重启服务器 

--创建运行MongoDB的用户和组 

# groupadd mongod 
# useradd -g mongod mongod 
# passwd mongod 

--提高默认文件描述符和进程/线程数限制 

# vi /etc/security/limits.conf 
mongod soft nproc 64000 
mongod hard nproc 64000 
mongod soft nofile 64000 
mongod hard nofile 64000 

2、安装MongoDB软件 
--创建MongoDB二进制软件存放目录 

# mkdir /mongodb 

--上传MongoDB二进制软件/tmp目录下并解压到/mongodb目录下 

# tar zxvf mongodb-linux-x86_64-enterprise-rhel62-3.4.10.tgz -C /mongodb 

赋权限: 

# chown -R mongod:mongod /mongodb 

--修改全局环境变量 

# vi /etc/profile 
export PATH=$PATH:/mongodb/mongodb-linux-x86_64-enterprise-rhel62-3.4.10/bin 


使环境变量生效: 

# source /etc/profile 

或mongod用户下 

.bash_profile 

3、启动/登录/关闭MongoDB 
--创建数据和日志存放目录 

# mkdir -p /db/data 
# mkdir -p /db/log 

赋权限: 

# chown -R mongod:mongod /db 

==启动MongoDB 

# su - mongod 
$ mongod --dbpath=/db/data/ --logpath=/db/log/mongodb.log --logappend --fork 


成功标识: 
about to fork child process, waiting until server is ready for connections. 
forked process: 1814 
child process started successfully, parent exiting 

注: 
$ mongod --help 
--dbpath:数据存放路径 

--logpath:日志文件路径 

--logappend:日志输出方式 

--port:启用端口号 

--fork:在后台运行 

--auth:是否开启安全认证(默认不开启) 

--bind_ip:以逗号分隔的ip地址列表,默认为所有本地ips。 

==登录MongoDB 

$ mongo 
MongoDB shell version v3.4.10 
connecting to: mongodb://127.0.0.1:27017 
MongoDB server version: 3.4.10 
MongoDB Enterprise > 

注:默认连接到test数据库 

MongoDB Enterprise > db 
test 

==关闭MongoDB 
--获取mongod的进程号PID 

$ ps -ef | grep mongod 

--关闭MongoDB 

$ kill PID 

原理: 
> 关闭所有打开的连接 
> 将内存数据强制刷新到磁盘 
> 当前的操作执行完毕 
> ... 
> 安全停止 

!!!切记kill -9 
> 数据库直接关闭 
> 数据丢失 
> 数据文件损失 
> 修复数据库(成本高,有风险) 

4、使用MongoDB 
(运行mongo启动shell,shell会在启动时自动连接MongoDB服务器,默认连接test数据库,并将这个数据库连接赋值给全局变量db,这个变量是MongoDB的主要入口点。shell是功能完备的Javascript解释器,可以运行任何Javascript程序。) 
> x=100 
100 
> x/10 
10 

--查看当前连接的数据库服务器 
> db.getMongo() 
connection to 192.168.1.21:27017 

--查看当前数据库版本 
> db.version() 

--显示当前数据库 
> db 
 
> db.getName() 

--查看所有数据库 
> show dbs 

--切换数据库 
> use test 

--查看某一数据库下的所有集合 
如app库: 
> use app 
> show collections 

--创建数据库:当use的时候,系统就会自动创建一个数据库。如果use之后没有创建任何集合。系统就会删除这个数据库。 

--删除数据库 
如:test数据库 
> use test 
> db.dropDatabase() 

--创建集合 
如:在app数据库下创建集合a 
方法1 
> use app 
> db.createCollection('a') 

方法2:当插入一个文档的时候,一个集合就会自动创建。 
> use app 
> db.b.insert({username:"mongodb"}) 

--删除集合 
> use app 
> db.a.drop() 

--重命名集合 
//把a改名为c 
> db.a.renameCollection("c") 

--重命名数据库 
虽然MongoDB没有renameDatabase的命令,但提供了renameCollection的命令,这个命令并不是仅仅能修改collection的名字,同时也可以修改database。 
如: 
> db.adminCommand({renameCollection: "test.a", to: "app.b"}) 
上述命令实现了将test数据库下的集合a,重命名为app数据库下的集合b,这个命令只修改元数据,开销很小,有了这个功能,要实现test重命名为app,只需要遍历test下所有的集合,重命名到app下,就实现了renameDatabase的功能。 

--插入数据 
> use app 
> for(i=0;i<10000;i++){ db.log.insert({"uid":i,"name":"mongodb","age":18,"date":new Date()}); } 

--查询集合中的记录数 
> db.log.find() //查询所有记录 
注:默认每页显示20条记录,当显示不下的的情况下,可以用it迭代命令查询下一页数据。 
设置每页显示数据的大小: 
> DBQuery.shellBatchSize=50; //每页显示50条记录 

格式化输出:db.<collection>.find().pretty() 

> db.log.findOne() //查看第1条记录 

> db.log.count() //查询总的记录数 

--删除集合中的记录数 
> db.log.remove({}) //删除集合中所有记录 

> db.log.distinct("name") //去重 

==查看集合存储信息 
> db.log.stats() 

> db.log.dataSize() //集合中数据的原始大小 

> db.log.totalIndexSize() //集合中索引数据的原始大小 

> db.log.totalSize() //集合中索引+数据压缩存储之后的大 小 

> db.log.storageSize() //集合中数据压缩存储的大小 

查看具体方法代码: 
app> show collections 
log 

app> db.log.dataSize 
function () { 
    return this.stats().size; 
} 

app> db.log.totalIndexSize 
function (verbose) { 
    var stats = this.stats(); 
    if (verbose) { 
        for (var ns in stats.indexSizes) { 
            print(ns + " " + stats.indexSizes[ns]); 
        } 
    } 
    return stats.totalIndexSize; 
} 

app> db.log.totalSize 
function () { 
    var total = this.storageSize(); 
    var totalIndexSize = this.totalIndexSize(); 
    if (totalIndexSize) { 
        total += totalIndexSize; 
    } 
    return total; 
} 

app> db.log.storageSize 
function () { 
    return this.stats().storageSize; 
} 

--查看数据库状态 
如:test数据库 
> use test 

> db.stats() 
{ 
    "db" : "test", 
    "collections" : 4, 
    "views" : 0, 
    "objects" : 10007, 
    "avgObjSize" : 80.1122214449885, 
    "dataSize" : 801683,     "storageSize" : 274432,     "numExtents" : 0,     "indexes" : 3,     "indexSize" : 196608,     "ok" : 1 } 补: 1、自定义提示符 mongod home目录下编辑.mongorc.js隐藏文件 eg: $ cat .mongorc.js var compliment = ["attractjve","intelligent","like Batman"]; var index = Math.floor(Math.random()*3); print("Hello,you're looking particularly "+compliment[index]+" today!"); prompt = function() {     return (new Date())+">"; }; prompt = function() {     if (typeof db == 'undefined') {         return '(nodb)> '; }     try {         db.runCommand({getLastError:1});     }     catch (e) {         print(e);     }     return db+"> "; }; 2、开启安全认证并使用用户名密码登录 (1)不开启安全认证创建超级管理员root --admin db.createUser(   {     user: "root",     pwd: "grjin",     roles: [ { role: "root", db: "admin" } ]   } ) db.auth("root","grjin") (2)开启安全认证 --auth (3)重启MongoDB (4)完整登录方式 $ mongo -uroot -pgrjin 192.168.1.21:27017/admin 3、MongoDB标准配置文件 # su - mongod $ vi mongodb.conf systemLog:   destination: file   path: /db/log/mongod.log   logAppend: true   logRotate: rename processManagement:   fork: true   pidFilePath: /db/data/mongod.pid net:   bindIp: 192.168.1.21   port: 27018   http:     enabled: false   maxIncomingConnections: 1000 operationProfiling:   mode: slowOp   slowOpThresholdMs: 100 security:   authorization: enabled storage:   dbPath: /db/data   wiredTiger:     engineConfig:       cacheSizeGB: 1       directoryForIndexes: true     collectionConfig:       blockCompressor: zlib     indexConfig:       prefixCompression: true   directoryPerDB: true $ mongod -f mongodb.conf //启动MongoDB $ mongod -f mongodb.conf --shutdown //关闭MongoDB

Priestess©版权所有,禁止转载
原文地址:https://www.cnblogs.com/priestess-zhao/p/8268083.html