![](https://img-blog.csdnimg.cn/20201228223055128.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
MongoDB
文章平均质量分 87
多年的MongoDB笔记
骑着蜗牛的兔子
技术成就梦想,热衷于数据库技术
展开
-
304、Sharding分片环境部署(详述)
Sharding分片环境部署(详述)前言:Sharding是一种可以将数据分发到不同主机上的方法,主要是用于解决MongoDB巨大数据量和高吞吐量的问题。我们一开始使用单机,但是为了安全和一些读写分离改为副本集,但是业务增长快速的情况下,可能遇到很多性能上的问题;例如巨大的查询频率可能会耗尽所有CPU资源,高吞吐量可能使得I/O成为瓶颈。对于这些问题其实我们有两种方案:垂直扩展 和 水平扩展垂直扩展:说白了就是增加单台机器的资源,用更多CPU,更大内存,使用SSD硬盘;但是硬件技术上的局限性可能导致原创 2021-02-03 11:06:06 · 466 阅读 · 2 评论 -
303、副本集如何扩容
前言一般生产环境下,我们总是会遇到副本集迁移节点到新机器上的问题,或者扩容出一个新secondary节点的需求,所以这里把我的笔记放在这里供参考,如果有不妥之处请指出,谢谢;1.添加Secondary节点有时候需要在已有的Replica set架构中添加节点注:Replica Set有最大选举节点数限制:7个,超过7个如果还想再添加则只能作为non-voting member1.1 创建文件目录如果是在一台新机器上,则按照复制集节点中的目录创建即可,注意权限配置1.2、copy配置文件mo原创 2021-02-02 23:06:46 · 363 阅读 · 0 评论 -
302.副本集复制机制笔记
前言:Oplog日志:oplog 是 MongoDB 主从复制层面的一个概念,单点实例不存在;通过 oplog 来实现复制集节点间数据同步(producer线程实现oplog抓取);存储在local库下的oplog.rs固定集合(Capped collection),循环插入记录;oplogSize默认是free-disk的5%,最小990M,最大50G,可通过oplogSizeMB参数设置;1、Oplog的重放机制同步过程下图是MongoDB数据同步的流程[外链图片转存失败,源站可能有防原创 2021-02-02 22:27:17 · 396 阅读 · 0 评论 -
Aggreagation 日常使用语句汇总(持续更新)
数据结构:1、分组$group:db.t2.aggregate({$group:{"_id":"$class_id"}}) 2、 分组并统计数量:db.t2.aggregate({$group:{"_id":"$class_id","count":{"$sum":1}}})3、 多字段分组并统计:db.t2.aggre原创 2017-05-05 17:24:36 · 925 阅读 · 0 评论 -
MongoDB3.2 之 aggregate的管道符详述
众所周知,aggregate是mongodb非常强大的工具之一,之所以强大是因为它可以像乐高一样随意摆放各种组件(当然还是要遵守一定规则的)数据集合下面就简单介绍一下各个组件的使用方法:1、$project: 遍历文档的指定字段到下一个stage(阶段);意思就是说可以过滤掉某些字段(包括过滤掉_id)、可以重命名字段、添加新的字段,重置字段的值原创 2017-07-17 17:06:19 · 1820 阅读 · 0 评论 -
MongoDB3.2 用户权限
role里的角色可以选: Built-In Roles(内置角色): 1. 数据库用户角色:read、readWrite; 2. 数据库管理角色:dbAdmin、dbOwner、userAdmin; 3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager; 4. 备份恢复角色:backup、restore; 5. 所有数据库角色:readAnyDatabase、readWriteAnyData原创 2016-12-26 22:23:45 · 12533 阅读 · 0 评论 -
GridFS
GridFS前言:mongo对document有限制16M大小,如果插入超过此限制的数据则会报错。为了解决此问题,我们可以使用mongo的另一个特性GridFS来存储超大文件(文本文件,视频,音频等)说明:GridFS的使用机制就是将大文件拆分成小数据块chunk块,有序存放到mongo数据集合当中,以文档document的形式存在,这样的数据块我们称之为chunk; chunk块的单位原创 2017-08-22 23:27:29 · 1858 阅读 · 0 评论 -
MongoDB 与 SQL 语句映射关系(持续更新中)
前序:无论是刚开始接触mongodb,还是接触了一段时间的老用户,每次想写一个DML语句都觉得有点费劲,因为mongo的语法确实与RDMS不一样,所以为了方便我也为了方便后人,故整理一下他们之间的对应关系(会结合官网文档以及自己的一些实践总结,会持续更新。。。)SQLMongoDBdatabasedatab原创 2017-09-30 17:44:58 · 700 阅读 · 0 评论 -
MongoDB3.2 之 oplogSize修改
有时候由于某些情况,我们需要修改oplogSize大小,由于目前版本3.2不支持在线修改,好像说是3.6版本将支持在线修改,所以我们只能对副本集成员逐一进行原创 2017-11-16 17:28:38 · 582 阅读 · 0 评论 -
MongoDB数据库迁移(复制集集群迁移)
数据库(复制集)迁移@(MongoDB)[复制集|迁移|]数据库复制集迁移前言准备架构图说明步骤1部署新节点1 创建相应路径2 修改启动文件3 复制数据文件4 启动新节点2加入集群中3检查数据同步状态4切断新节点1 创建临时数据2 验证数据3 移除新节点5部署新复制集1 启动其余节点2 配置新复制集6检查集群状态总结原创 2018-01-12 14:46:33 · 4245 阅读 · 1 评论 -
副本集新增Delayed Secondary
副本集新增Delayed Secondary前言 由于业务日志增多,mongo库日趋重要,随需要对mongo环境进行加固,为了防止误操作导致数据丢失,随将原replica set架构中的Arbiter节点转换为Delay Secondary节点。架构图原架构 新架构 考虑因素延迟节点的priority:0,防止此节点被选举为Primary;必须是hidden节点,防止应用程序连接原创 2017-12-29 16:55:45 · 451 阅读 · 0 评论 -
Replica set搭建过程
Replica set搭建过程@(MongoDB)[副本集|三节点]前序: 自己测试着玩可以使用单实例mongod服务,但若部署在生产环境下,还是需要复制集或分片架构的,本文只探讨复制集搭建过程;复制集功能强大,可以实现故障自动切换、各个节点之间数据完全一致等高可用功能。配置信息:设备类型:VMware Virtual Platform 内存:8G CPU: 4 (2个独立双核C原创 2017-12-29 16:59:24 · 1195 阅读 · 0 评论 -
MongoDB3.2 之 oplogSize修改
MongoDB3.2 之 oplogSize修改前言: 有时候由于某些情况,我们需要修改oplogSize大小,由于目前版本3.2不支持在线修改,好像说是3.6版本将支持在线修改,所以我们只能对副本集成员逐一进行,注:primary节点最后修改,先修改可能会成为主节点的secondary节点开始。大致步骤如下:重启节点为单实例方式运行(不同端口)修改oplog大小(保留最近的一条oplog记录原创 2017-12-29 17:18:25 · 2148 阅读 · 1 评论 -
MongoDB Aggregate之优化
到aggregate()总是头大,不知道怎么写才能达到奥林匹克精神(更高,更快,更强)经过四分卫大神指点并结合官方文档,特对aggregate书写顺序总结如下:聚合管道的优化聚合管道操作中有这样一个优化阶段,它会尝试改造管道以提升性能。如要了解优化器如何转换一个给定的聚合管道,可以查看 db.collection.aggregate() 方法中的 说明 选项的输出结果。 ·具体的...原创 2019-09-27 10:15:07 · 2647 阅读 · 0 评论 -
MongoDB3.2增删查改方法简述(CRUD操作)
一、前序无论什么数据库,都必须会有增删查改的操作,只是方法形式不一样而已,其实思路还是差不多的,下面我们就对MongoDB3.2版本的文档操作简述并验证一下二、查select:简单查询:>db.t1.find(){ "_id" : ObjectId("585ce007d993c80e8713c7bd"), "x" : 1, "j" : 1 }{原创 2016-12-26 21:56:20 · 1242 阅读 · 0 评论 -
MongoDB自动删除过期数据--TTL索引
前序:由于公司业务需求,对于3个月前的过期数据需要进行删除动作,以释放空间和方便维护本来想的是使用crontab写个脚本定时执行,但是看到Mongo本身就有自动删除过期数据的功能,所以还是用一下吧这个方法就是使用TTL索引,后续我再写一个脚本定时删除的任务介绍:TTL索引是MongoDB中一种特殊的索引, 可以支持文档在一定时间之后自动过期删除,目前TTL索引只能在单字段上建立原创 2017-01-20 14:30:23 · 35285 阅读 · 0 评论 -
mongobackup工具恢复实测
前序:mongobackup是开源的一个备份恢复小工具,为了测试其功能性,故进行如下测试注:使用mongobackup是需要在replica set架构下使用,因为其备份的是oplog数据,单实例是不产生oplog的 格式:mongobackup手册及mongobackup下载地址http://dl.nosqldb.org/mongobackuphttp:/原创 2016-12-06 12:06:55 · 3569 阅读 · 0 评论 -
MongoDB误操作恢复测试
前序:由于无论在什么架构下,都会不可避免的出现人为误操作的事故出现,本文就对可能出现的误操作问题的解决办法进行测试,这些都是本人想到的解决办法并加以测试实验架构:Replica set(1Primary+1Secondary+1slaveDelay)延时时间:600秒Primary:192.168.1.100:27017Secondary:192.168.1.100:270原创 2016-12-06 12:08:57 · 12390 阅读 · 0 评论 -
MongoDB3.2 安全(一)---authentication
MongoDB提供了很多安全特性,有:AuthenticationAuthorizationTLS/SSLEnterprise Only 今天先来看一下authentication(认证)目前植入如下几种认证机制:SCRAM-SHA-1MongoDBChallenge and Response (MONGODB-CR)x.509Certificate Aut原创 2017-02-08 09:29:47 · 1235 阅读 · 0 评论 -
监控系统---使用Ganglia监控MongoDB
序言:说道监控问题,官网推介了很多工具,有的是命令行形式,比如mongostat,mongotop,有的是图形界面模式,但也有收费免费之分,比如官网自己的Cloud Manager,Compass就是收费企业版才能用的,当然也可以试用免费开源的官网也推介了很多,比如Ganglia、Zabbix等等Ganglia是UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计原创 2017-01-17 21:05:38 · 3149 阅读 · 0 评论 -
复制集部署问题记录
1、出现下列此种报错,可能是开启了keyfile或者auth认证参数,而我们此时又没有添加用户,所以会报错;说明:在搭建完成复制集之前,mongodb.cnf配置文件中需要先屏蔽掉keyfile参数,否则在执行rs.initiate(config_rs1)时会报认证错误,使用show dbs等命令都无法使用(可以在配置完成之后再打开keyfile参数)2、mongodb原创 2016-12-09 17:26:10 · 1432 阅读 · 0 评论 -
MongoDB3.2工具---Mongostat
此工具提供关于mongod和mongos的当前运行状态概览常用命令格式:mongostat --host 192.168.1.100:27017 -uroot -p123456 --authenticationDatabase admin参数说明:host:指定IP地址和端口,也可以只写IP,然后使用--port参数指定端口号-u: 如果开启了认证,则需要在其后填写用户名原创 2017-02-09 17:46:56 · 4438 阅读 · 0 评论 -
MongoDB3.2---基本操作汇总
连接方式:单点连接数据库:root#mongo 192.168.1.100:30000/testDB -u tuser -p --authenticationDatabase admin注:testDB是默认登录的数据库,也可以是有权限访问的其他数据库admin是账号tuser创建时所在的数据库,也就是认证数据库,不可改变,如果--authenticationDataba原创 2017-02-13 16:37:20 · 966 阅读 · 0 评论 -
MongoDB 存储引擎:WiredTiger和In-Memory
MongoDB 存储引擎:WiredTiger和In-Memory本文为转载文章,原文地址:http://www.cnblogs.com/ljhdo/archive/2016/10/30/4947357.html存储引擎(Storage Engine)是MongoDB的核心组件,负责管理数据如何存储在硬盘(Disk)和内存(Memory)上。从MongoDB 3.2 版本开转载 2016-11-30 14:30:36 · 755 阅读 · 0 评论 -
Aggregate之表连接$lookup
前序:关系型数据库有表连接功能,那么NOSQL有吗?MongoDB有吗?很高兴3.2版本出现了尽管提供了表连接功能,但是官方还是建议尽量使用内嵌文档的结构来减少表连接的使用今天介绍的是$lookup, 类似于关系型数据库中的left outer join,语法:db.collection.aggregate([{ $lookup: {原创 2017-03-29 13:34:07 · 11573 阅读 · 4 评论 -
MongoDB 的Rollback讲解及避免
前言: 前段时间突然发现数据库文件路径下多了个rollback名字的文件夹,很是纳闷,里面居然还有.bson后缀格式的文件,随一探究竟。原来是在这段时间内发生过failover(主从切换),导致了某些不一致数据的丢失,这可是一个大问题啊,弄不好就是要丢数据的,故进行了些调查研究,详述于此;供大虾们大绳们指点。解释: 首先,rollback到底是什么意思呢原创 2017-06-16 10:18:28 · 12655 阅读 · 7 评论 -
MongoDB3.2---Profiling慢查询详解
官方查询地址:https://docs.mongodb.com/v3.2/tutorial/manage-the-database-profiler/在很多情况下,DBA都要对数据库的性能进行分析处理,找出降低性能的根源而Mongo就有一种分析工具来检测并追踪影响性能的慢查询---Profile有两种方式可以控制Profiling的开关和级别,第一种是直接在启动参数中进行设置,如下原创 2017-02-23 17:40:01 · 7498 阅读 · 0 评论 -
MongoDB3.2 ---存储过程
关系型数据库中都有存储过程,那么Mongo中有没有呢?答案是肯定有的MongoDB的存储过程存储在db.system.js集合中,可以重复调用格式实例: db.system.js.save( { _id: "echoFunction", ---存储名称,在每个database中是唯一的 value : function(x)原创 2017-02-09 17:42:05 · 2902 阅读 · 0 评论 -
MongoDB3.2磁盘碎片整理---compact详述
前序:由于业务原因,需要将过期数据删除,之前也已经写了一篇关于如何定期删除数据的文章,但有一个问题出现了,频繁删除数据之后,会产生很多磁盘碎片,这些碎片进而会影响查询性能,随需要处理之有好几种方法处理:①使用compact命令②重建collection③新加一个secondary节点,然后将此节点切换为primary后两种方法以后有时间再细说,也是网友提供的,今天只看C原创 2017-02-08 13:12:32 · 3887 阅读 · 0 评论 -
MongoDB配置文件说明
本文为转载文章,原文: http://shift-alt-ctrl.iteye.com/blog/2242907Mongodb 3.x配置说明,本文内容忽略了Enterprise版和一些不常用的配置。一、配置说明 在Mongod安装包中,包含2个进程启动文件:mongod和mongos;其中mongd是核心基础进程,用来接收读写请求、负责存储实际数据,mongod实例转载 2016-12-06 10:57:41 · 7537 阅读 · 0 评论