mongodb
jjwen
这个作者很懒,什么都没留下…
展开
-
mongo修改字段类型
db.AdditionalTimes.find({"uid":{$type:18}}).forEach(function(x){x.uid=String(x.uid);db.AdditionalTimes.save(x)})如上是将NumberLong类型转换为string类型类型对照图如下Type Number Alias Notes Double 1 ...原创 2019-10-31 21:19:22 · 746 阅读 · 0 评论 -
快速查询oplog
MongoDB oplog (类似于 MySQL binlog) 记录数据库的所有修改操作,除了用于主备同步;oplog 还能玩出很多花样,比如全量备份 + 增量备份所有的 oplog,就能实现 MongoDB 恢复到任意时间点的功能通过 oplog,除了实现到备节点的同步,也可以额外再往单独的集群同步数据(甚至是异构的数据库),实现容灾、多活等场景,比如阿里云开源的 MongoShake...转载 2019-10-15 10:31:27 · 1060 阅读 · 0 评论 -
什么场景应该用 MongoDB ?
很多人比较关心 MongoDB 的适用场景,也有用户在话题里分享了自己的业务场景,比如案例1> 1. 用在应用服务器的日志记录,查找起来比文本灵活,导出也很方便。也是给应用练手,从外围系统开始使用MongoDB。2. 用在一些第三方信息的获取或者抓取,因为MongoDB的schema-less,所有格式灵活,不用为了各种格式不一样的信息专门设计统一的格式,极大得减少开发的工作。案例2>...转载 2018-06-19 16:20:20 · 448 阅读 · 0 评论 -
MongoDB副本集的常用操作及原理
本文是对MongoDB副本集常用操作的一个汇总,同时也穿插着介绍了操作背后的原理及注意点。结合之前的文章:MongoDB副本集的搭建,大家可以在较短的时间内熟悉MongoDB的搭建和管理。下面的操作主要分为两个部分:1. 修改节点状态 主要包括: 1> 将Primary节点降级为Secondary节点 2> 冻结Secondary节点 3> 强制Secon...转载 2018-06-21 17:36:28 · 843 阅读 · 0 评论 -
MongoDB CPU 利用率高,怎么破?
经常有用户咨询「MongoDB CPU 利用率很高,都快跑满了」,应该怎么办?遇到这个问题,99.9999% 的可能性是「用户使用上不合理导致」,本文主要介绍从应用的角度如何排查 MongoDB CPU 利用率高的问题Step1: 分析数据库正在执行的请求用户可以通过 Mongo Shell 连接,并执行 db.currentOp() 命令,能看到数据库当前正在执行的操作,如下是该命令的一个输出示...转载 2018-05-24 16:47:07 · 1497 阅读 · 0 评论 -
MongoDB 3.6的一些新特性介绍
一、安全方面: 1、bind_ip为了安全考虑,MongoDB 3.6中bind_ip的默认值为localhost,可通过启动命令或者配置文件绑定需访问的ip地址 2、MONOGDB-CR认证建议在3.6版将认证机制MONOGDB-CR更新为SCRAM,后续的版本将不再支持MONOGDB-CR 3、认证限制① 在db.createuser()、db.updateuser() 、db.creater...原创 2018-04-20 16:16:07 · 3621 阅读 · 0 评论 -
MongoDB dropDatabse 后,数据能恢复么
最近好几个社区用户咨询,错误的执行了 dropDatabse 把数据库误删除了(或 dropCollection 误删集合),有什么方法能恢复数据?本文主要介绍几种可能有效的恢复方案。方案1:通过备份集恢复如果对 MongoDB 做了全量备份 + 增量备份,那么可以通过备份集及来恢复数据。备份可以是多种形式,比如通过 mongodump 等工具,对数据库产生的逻辑备份拷贝 dbpath 目录产生的...转载 2018-03-29 14:32:53 · 950 阅读 · 1 评论 -
MongoDB的一些性能监控指标介绍
MongoDB的性能指标可关注如下命令1、Mongostat2、Mongotop3、db.serverStatus()4、db.stats()5、db.collection.stats()6、rs.status()7、sh.status()其中db.stats9),db.collection.stats(),rs.status(),sh.status()分别记录的是库、表、复制集、分片的实时状态,...原创 2018-04-17 16:55:31 · 10828 阅读 · 0 评论 -
MongoDB 应用场景、避坑事项与最佳实践
1、如何学习MongoDB?MongoDB日趋流行,作为一个开发/运维,如何快速上手MongoDB?或者有哪些推荐的学习MongoDB的方式?写在最前:请使用mongodb 3.2或以上版本进行学习,或者直接从3.4开始。另外,百度出来的中文资料,请查看15年及以后的信息,可以少走很多弯路。另外,建议使用linux系统进行学习,方便排错。英文比较好的小伙伴:如果英语不好,建议先...原创 2018-04-02 11:09:45 · 30374 阅读 · 1 评论 -
Mongodb版本升级步骤(2.6升级到3.2)
1、修改secondary端口及关闭replset。2、启动改secondary。3、登陆primary访问这台验证兼容性db=connect("secondary:port/dbname");>use admin>db.upgradeCheckAllDBs()4、用最新版本的mongodb的bin目录替换老的。5、还原secondary配置,并重启。6、修改secondary的配置文...原创 2018-07-09 17:59:59 · 5568 阅读 · 2 评论 -
mongodb分片备注
关于负载均衡MongoDB Sharded cluster 的自动负载均衡目前是由 mongos 的后台线程来做的,并且每个集合同一时刻只能有一个迁移任务,负载均衡主要根据集合在各个 shard 上 chunk 的数量来决定的,相差超过一定阈值(跟 chunk 总数量相关)就会触发chunk迁移。负载均衡默认是开启的,为了避免 chunk 迁移影响到线上业务,可以通过设置迁移执行窗口,比如...转载 2018-07-17 14:14:20 · 178 阅读 · 0 评论 -
查看mongodb索引被使用的次数
版本要求>3.2db.tablename.aggregate( [ { $indexStats: { } } ] )官网地址:https://docs.mongodb.com/manual/reference/operator/aggregation/indexStats/原创 2018-08-09 16:25:34 · 2688 阅读 · 1 评论 -
客户端显示mongodb数据库列表
mongo --eval 'rs.slaveOk();db.getMongo().getDBNames();'原创 2018-10-17 15:09:57 · 644 阅读 · 0 评论 -
mongodb在线修改cachesize
db.adminCommand({setParameter: 1, wiredTigerEngineRuntimeConfig: "cache_size=8G"})转载 2019-05-05 17:53:22 · 2995 阅读 · 0 评论 -
升级mongodb时出现The data files need to be fully upgraded
再将3.4升级到3.6的时候出现The data files need to be fully upgraded提示,原因是这个库是从3.2先升级到3.4的,需要手动设置版本为3.4命令如下> use admin switched to db admin > db.adminCommand( { setFeatureCompatibilityVersion: "3.4" ...原创 2019-05-14 20:39:12 · 800 阅读 · 0 评论 -
mongodb group by 统计
db.tablename.aggregate([ {"$group" : {_id:"$fieldname", count:{$sum:1}}} ])原创 2019-05-20 17:03:35 · 3882 阅读 · 1 评论 -
MongoDB wiredTiger存储引擎下的存储方式LSM和B-Tree比较
前段时间做拦截件监控的时候把拦截件生命期存入mongodb,因生命期有各种变化,因此对此表的更新写操作非常多,mongodb目前已经支持lsm存储方式了。原文如连接:https://github.com/wiredtiger/wiredtiger/wiki/Btree-vs-LSM文中对比了LSM和B-Tree的读写吞吐量,在单线程写操作下和多线程读操作下的差异。英文差的小伙伴别指望我这个...转载 2019-05-31 10:58:21 · 660 阅读 · 0 评论 -
mongodb update拼接多字段
db.collection.find({"_id" : ObjectId("5d60ac1366aadbbbfdec8b7a")}).forEach(function(item){ db.collention.update( {"_id":item._id}, { $set : { "tasktypeIds" : item.mainTasktypeId + "_" + item.subTaskty...原创 2019-09-17 19:22:09 · 2261 阅读 · 0 评论 -
一个带复杂查询条件的mongoexport/mongodump需求
业务需要根据条件导出一个已经有80亿数据的mongodb,条件如下:1、url字段not like某连接地址。2、createDate在某时间范围内。这样mongoexport/mongodump 的--query就没法满足需求了。我用了--queryFile这个参数,具体的file内容如下:{ "url": {$not:/common.xxxxx.com.cn\/webapp/}, "creat...原创 2018-03-21 15:49:25 · 5371 阅读 · 0 评论 -
mongodb使用备注
最近在研究mongodb,使用中踩的坑,记录如下1、过期删除expireAfterSeconds只能支持单索引,复合索引并不支持,且只支持date类型的,unix时间戳不支持。2、3.0版本之后添加索引条件dropDups:true已经不支持,我后来采用的是mongoimport -d database_name -c collection_name --upsert filename.j...原创 2018-03-30 10:35:22 · 1977 阅读 · 0 评论 -
用ycsb测试mongodb性能
ycsb版本:0.12.0mongodb版本:3.4.4/3.6.3安装步骤参照:https://github.com/brianfrankcooper/YCSB/blob/master/README.mdload数据:./bin/ycsb load mongodb -s -P workloads/s1 -p mongodb.url=mongodb://test:test@localhost:80...原创 2018-03-14 10:53:58 · 1851 阅读 · 0 评论 -
mongodb增加/删除字段
增加字段db.dealed_membership_detail.update({},{"$set":{"level":1,"is_consecutive":0,"level_up":0,"is_new":0}},false,true);删除字段db.dealed_membership_detail.update({},{"$unset":{"level":1}},true,tr原创 2016-11-23 20:20:53 · 4597 阅读 · 0 评论 -
mongo查看当前进程及更改字段类型命令
db.currentOp()db.dealed_membership_detail.find({"passengerId":{$type:16}}).forEach( function(x){ x.passengerId=new NumberLong(x.passengerId); db.dealed_membership_detail.save(x); }原创 2016-11-29 11:06:41 · 1000 阅读 · 0 评论 -
mongodb的查询语句学习摘要
看了些资料,对应只需要知道怎么查询和使用mongodb的我来说,这些足够啦。左边是mongodb查询语句,右边是sql语句。对照着用,挺方便。db.users.find() select * from usersdb.users.find({"age" : 27}) select * from users where age = 27db.users.find({"转载 2016-09-22 14:42:14 · 255 阅读 · 0 评论 -
warning: ClientCursor::staticYield can't unlock b/c of recursive lock ns的解决方法
公司新上的一套mongo复制集,没几天居然就报磁盘报警了,查看了一下是mongo的log疯长导致的,修改了logappend=false参数,依旧增长迅速。查看日志,报警如下warning: ClientCursor::staticYield can't unlock b/c of recursive lock ns: top: { opid: -1650657831, acti原创 2016-06-22 17:40:46 · 707 阅读 · 0 评论 -
MongoDB日志文件过大的解决方法
MongoDB的日志文件在设置 logappend=true 的情况下,会不断向同一日志文件追加的,时间长了,自然变得非常大。解决如下:(特别注意:启动的时候必须是--logpath指定了log路径的)用mongo连接到服务端use admin //切换到admin数据库db.runCommand({logRotate:1})这样会使mongo关闭当前转载 2016-05-09 14:43:11 · 3949 阅读 · 1 评论 -
mongodb.conf配置文件详解
启动MongoDB有2种方式,一是直接指定配置参数,二是指定配置文件。这里先介绍配置文件,启动方式如下:1.mongod --config /etc/mongodb.conf配置如下:verbose:日志信息冗余。默认false。提高内部报告标准输出或记录到logpath配置的日志文件中。要启用verbose或启用verbosity 用vvvv参数,如:1.verb转载 2016-05-18 17:22:20 · 550 阅读 · 0 评论 -
mongodb查看当前操作db.currentOp()
mongodb查看当前操作db.currentOp()原创 2016-05-27 16:15:37 · 1277 阅读 · 0 评论 -
Mongodb2.6升级到Mongodb3.0.2笔记
[摘要:中止老版本Mongodb use admin db.shutdownServer(); 下载解压新版本Mongodb wget https://fastdl.mongodb.org/linux/mongodb-linux-i686-3.0.2.tgz gzip -d mongodb-linux-i686-3.0.2.tgz tar xvf mongodb-linux-i686-3.0.转载 2016-05-27 14:39:05 · 944 阅读 · 0 评论 -
mongodb修改oplog大小
操作步骤:1>: Restart a Secondary in Standalone Mode on a Different Port关闭mongod实例:repset:PRIMARY> use adminrepset:PRIMARY> db.shutdownServer()重启mongod实例以单机模式,修改端口,并不要加--replSet参数#vim /etc/mong原创 2017-01-05 15:02:00 · 2357 阅读 · 0 评论 -
关于mongodb复制集成员的votes和priority属性
一:monogdb 的replica sets中,每一个成员,都有很多属性。官方文档请点我二:votes和priority这两个属性都可以primary有关系。replica sets中primary是很重要的成员,所有的write操作,都要从primary进入。primary是通过选举产生的,选举的过程中需要投票。votes表示成员拥有的票数。priority表示成员原创 2016-12-30 16:29:47 · 1739 阅读 · 0 评论 -
快速部署有身份验证和授权的MongoDB Replica SET复制集
在启用身份验证后, MongoDB将强制所有客户端在访问数据库前先做身份验证authentication 。 Authorization , 授权允许管理员限制用户使用的资源和允许做的操作。 对于产品环境中使用mongodb replica set 复制集,必须启用Authentication 和Authorization。dbDao 百度贴吧:http://tieba.baidu.com/db...转载 2016-04-22 11:05:22 · 680 阅读 · 0 评论 -
mongodb添加zabbix监控UserParameter
UserParameter=MongoDB.status[*],/bin/echo "db.serverStatus().$1" | /usr/local/mongodb/bin/mongo --port $2 | sed 's/}/,/' | xargs | sed s/[[:space:]]//g | grep -oP '(?$1$2$3 替换成对于的参数原创 2017-11-21 15:42:28 · 675 阅读 · 0 评论 -
mongodb使用小结
最近一年忙碌于数据处理相关的工作,跟MongoDB打交道极多,以下为实践过程中的Q&A,后续会不定期更新补充。1、count统计结果错误这是由于分布式集群正在迁移数据,它导致count结果值错误,需要使用aggregate pipeline来得到正确统计结果,例如:db.collection.aggregate([{$group: {_id: null, count: {$转载 2016-12-01 14:32:16 · 1717 阅读 · 0 评论 -
MongoDB使用小结:一些常用操作分享
MongoDB使用小结:一些常用操作分享本文整理了一年多以来我常用的MongoDB操作,涉及mongo-shell、pymongo,既有运维层面也有应用层面,内容有浅有深,这也就是我从零到熟练的历程。MongoDB的使用之前也分享过一篇,稍微高阶点:见这里:《MongoDB使用小结》1、shell登陆和显示假设在本机上有一个端口为17380的MongoDB服务,假设转载 2017-01-12 17:11:07 · 898 阅读 · 0 评论 -
查看mongodb当前配置的命令
use admindb.runCommand( { getParameter : '*' } )原创 2017-08-04 15:31:45 · 9278 阅读 · 0 评论 -
MongoDB使用小结:一些不常见的经验分享
MongoDB使用小结:一些不常见的经验分享 最近一年忙碌于数据处理相关的工作,跟MongoDB打交道极多,以下为实践过程中的Q&A,后续会不定期更新补充。 另有《MongoDB使用小结:一些常用操作分享》,注:本文完成时MongoDB的最新版本为MongoDB 2.6。1、count统计结果错误这是由于分布式集群正在迁移数据,它导致coun转载 2017-01-12 17:09:26 · 1347 阅读 · 0 评论 -
mongodb3.0更改压缩方式操作步骤
近几日,公司某业务mongodb机器(版本3.0.5),频繁出现oom故障,经过判断是用了WiredTiger引擎zlib压缩导致的故障。ps:此业务平均3000+tps,高峰期1万+tps,zlib完全扛不住这样高的并发,后来改成不压缩却发现每天会产生200G左右的数据,业务方面需要保存一月的数据,200G*30=6T,现有机器没有这么大的磁盘,在经过测试对比后决定使用折中的snappy压缩原创 2017-01-13 17:04:32 · 3871 阅读 · 2 评论 -
TokuMX will not run with transparent huge pages enabled.
启动时报以下错误:Tue Oct 14 18:20:42.203 [initandlisten] TokuMX will not run with transparent huge pages enabled. Tue Oct 14 18:20:42.203 [initandlisten] Please disable them to continue.转载 2016-04-19 17:24:38 · 519 阅读 · 0 评论