广告
返回顶部
首页 > 资讯 > 数据库 >mongodb 集群基础知识
  • 852
分享到

mongodb 集群基础知识

2024-04-02 19:04:59 852人浏览 薄情痞子
摘要

Http://blog.csdn.net/luonanqin/article/details/8497860  mongoDB集群搭建的三种方式NoSQL = Not Only sql  

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


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


您可能感兴趣的文档:

--结束END--

本文标题: mongodb 集群基础知识

本文链接: https://www.lsjlt.com/news/45445.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mongodb 集群基础知识
    http://blog.csdn.net/luonanqin/article/details/8497860  Mongodb集群搭建的三种方式NoSQL = Not Only SQL  ...
    99+
    2022-10-18
  • 集群-基础知识3
    纠正:报文进入内核空间后,当到达input链时发现是一个集群服务时,则直接发送到postrouting链,不经过forward链。调度算法:1、静态方法:rr:轮询,即依照次序从所有RS中进行挑选wrr:加权轮询,按照权重在RS中进行轮询s...
    99+
    2023-01-31
    集群 基础知识
  • MongoDB基础知识
    NoSQL是什么?   非关系型数据库,有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称 NoSQL的优势  &...
    99+
    2022-10-18
  • MongoDB基础知识(一)
     互联网行业的发展非常的迅速,数据存储以及架构优化方面也有很多不同的解决方案,例如关系型数据库、非关系型数据库、数据仓库技术等。更多数据库类产品的出现,为我们很好的解决了数据存储的问题,例如Red...
    99+
    2022-10-18
  • java基础知识集锦
    来源:Mblogger学生博客 作者: xsl 1 什么是Java、Java2、JDK?JDK后面的1.3、1.4.2版本号又是怎么回事?      答:Java是一种通用的,并发的,强类型的,面向对象的编程语言(摘自Java规范第二版) ...
    99+
    2023-06-03
  • MongoDB基础知识点有哪些
    这篇文章主要介绍MongoDB基础知识点有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!NO.1 Linux下MongoDB的安装   Linux下MongoDB的安装还算简单,总体可以分为如...
    99+
    2023-06-14
  • MongoDB数据库基础知识整理
    一、NoSQL 了解MongoDB之前先了解一下NoSQL,NoSQL是Not Only SQL的缩写。由提供缺乏SQL关系数据库的严格限制模型的存储和检索技术组成。主要是简化设计、水平扩展以及对数据的可用性进行更精细的...
    99+
    2022-07-07
    MongoDB数据库 基础知识
  • python基础知识(三)set集合
    set集合不同元素组成无序集合中元素必须是不可变的类型s={1,2,3,4,5,6} #增加 s.add("s") #清空 s.clear() #弹出 s.pop() #删除指定值,删除元素不存在报错 s.remove("s") #删除指定...
    99+
    2023-01-31
    基础知识 python set
  • python基础知识小结之集合
    集合 特点:集合对象是一组无序排列的可哈希的值:集合成员可以做字典的键,与列表和元组不同,集合无法通过数字进行索引。此外,集合中的元素不能重复。 定义 set() -> new empty ...
    99+
    2022-06-04
    小结 基础知识 python
  • python基础知识
    1.注释   1.1.单行注释:以#开头,#右边的有所东西当做说明.   1.2.多行注释:'''   我是多行注释   '''   2.变量   2.1.为了充分的利用内存空间以及更有效率的管理内存,变量是有不同类型的     2.1....
    99+
    2023-01-30
    基础知识 python
  • MySQL基础知识
    1、MySQL查询 union和union all的区别: union和union all都可以将两边的查询结果合并,区别在于union的合并会去掉重复行,并且使用默认的排序规则。而un...
    99+
    2022-01-06
    MySQL基础知识
  • nodejs基础知识
    什么是nodejs? node.js是基于Chrome javaScript运行时建立的平台,用于方便地搭建响应速度快、易于扩展的网络应用。(但nodejs不是javascript应用,nodejs...
    99+
    2022-06-04
    基础知识 nodejs
  • MHA基础知识
    环境: ...
    99+
    2022-10-18
  • Oracle基础知识
    1、Oracle分页查询 现有表employee_tbl,要求按年龄降序,分页查询数据,每页3条数据。 ID  NAME         DATE                             SIGNIN   AGE 1 ...
    99+
    2018-10-23
    Oracle基础知识
  • Python 基础知识
    只是打印出 hello world 肯定是不够的,是吗?你会希望做得比这还要多——你想要输入一些内容,操纵它,然后从中得到一些输出出来的内容。我们可以在 Python 中通过使用变量与常量来实现这一目标,在本章中我们还会学习其它的一些概...
    99+
    2023-01-31
    基础知识 Python
  • python3基础知识
    字符串截取:利用下标进行截取py_str = 'python'len(py_str)py_str[:3] py_str + '123''python123'py_str * 3'pythonpythonpython' Str将数...
    99+
    2023-01-31
    基础知识
  • 基础知识—3.12
    1、二叉树: 结点:所有的叶子。 叶子结点:最后一层的叶子数。 性质1:二叉树第i层上的结点数目最多为 2{i-1} (i≥1)。性质2:深度为k的二叉树至多有2{k}-1个结点(k≥1)。性质3:包含n个结点的二叉树的高度至少为log2...
    99+
    2023-01-30
    基础知识
  • 新手了解java 集合基础知识
    目录一、概述Java集合体系结构:二、collection1、List1)ArrayList2)LinkedList2、set1)HashSet2)TreeSet1.实体类2.测试类...
    99+
    2022-11-12
  • RabbitMQ的基础知识
    目录RabbitMQ1.对MQ的介绍2.RabbitMQ的六种模式 及工作原理3.hello world队列4.工作队列模式5.消息应答机制自动应答手动应答消息自动进行重新入队6.R...
    99+
    2022-11-12
  • 一、PyQt基础知识
    一、基础知识 (一)简介 1. 什么是PyQt5 PyQt是基于Digia公司强大的图形程序框架Qt的Python接口,由一组Python模块构成,它是一个创建GUI应用程序的工具包,由Phil Th...
    99+
    2023-09-11
    pyqt qt python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作