NoSQL/MongoDB
文章平均质量分 69
胡儿胡儿
好记性不如烂博客
展开
-
mongos分片集群管理和运维(持续更新)
1 如何在线修改chunk大小https://docs.mongodb.com/manual/tutorial/modify-chunk-size-in-sharded-cluster/2 chunk size影响到了chunk的迁移https://docs.mongodb.com/manual/reference/limits/#Maximum-Number-of-Documents原创 2016-11-21 15:22:01 · 1706 阅读 · 0 评论 -
MongoDB日志轮转和日志级别
OverView MongoDB可使用标准的方法实现日志轮转,即获取到当前日志并开启一个新的。为了实现它,mongod实例通过在文件名称末尾添加UTC(GMT)时间戳的方式重命名当前的日志文件,然后打开这个新的log文件,关闭之前旧的log 文件,并发送所有新的日志信息到新的log文件中。Rotation Setps MongoDB标准的日志轮转方法是通过日原创 2014-12-27 00:18:46 · 11889 阅读 · 0 评论 -
mongodb启动很慢
故障现象mongodb重启后,等了几十分钟还一直没启动完成,单节点副本集,状态一直处于startup原因分析查看mongod的错误日志,发现一直处于building index,但根据之前的经验,只有在重做secondary节点的时候才会经常处于building index状态,而这个db是primary节点,于是详细查看了关于这个building index的全部信息 201原创 2017-01-05 20:09:37 · 4469 阅读 · 0 评论 -
mongos删除库表的一个bug
ISSUE SUMMARYWhen dropping a database / collection in a sharded cluster, even if the drop is reported as successful it is possible the database / collection may still be present in some nodes in the转载 2017-03-06 15:50:08 · 538 阅读 · 0 评论 -
config server高可用的怀疑(非副本集模式)
SCCC和CRCS的区别在mongo3.4版本之前,configsvr的高可用有两种方式,一种是SCCC,即非副本集模式,一种是CSRS(副本集模式)。在mongo3.4以后已经不支持SCCC了,就我使用SCCC模式的经验看,SCCC确实太坑。个人认为,CSRS相对SCCC大概有以下优点1 节点宕机后SCCC模式只读不可写,这时mongos无法负载均衡。而CSRS存在副本集的高可用,宕机一原创 2017-03-21 15:44:16 · 1623 阅读 · 0 评论 -
故障案例--mongodb writeconcern为majority时的又一个bug
前言之前的文章有提到过majority的一个坑,还谈不上bug,链接如下点击打开链接故障现象majority下应用层一直报错,但实际数据写入成功,包括主从节点都成功;w设置为1以后没有报错,写入成功 044dd16e-7706-4a49-b4ff-73d86a99d6fd:PRIMARY> db.setWriteConcern({w:"majority",wtimeout:30原创 2017-04-14 14:40:21 · 2361 阅读 · 0 评论 -
故障案例--mongo 3.0鉴权导致cpu居高不下
故障现象CPU奇高,达到接近物理机核数上限;错误日志中的业务SQL执行较快,SQL不存在问题;错误日志大量的刷屏以下信息原因分析从错误日志看,绝大部分情况都处于saslStart,查看资料发现这是mongo 3.0的鉴权机制正是SCRAM-SHA-1,于是怀疑是这个鉴权机制导致了CPU飙升;通过了解,业务采用的是短连接,进一步确定原因应该是短时间大量的连接过来触发的原创 2017-05-25 21:37:43 · 1163 阅读 · 0 评论 -
故障案例--mongo备份文件损坏,导致mongorestore中断
故障现象备份显示成功,不过有次准备用这个备份恢复数据库时,mongorestore却失败了,报错如下 2017-05-11T23:52:48.050+0800 Progress: 348374754/1256078901 27% (bytes)INVALID OBJECT - going to try and print out size: 377error: bson原创 2017-05-16 18:58:29 · 2290 阅读 · 0 评论 -
mongos分片集群版本升级方案
总体思路Mongos整个分片集群版本升级时,先确定升级mongos和config server,因为经过测试,假如先升级sharding节点的话,会导致mongos查询不可用,存在版本兼容性问题,报错截图如下另一方面,如果先升级mongos和config server节点的话,就不存在兼容性问题,3.0的mongos和config server能够正常读取低版本的shardin原创 2017-05-23 20:24:14 · 1977 阅读 · 0 评论 -
warning: ClientCursor::staticYield can't unlock b/c of recursive lock ns:
故障现象大量的日志刷屏warning: ClientCursor::staticYield can't unlock b/c of recursive lock ns: 日志级别已经是quiet大概每小时就写十几G,分分钟磁盘要被刷爆mongo版本:2.6故障原因没去深究处理方法对应的查询没有索引,加上索引以后就没有类似的warning信息了原创 2017-06-12 19:55:26 · 657 阅读 · 0 评论 -
mongos分片集群下db数量过多导致服务不可用
故障现象每隔一段时间发现mongos连不上,mongos日志出现大量的socket连接错误2017-08-08T17:09:31.095+0800 I SHARDING [conn52677] couldn't find database [d4ee211b4024a2d9e6bd57d4a28679339d6b0692] in config db2017-08-08T17:09:33原创 2017-08-10 22:05:30 · 2944 阅读 · 0 评论 -
利用mongosync做数据库迁移
背景有些情况下,官方推荐的迁移方法不是那么便捷,比如mongos集群的整体迁移步骤非常繁琐,且对网络的要求很高;mongosync支持mongos集群迁移,目前支持3.0及以下版本,特别适合mongodb跨机房的迁移目前有这么一个需求机房A有一套mongos集群,需要迁移到机房B,A和B之间的mongo实例网络不通,但是在其中一个中转服务器上能够分别ping通A机房和B机房的mon原创 2017-09-26 17:43:13 · 3717 阅读 · 0 评论 -
mongodb存储的集合和database太多容易引起的问题
在数据库表和对象设计过程中,碰到有些客户的db表数量非常多,达到几w以上的级别,这时往往容易引起一些运维难度和复杂度,以mongodb举例,分享下遇到的一些问题1 mongod启动非常慢,db大概有2w多个,后台mongod显示先等了很长一段时间后,一直显示opening db...所以如果没有副本集,哪次db挂了或者变更需要重启db,漫长的等待往往无法接受(将近1小时)2 mongos内存消耗...原创 2016-10-08 20:02:54 · 7476 阅读 · 1 评论 -
MongoDB状态查询详解:db.serverStatus()
基本信息spock:PRIMARY>db.serverStatus(){ "host" :"h6.corp.yongche.org", //主机名 "version" :"2.6.2", //mongodb版本 "process" :"mongod", //mongodb进程,主要有mong原创 2015-01-14 10:52:43 · 7058 阅读 · 0 评论 -
故障处理--mongos count不准
故障现象业务上并无对这个表的delete操作,通过mongostat可以查看。但是mongos对一个表进行count操作时,发现它的计数结果会慢慢变少,然后突然有一个大幅增长,随后又逐渐减少,现象如下mongos> db.ebay_us_detail.count()154462481mongos> db.ebay_us_detail.count()154462463mong原创 2017-12-26 15:19:01 · 843 阅读 · 0 评论 -
mongo3.0.9库命名的一个S级bug
现象db每隔一段时间崩溃一次,完全停服的情况下不会崩溃,mongod日志如下2018-01-16T20:21:43.573+0800 E STORAGE [conn18] no cursor for uri: table:asd()/collection-15-28950403216381666652018-01-16T20:21:43.573+0800 I - [co原创 2018-01-16 20:55:37 · 732 阅读 · 0 评论 -
mongos数据分布不均匀,move chunk失败
现象2018-02-06T14:41:05.130+0800 I SHARDING [Balancer] moveChunk result: { cause: { ok: 0.0, errmsg: "can't accept new chunks because there are still 1236 deletes from previous migration" }, ok: 0.0,原创 2018-02-07 18:41:48 · 1505 阅读 · 0 评论 -
mongos分片集群整体在线迁移方案和详细实践
环境准备:mongodb版本:3.0mongos:1个configserver:3个,普通模式组成高可用(非副本集方式)分片节点:2个,每个分片是三个数据节点组成的副本集(1 primary+1 secondary+1 arbiter)mongos> sh.status()--- Sharding Status --- sharding version: {"_原创 2016-11-21 14:33:52 · 2335 阅读 · 0 评论 -
mongo官方文档阅读笔记---mongo的限制
mongodb版本:3.41 单个文档最大为16M2 单个文档的最大嵌套深度为1003 库名称不区分大小写,但是不可混用大小写(表名称区分大小写)4 Windows下库名称不支持这些特殊字符(/\. "$*5 Linux下库名称不支持这些特殊字符(/\. "$)6 库名称不得为空,且不得大于64字节7 自定义表名称不得为空,不得以system.开头,不得包含特殊字符$,原创 2016-11-30 18:19:46 · 888 阅读 · 0 评论 -
mongodb分片集群的管理命令集合
1 如何在线修改chunk大小https://docs.mongodb.com/manual/tutorial/modify-chunk-size-in-sharded-cluster/2 chunk size影响到了chunk的迁移https://docs.mongodb.com/manual/reference/limits/#Maximum-Number-of-Documents原创 2016-09-28 12:02:11 · 2154 阅读 · 0 评论 -
MongoDB副本集创建和管理
副本集的概念副本集是一组服务器,其中有一个是主服务器(primary),用于处理客户端请求;还有多个备份服务器(secondary),用于保存主服务器的数据副本。如果主服务器崩溃了,备份服务器会自动将其中一个成员升级为新的主服务器。 bj1-farm1:PRIMARY> rs.isMaster(){ "setName": "bj1-farm1",原创 2014-12-15 14:18:53 · 3081 阅读 · 0 评论 -
Mongodb内存管理和使用情况情况查询
overview MongoDB使用的是内存映射存储引擎,即Memory Mapped Storage Engine,简称MMAP。MMAP可以把磁盘文件的一部分或全部内容直接映射到内存,这样文件中的信息位置就会在内存中有对应的地址空间,这时对文件的读写可以直接用指针来做,而不需要read/write函数了,但这并不代表将文件map到物理内存,只有访问到这块数据时才会被操作系统以Pag原创 2014-12-30 13:21:08 · 21880 阅读 · 0 评论 -
mongodb官网文档阅读笔记:write concern
write concern保证了mongodb写操作的级别,不同的write concern设置对应了不同级别的写操作,设置的级别越高,那么写操作的性能的持久化做得越好,但是写性能也就越差。mongodb默认采用 Acknowledged的write concern级别,这也是安全性最高的级别。在 Acknowledged级别的副本集模式下,mongodb可在客户端设置一个wtimeout原创 2015-08-10 20:19:36 · 3812 阅读 · 0 评论 -
mongodb官网文档阅读笔记:与写性能相关的几个因素
Indexes和所有db一样,索引肯定都会引起写性能的下降,mongodb也没啥特别的,相对索引对读性能的提示,这些消耗一般是可以接受的,所以该添加的索引还是要添加,当然需要谨慎一些。扯点远的,曾经我碰到过一个case,因为一个表的索引数量太多,导致后续磁盘的util越来越高,达到70%,而刚添加的副本集成员磁盘uitl才20%不到。后来发现是因为索引太多,越到后面造成的索引碎片也就越来越多,原创 2015-08-12 21:48:38 · 962 阅读 · 0 评论 -
故障案例,mongo副本集主节频繁切换
接到个case,mongod版本为2.4,三个节点组成高可用,发现经常频繁地切换,错误信息如下Mon Mar 7 14:29:15.379 [initandlisten] pthread_create failed: errno:11 Resource temporarily unavailableMon Mar 7 14:29:15.379 [initandlisten] can't原创 2016-03-07 16:35:31 · 2130 阅读 · 0 评论 -
故障案例 mongodb configserver启动失败
现象:修改了mongodb的shardserver的oplogsize大小,虽然启动后无效,但不至于启动失败;oplogsize的正确修改方法参见我的另外一篇blog http://blog.csdn.net/cug_jiang126com/article/details/41943237但是如果是mongos的config server,修改oplog参数大小后启动就会报错,报错截图如原创 2016-04-07 17:08:12 · 1837 阅读 · 0 评论 -
故障案例--mongodb添加副本集成员报错
现象: 之前有一对2.6的副本集为A,一对3.0的副本集为B,2.6上有业务数据,想将其升级为3.0,于是做的跨版本副本集,到时候再做业务切换。在执行rs.add命令后报错"name" : "10.10.69.181:28081","health" : 0,"state" : 8,"stateStr" : "(not reachable/healthy)","up原创 2016-04-14 23:48:09 · 4641 阅读 · 1 评论 -
利用YCSB工具对mongodb进行压测
1. 安装Java去oracle官网下载jdk-7u15-linux-x64.rpm (直接yum安装的jdk版本貌似有问题)rpm –ivh jdk-7u15-linux-x64.rpm2. 安装 Mavenwgethttp://ftp.heanet.ie/mirrors/www.apache.org/dist/maven/maven-3/3.1.1/binaries/apa原创 2016-05-26 19:45:59 · 11945 阅读 · 1 评论 -
故障案例:mongodb 连接副本集很慢
现象在以副本集驱动方式连接mongodb的时候,指定了副本集的setname,结果跟直连primary节点相比慢很多,需要将近5s原因rs.status()结果显示有多个unhealthy节点,比如这几个unhealthy节点当时被删除以后,忘了执行rs.remove彻底删除各个节点,导致在以副本集驱动方式连接时,这种unhealthy节点的检测时间会加上很多处理方法在原创 2016-05-20 16:15:36 · 2424 阅读 · 0 评论 -
故障案例--mongodb3.0 mongorestore恢复数据库时hang住
现象wiretigerd引擎下,mongorestore的进程一直卡在那,查看错误日志几个小时都无更新,进程hang住诊断步骤理论上这个db能使用的最大内存为3G,查看mongod进程当前使用的内存是1.1Gstrace -p mongod进程号查看到大量的超时pstree -p 689单独stace- p 699,pstree树中的一个节点原创 2016-06-02 17:49:28 · 4958 阅读 · 3 评论 -
故障案例--mongo shell从库无法读的处理方法
mongo在从库上默认不可读,需要设置才行,但是2.6和3.0的设置方法并不一样mongodb 2.6一般报错如下udb-02qe1w:SECONDARY> show tables2016-05-23T19:29:27.526+0800 error: { "$err" : "not master and slaveOk=false", "code" : 13435 } at src/m原创 2016-05-23 19:40:06 · 9276 阅读 · 0 评论 -
MongoDB和MongoDB云数据库浅谈
MongoDB的特点和适用场景实用性MongoDB是一个面向文档的数据库,它并不是关系型数据库,直接存取BSON,这意味着MongoDB更加灵活,因为可以在文档中直接插入数组之类的复杂数据类型,并且文档的key和value不是固定的数据类型和大小,所以开发者在使用MongoDB时无须预定义关系型数据库中的”表”等数据库对象,设计数据库将变得非常方便,可以大大地提升开发进度。下面这个表格是M原创 2016-07-28 14:07:14 · 3649 阅读 · 0 评论 -
HaProxy实现Mongos负载均衡
前言连接到分片集群的方式和连接到普通MongoDB实例的方式完全相同,不过当存在多个mongos实例的情况下,即使URI里写全了mongos实例的IP也无法自动做到mongos本身的高可用和负载均衡,通常这个可以通过搭建HaProxy或者LVS的方式实现。实验条件假设存在三个mongos节点,分别为10.9.71.164,10.9.69.74,10.9.77.132,而HaProxy的原创 2016-08-03 15:54:36 · 3899 阅读 · 0 评论 -
故障案例--mongodb副本集write concern为majority的一个坑
故障现象:一个副本集下四个节点,一个primary,两个Secondary,一个arbiter,其中将一个Secondary关闭后,修改primary节点的密码,这时修改命令会卡住直到超时失败。udb-aqmp5a:PRIMARY> db.changeUserPassword("root","123123")2016-08-23T17:05:30.879+0800 E QUERY原创 2016-08-23 17:23:02 · 9255 阅读 · 4 评论 -
故障案例 mongodb无法连接排错指南
1 确认mongo shell的客户端版本跟服务器版本一致,尤其是3.0的服务器版本必须用3.0以上的客户端版本(低版本的服务器可用高版本的客户端去连接),典型的报错如下,提示的是login failed2 用户名或者密码错误(如果开启了鉴权的情况下),典型的错误如下,提示的是auth failed3 权限不足,比如user表里记录的鉴权db是admin,登陆时却用了其他db原创 2016-05-20 17:54:01 · 2558 阅读 · 0 评论 -
故障案例--mongodb副本集成员节点和投票节点的限制
现象在给一套5个节点的mongo 3.0副本集升级到mongo 3.2,采用的方案是将3.2的节点作为Secondary先挂到原3.0的Primary,结果报错如下PRIMARY> rs.add("10.9.128.170:27017"){"ok" : 0,"errmsg" : "Replica set configuration contains 8 voting membe原创 2016-10-12 20:00:10 · 2861 阅读 · 0 评论 -
Server has authorization schema version 3,but found a schema version 1 user
原创 2018-05-17 17:41:39 · 468 阅读 · 0 评论