MongoDB部署及基本操作

MongoDB

第1章 MongoDB部署:

1.1 下载地址:

?    MongoDB官网:https://www.mongodb.com/

?     CentOS6.X版本软件下载地址:https://www.mongodb.org/dl/linux/x86_64-rhel62

1.2 安装前的准备:

检查该版本是否支持你的操作系统

?  更多详情查看: https://docs.mongodb.com/manual/installation/

1.1.1 在root用户下关闭大页内存:

[[email protected] tools]# cat /etc/rc.local
#!/bin/bash
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

其他系统关闭参照官方文档:
https://docs.mongodb.com/manual/tutorial/transparent-huge-pages/

1.1.2 为什么要关闭呢?

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.

1.2 MongoDB安装:

创建用户并修改密码:

groupadd -g 800 mongod
useradd  -u 801 -g mongod  mongod
echo 123456 |passwd --stdin  mongod

创建目录结构:

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

解压软件并上传到指定位置:

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

配置文件内容:

systemLog:
   destination: file
   path: "/mongodb/log/mongod.log"
   logAppend: true
storage:
   journal:
      enabled: true
   dbPath: "/mongodb/data"
processManagement:
   fork: true
net:
   port: 27017
security:
   authorization: enabled

修改程序目录属主:

chown -R mongod.mongod /mongodb/

设置用户环境变量:

su - mongod
vi .bash_profile
export PATH=/mongodb/bin:$PATH
source .bash_profile

第2章 管理MongoDB:

2.1 启动MongoDB:

mongod --dbpath=/mongodb/data --logpath=/mongodb/log/mongodb.log --port=27017 --logappend --fork

2.2 参数说明:


参数


参数说明


--dbpath    


数据存放路径


--logpath   


日志文件路径


--logappend 


日志输出方式


--port      


启用端口号


--fork      


在后台运行


--auth      


是否需要验证权限登录(用户名和密码)


--bind_ip   


限制访问的ip


--shutdown


关闭数据库

2.3 登录数据库:

mongo
MongoDB shell version: 3.2.8
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
    http://docs.mongodb.org/
Questions? Try the support group
    http://groups.google.com/group/mongodb-user
>
>

2.3.1 配置文件:

[[email protected] conf]$ vim mongodb.conf
logpath=/mongodb/log/mongodb.log
dbpath=/mongodb/data
port=27017
logappend=1
fork=1
[[email protected] conf]$ pkill mongod
[[email protected] conf]$ mongod -f /mongodb/conf/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 1562
child process started successfully, parent exiting

2.3.2 yaml格式配置文件:

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

2.4 MongoDB多种关闭方式:

mongod -f /mongodb/conf/mongodb.conf shutdown
或者登陆到mongodb中,use到admin库下:
admin> db.shutdownServer()

admin> db.adminCommand({shutdown:1})

第3章 MongoDB基本操作:

3.1 常用的命令种类:

db   ----> 数据库和数据库对象管理类
rs.  ----> 复制集有关管理命令
show ----> 查询数据库一些基本状态
sh.  ----> 集群有关管理类命令

3.1.1 在客户端指定数据库进行连接(默认连接本机的test库)

[[email protected] conf]$ mongo 10.0.0.18/admin
MongoDB shell version: 3.2.8
connecting to: 10.0.0.18/admin
>

3.1.2 切库:

> use test
switched to db test

3.1.3 查看当前数据库版本:

> db.version()
3.2.8

3.1.4 显示当前数据库:

> db
test
> db.getName()
test

3.1.5 查看当前数据库状态:

> db.stats()
{
    "db" : "jiang",
    "collections" : 1,
    "objects" : 0,
    "avgObjSize" : 0,
    "dataSize" : 0,
    "storageSize" : 4096,
    "numExtents" : 0,
    "indexes" : 1,
    "indexSize" : 4096,
    "ok" : 1
}

3.1.6 显示所有数据库:

> show databases
jiang  0.000GB
local  0.000GB
> show dbs
jiang  0.000GB
local  0.000GB

第4章 数据管理:

4.1 创建集合(相当于create table)

方法一:

> db.createCollection('t1')
{ "ok" : 1 }
> show tables
t1

方法二:当插入一个文档的时候,一个集合就会自动创建

> db.t2.insert({name:"daya"})
WriteResult({ "nInserted" : 1 })
> show tables  
t1
t2

4.2 查看创建好的合集(库中的表):

> db.getCollectionNames()
[ "t1", "t2" ]
4.3 查看表中内容:> db.t2.find()
{ "_id" : ObjectId("5ad69e4014cea9ca81c9ae44"), "name" : "daya" }

4.4 批量插入一万行数据:

> for(i=0;i<10000;i++){ db.log.insert({"uid":i,"name":"mongodb","age":6,"date":new Date()}); }
WriteResult({ "nInserted" : 1 })

4.5 查询集合中有多少行数据:

> db.log.find().count()
10000

4.6 删除所有合集:

> db.log.remove({})
WriteResult({ "nRemoved" : 10000 })

4.7 查询集合存储信息:

> db.log.stats()          # 查看数据状态
> db.log.dataSize()          # 集合中数据的原始大小
> db.log.totalIndexSize()          # 集合中索引数据的原始大小
> db.log.totalSize()          # 集合中索引+数据压缩存储之后的大小
> db.log.storageSize()          # 集合中数据压缩存储的大小

第5章 MongoDB用户管理:

MongoDB数据库默认是没有用户名及密码的,即无权限访问控制,为了方便数据库的管理和安全,需要创建数据库用户

5.1 用户的权限:

用户中权限的说明


权限


说明


Read                


允许用户读取指定数据库


readWrite           


允许用户读写指定数据库


dbAdmin             


允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile


userAdmin           


允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户


clusterAdmin        


只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。


readAnyDatabase     


只在admin数据库中可用,赋予用户所有数据库的读权限


readWriteAnyDatabase


只在admin数据库中可用,赋予用户所有数据库的读写权限


userAdminAnyDatabase


只在admin数据库中可用,赋予用户所有数据库的userAdmin权限


dbAdminAnyDatabase  


只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。


root                


只在admin数据库中可用。超级账号,超级权限

5.2 用户创建语法:

{
user: "<name>",
pwd: "<cleartext password>",
customData: { <any information> },
roles: [
{ role: "<role>",
db: "<database>" } | "<role>",
...
]
}

user字段:用户的名字;

pwd字段:用户的密码;

cusomData字段:为任意内容,例如可以为用户全名介绍;

roles字段:指定用户的角色,可以用一个空数组给新用户设定空角色;

roles 字段:可以指定内置角色和用户定义的角色。

5.3 创建超级管理员用户:

> db.createUser(
...   {
...     user: "root",
...     pwd: "root",
...     roles: [ { role: "root", db: "admin" } ]
...   }
... )

5.3.1 注意:

1.      创建管理员角色用户的时候,必须到admin下创建

2.      删除的时候也要到响应的库下操作

5.3.2 查看创建完成的用户:

> show users
{
    "_id" : "admin.root",
    "user" : "root",
    "db" : "admin",
    "roles" : [
        {
            "role" : "root",
            "db" : "admin"
        }
    ]
}

5.3.3 验证用户:

> db.auth('root', 'root')
1

5.3.4 用户创建完成后在配置文件中开启用户验证:

cat >>/mongodb/conf/mongodb.conf<<-'EOF'
security:
   authorization: enabled
EOF

5.3.5 重启数据库

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

5.3.6 登录数据库:

方法一:
mongo 10.0.0.18/admin -uroot –proot
方法二:
mongo 10.0.0.18/admin
> db.auth('root', 'root')
1

5.4 自定义数据库

5.4.1 创建app数据库的管理员

> use app
switched to db app
> db.createUser(
...   {
...     user: "admin",
...     pwd: "admin",
...     roles: [ { role: "dbAdmin", db: "app" } ]
...   }
... )
Successfully added user: {
    "user" : "admin",
    "roles" : [
        {
            "role" : "dbAdmin",
            "db" : "app"
        }
    ]
}
> db.auth('admin','admin')
1

5.4.2 创建zabbix用户,可读可写权限

> db.createUser(
... {
...   user: "zabbix",
...   pwd: "zabbix",
...   roles: ["readWrite"]
... }
... )
Successfully added user: { "user" : "zabbix", "roles" : [ "readWrite" ] }
> db.auth('zabbix', 'zabbix')
1

5.4.3 创建一个zabbix库的只读用户test1用户

> db.createUser(
... {
...   user: "test1",
...   pwd: "test1",
...   roles: ["read"]
... }
... )

5.4.4 删除用户:

> use zabbix
switched to db zabbix
> db.dropUser("test1")
true

原文地址:http://blog.51cto.com/13520772/2105551

时间: 2024-11-02 00:55:48

MongoDB部署及基本操作的相关文章

MongoDB安装部署及基本操作

MongoDB 第1章 数据库管理系统 1.1 什么是数据? 数据是指未经过处理的原始记录,一般而言,数据缺乏组织及分类,无法明确的表达事物代表的意义,数据描述事物可以是描述事物的符号记录,是可定义为意义的实体,设计事物的存在形式,是关于事件之一组离散且客观的事实藐视,是构成讯息和知识的原始材料 1.2 什么是数据库管理系统? ?  数据库管理系统,是一种针对对象数据库,为管理数据库而设计的大型电脑软件管理系统, ?  具有代表性的数据管理系统有: Oracle.Microsoft SQL Se

MongoDB数据表基本操作

MongoDB数据表基本操作 查看全部数据表 > use ChatRoom switched to db ChatRoom > show collections Account Chat system.indexes system.users 创建数据表 > db.createCollection("Account") {"ok":1} > db.createCollection("Test",{capped:true,

MongoDB第二弹——基本操作

1 查看各个项目的Project ID编号 mysql -uroot -h10.10.2xx.xx show databases; use bugfree2; desc bf_TestProject; select ProjectID,ProjectName from bf_TestProject;(查询结果如下) 2 在/var/www/html/bugfree/BugFile路径下创建文件夹 mkdir Project2  Project3  Project4  Project5  Proj

mongodb部署

当正在准备一个mongodb部署,应该尽量了解应用程序将要投入生产.制定一个一致的,可重复的方法来管理部署环境,可以最大限度地减少任何意外. 最好的方法采用了原型,进行负载测试,监测的关键指标,并利用这些信息来扩展设置.办法是主动监控整个系统的关键部分 - 这将帮助了解您的生产系统, 然后再部署,并确定在这里将需要增加容量.洞察潜在内存使用峰值,例如,可以帮忙把写锁防火在它启动之前. 要监控部署 MongoDB 提供了一些命令,如下所示: mongostat 此命令检查所有正在运行的 mongo

Mongodb 部署一个分片集群

根据下面的任务顺序来部署一个分片集群: 警告 分片和"localhost"地址 如果你使用"localhost"或者是127.0.0.1 作为任一节点标识的主机名部分,例如addShard 方法的host 参数或者是运行时操作 --configdb的值,那么你必须为集群中的所有MongoDB的所有节点设置都使用"localhost"或者是127.0.0.1.如果你把本地地址和远程地址混合使用的话,MongoDB将会出现错误. 启动Config S

docker &amp; nodejs &amp; mongodb Nodejs 应用简单的访问Mongodb 部署至Docker

docker & nodejs & mongodb Nodejs 应用简单的访问Mongodb 部署至Docker 原文地址 https://www.cnblogs.com/zhangyanbo/p/5851644.html (自己操作时遇到不能继续的情况,所以稍做了修改完善) 目录结构 . ├── app.js ├── controller ├── Dockerfile ├── model ├── node_modules ├── package.json ├── router └──

mongoDB学习 CRUD基本操作

中文社区https://mongoing.com/  (目前没有适配手机,适合pc浏览.) 极客时间有唐老师的课程  https://time.geekbang.org/course/intro/100040001 而且mongo有可视化工具 mongodb compass  下面基本操作是从唐老师的ppt里截图出来的 原文地址:https://www.cnblogs.com/yanghaolie/p/12687811.html

MongoDB 部署复制集(副本集)

环境 操作系统:Ubuntu 18.04 MongoDB: 4.0.3 服务器 首先部署3台服务器,1台主节点 + 2台从节点 3台服务器的内容ip分别是: 10.140.0.5 (主节点) 10.140.0.6 (从节点01) 10.140.0.7 (从节点02) 安装MongoDB 接下来,需要在每一台服务器上安装MongoDB. 完整安装过程可参考官方文档. 为了方便,本文提供MongoDB的一键安装脚本. 切换成root用户 sudo su - 运行安装脚本 wget https://g

mongodb配置和基本操作

MongoDB3.0新特性WiredTigerMMAPv1可插拔引擎API基于web的可视化管理工具 查看版本号mongod --version启动数据库 mongod --dbpath $dbpath --logpath $logpath --logappend --fork --port=27000 $dbpath 数据目录$logpath 是log文件的路径 不是目录路径logappend 日志追加方式--fork 后台运行 在win下添加到系统服务中 mongod --dbpath $d