mongodb集群基础知识-创新互联

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

仙游ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!

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

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享文章:mongodb集群基础知识-创新互联
本文来源:http://scyanting.com/article/ccpjig.html