mongodb集群基础知识-成都快上网建站

mongodb集群基础知识

http://blog.csdn.net/luonanqin/article/details/8497860  MongoDB集群搭建的三种方式

成都创新互联公司是一家成都网站设计、网站建设、外贸网站建设,提供网页设计,网站设计,网站制作,建网站,按需规划网站,网站开发公司,于2013年创立是互联行业建设者,服务者。以提升客户品牌价值为核心业务,全程参与项目的网站策划设计制作,前端开发,后台程序制作以及后期项目运营并提出专业建议和思路。

NOSQL = Not Only SQL  mongodb存储方式是文档式存储,并不是Key-Value形式。

Mongodb的三种集群方式的搭建:Replica Set / Sharding / Master-Slaver

Replica Set 副本集集群原理:(最简单的集群方式)

主节点,备节点,仲裁节点。主备节点存储数据,仲裁节点不存储数据。

客户端同时连接主节点与备节点,不连接仲裁节点。

默认设置下,主节点提供所有增删查改服务,备节点不提供任何服务。但是可以通过设置使备节点提供查询服务,这样就可以减少主节点的压力,当客户端进行数据查询时,请求自动转到备节点上。这个设置叫做Read Preference Modes,同时Java客户端提供了简单的配置方式,可以不必直接对数据库进行操作。

仲裁节点是一种特殊的节点,它本身并不存储数据,主要的作用是决定哪一个备节点在主节点挂掉之后提升为主节点,所以客户端不需要连接此节点。这里虽然只有一个备节点,但是仍然需要一个仲裁节点来提升备节点级别。

测试:一个是往主节点插入数据,能从备节点查到之前插入的数据(查询备节点可能会遇到某个问题,可以自己去网上查查看)。二是停掉主节点,备节点能变成主节点提供服务。三是恢复主节点,备节点也能恢复其备的角色,而不是继续充当主的角色。二和三都可以通过rs.status()命令实时查看集群的变化。

Sharding 分片集群:

和Replica Set类似,都需要一个仲裁节点,但是Sharding还需要配置节点和路由节点。就三种集群搭建方式来说,这种是最复杂的。

Master-Slaver 主备方式

官方已经不推荐这种方式,搭建方式也相对简单。

用过的人应该知道mongodb吃内存的问题,解决办法只能通过ulimit来控制内存使用量,但是如果控制不好的话,mongodb会挂掉。

mongodb的安装

执行脚本 install_mongodb_20160510.sh  即可安装mongodb服务。详细请看redme

mongodb集群的安装

常用命令

mongodb的启动

/opt/server/mongodb/bin/mongod -f /opt/server/mongodb/mongodb.conf

/opt/server/mongodb/bin/mongod -f /opt/server/mongodb/mongodb.conf --fork  #单机环境/与配置文件有关系,具体请参看配置文件

mongodb的停止

kill -15 pid

pkill mongod

mongodb登录方式

/opt/server/mongodb/bin/mongo 192.168.1.200:27017

查看状态

rs.status()

删除节点:

rs.remove("mongodb13.kk.net:27019")  #可以删除节点

添加节点:

rs.addArb("mongodb13.kk.net:27019")  #可以添加节点,但这样添加的节点为仲裁

mongodb副本集如何添加一个节点使其成为备节点呢?

在主节点上操作

use admin

cfg={ _id:"wlb", members:[ {_id:0,host:'192.168.11.215:27017',priority:2}, {_id:1,host:'192.168.11.187:27017',priority:1},{_id:2,host:'192.168.11.25:27017',arbiterOnly:true}] };

rs.reconfig(cfg);  #使配置生效

rs.status()

查看所有数据库

show dbs

MongoDB 创建数据库

use znx 

db

show dbs   #会发现创建的数据库不在列表中,要想显示需要插入数据

备节点若想查看数据库,需要执行如下命令,否则报13435错误

rs.slaveOk(true)

插入数据

db.znx.insert({"name":"dengyong"})

show dbs     #会显示出znx数据库,备节点也会显示

查看全部数据表

show collections 

查看全部表记录

db.znx.find()

删除pushlog这张表

> db.Pushlog.drop()  #具体操作,输入db.Pushlog.d后按table键,看有啥命令

true

备节点查看数据,先执行如下命令,否则会报错

rs.slaveOk(true)

MongoDB 删除数据库

use znx

db.dropDatabase()   #执行删除命令

show dbs            #znx数据库已删除

参考链接:http://blog.csdn.net/chen88358323/article/details/50206651

mongodb创建用户

use admin

db.createUser({user:"wjs",pwd:"wjs",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})   #创建用户

show users                #查看用户  需要先use数据库

内置角色:

    1. 数据库用户角色:read、readWrite;

    2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;

    3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;

    4. 备份恢复角色:backup、restore;

    5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

    6. 超级用户角色:root  

    // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)

    7. 内部角色:__system

    

具体角色:

Read:允许用户读取指定数据库

readWrite:允许用户读写指定数据库

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

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

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

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

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

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

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

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

db.system.users.find()    #查看用户

show users 

创建一个数据库znx

use znx

创建一个普通用户wxc

db.createUser({user:"wxc",pwd:"wxc",roles:[{role:"readWrite",db:"znx"}]}) 

释放掉MongoDB占用的内存

重启服务来释放内存,或 使用MongoDB内置的closeAllDatabases命令达到目的:

mongo> use admin 

mongo> db.runCommand({closeAllDatabases:1})

监控MongoDB的内存使用情况

db.serverStatus().mem


文章名称:mongodb集群基础知识
转载源于:http://kswjz.com/article/pccjej.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流