mongodb
文章平均质量分 84
魂醉
这个作者很懒,什么都没留下…
展开
-
from digoal “mongoDB single db convert to replicaSet ”
以下以2.0.2为例 : 1. 修改主节点配置# 其他配置不变# 增加配置,例如noauth = trueoplogSize = 31280journal = truejournalCommitInterval = 402. 重启mongodbmongo 127.0.0.1:4321/admindb.shutdownServer()# 增加启动项 --replSet=set_...原创 2018-08-29 16:41:38 · 206 阅读 · 0 评论 -
MongoDB Replica set + sharding
正好业务需求,写一篇配置文档服务器环境:192.168.105.41192.168.101.115192.168.101.116由于资源限制,这里就用3台服务器搭建环境,有条件,可以每个端口分配一台服务器架构设计:192.168.105.41shard1_1:5281shard2_1:5282c原创 2016-07-26 10:11:16 · 627 阅读 · 0 评论 -
MongoDB 通过 DBRef关联查询
A表插入数据: var a={value:"1"} var b={value:"2"} var c={value:"9"} var d={value:"10"} db.A.save(a) db.A.save(b) db.A.save(c) db.A.save(d) WriteResult({ "nIns原创 2015-12-03 15:58:57 · 6550 阅读 · 0 评论 -
mongodb3.0.4 MongoDB-CR Authentication failed
新的mongodb3.0.4环境添加用户后,应用服务器一直报错验证失败。但是到相关库下验证,结果返回1 db.auth(“username”,”password”); 1 切换到admin库下,查看system.version { “_id” : “authSchema”, “currentVersion” : 5 } 查看system.users “credentials” : {原创 2015-07-30 09:34:48 · 3197 阅读 · 0 评论 -
mongodb 锁
mongodb不同于其他关系型数据库,mongodb锁的粒度很大,2.2之前是整个server级别的锁,也叫全局锁,但是支持并发读,也就是说读可以同时读,但是只要有写操作,那么就加上锁,其他人既不能读也不能写,从2.2开始,这个锁的粒度缩小到了库级别,如果你有3个库,一个库有写锁,那么其他2个库还是继续可以读写操作,希望以后能像关系数据库一样到表级别。2.2锁引发的条件:O原创 2013-05-02 09:22:34 · 1190 阅读 · 0 评论 -
mongodb replica sets reconfig and conver a Secondary to an Arbiter
replica set由于需求可能会调整节点的优先级,或者仲裁节点那么先看一下语法:rs.reconfig(configuration[, force])Parameters:configuration – A document that specifies the configuration of a replica set.force – O原创 2013-05-02 09:25:28 · 789 阅读 · 0 评论 -
mongodb date type
mongdb时间类型有Date(),new Date(),ISODate()> Date() --显示当前时间Wed Mar 20 2013 10:50:49 GMT+0800 (CST)> new Date() --构建一个格林尼治时间 可以看到正好和Date()相差8小时,我们是+8时区,也就是时差相差8,所以+8小时就是系统当前时间ISODate("2013-0原创 2013-05-02 09:24:00 · 1146 阅读 · 0 评论 -
mongodb compact
在2.0以后,可以使用compact对集合进行压缩,释放空间,这个类似于repairdatabase,但是repairdatabase只能对整个数据库进行压缩,所以在效率和速度上,compact更快,也不会需要那么多的磁盘空间。 运行格式如下:> db.runCommand( { compact : 'mycollectionname' } )> // or>原创 2013-04-28 09:17:57 · 1128 阅读 · 0 评论 -
mongodb update
之前没记录更新的操作,今天有空记录一下mongodb update的使用先看语法:db.collection.update( , , )语法很简单,但是使用起来,要配合一些函数,就会复杂一些,解释一下query:条件限定,也就是需要更新行的条件,相当于SQL中where后面的条件判断update:相当于SQL表中的set语句options:这里需要注意的是mongodb的原创 2013-04-28 09:19:05 · 1182 阅读 · 0 评论 -
Mongodb Replica sets 重新同步报错
$err: "getMore executor error: CappedPositionLost CollectionScan died due to position in capped collection being deleted. Last seen record id: RecordId(1564216124)", code: 17406 }由于记录都是一些日志表,做了cappe原创 2016-08-09 16:56:19 · 2311 阅读 · 0 评论 -
Mongodb PITR恢复
PITR(point-in-time recovery)是在有备份的情况下,可以恢复到任何一个时间点。之前文章写过,mongodb的备份工具mongodump,mongorestore,mongoexport,mongoimport以上工具就不再详细介绍这里介绍一下mongodump的一个选项--oplog--oplog原创 2017-02-28 13:43:37 · 1014 阅读 · 0 评论 -
mongodb TTL collections
从2.2开始,mongodb又引入TTL(time to live),之前有capped collections,特性已经介绍过,这里先了解一下TTL的特性,就是可以在建立索引的时候指定多久后删除对应的记录,建立索引的字段必须是date类型,这样我就更加灵活的控制过期数据。条件限制:1.创建索引的字段必须是一个date BSON type,如果不是时间字段,那么不会过期2.不能再_id...原创 2018-08-29 16:38:53 · 383 阅读 · 0 评论 -
Force drop a collection in MongoDB
今天遇到一个奇怪的问题,一个mongodb库里存在了2个表名字一样的collection>db.sms_plat.drop()>false>db.sms_plat.stats()>{ "errmsg" : "ns not found", "ok" : 0 }怎么会不存在,奇怪,想了良久,我还是对这个表名怀疑db.getCollectionName...原创 2018-08-29 16:37:46 · 352 阅读 · 0 评论 -
mongodb replica sets recreate
最近一套mongodb replica sets损坏,原来的主节点损坏,从节点切换位主节点接替服务,但是业务程序没有重启,造成切过去以后,没有写入数据,不过业务不是很重要,所以影响不大,重启程序后,一个节点服务。接下来进行重建工作。 主节点起来后,加入到集群,显示加入成功,状态也正常,可是主备切换的时候始终切不回来,再看从节点,数据根本没同步,强制切换一样无效,于是把local文...原创 2018-08-29 16:36:22 · 248 阅读 · 0 评论 -
mongodb 2.6 新建用户
随着版本的更新,对在使用mongodb的业务也进行了版本升级,但是在drop掉一个数据库时,问题来了,原来的用户随着删除库也被删除掉,但是再想通过原来的语法db.addUser()添加,一直报错,提示用db.createUser()命令创建。首先如果在除admin库之外的用户通过db.addUser()添加是不会成功的。我删除了原admin库的root用户,通过db.createUser(...原创 2018-08-29 16:35:22 · 432 阅读 · 0 评论 -
Upgrade MongoDB to 3.0
随着3.0.2的发布,将对业务线的数据库版本进行升级Upgrade RequirementsTo upgrade an existing MongoDB deployment to 3.0, you must be running 2.6. If you’re running a version of MongoDB before 2.6, you must upgrade to 2.6 ...原创 2018-08-29 16:32:47 · 274 阅读 · 0 评论 -
两个节点recovering,一个节点SECONDARY,如何恢复为primary
replica sets 两个节点意外recovering,一个primary,关闭两个recovering节点后,primary节点变为SECONDARY用以下步骤恢复到primaryreplset:SECONDARY> cfg = rs.conf()replset:SECONDARY> conf = {_id:cfg._id,version: cfg.version + 1,mem...原创 2018-02-26 14:34:36 · 1580 阅读 · 0 评论 -
Mongodb 3.2.1检查表是否为capped
最近一个监控业务的mongdb,数据量猛增,磁盘吃紧,本来应该都是capped表,不应该空间增长这么快,进去看了一下,是很多新建的表不是capped,但是又由于表很多,在mongdb命令行实在看的眼花,写个脚本查看是否capped。举个例子:先取出表检查语句:$mongo 127.0.0.1:8888/skymobiMongoDB shell version: 3.2.原创 2016-04-26 10:46:57 · 649 阅读 · 0 评论 -
Mongodb 权限控制以及角色使用
1.访问控制,从来源IP以及端口进行限制2.用户权限划分,数据库内部进行权限划分,不让权限放大1.访问控制通过iptables控制访问来源IP,以及端口vim /etc/sysconfig/iptables加入以下规则:#app servers-A INPUT -m iprange --src-range 192.168.xxx.xxx -p tcp -m mu原创 2017-04-17 14:57:33 · 8239 阅读 · 0 评论 -
mongodb update array (续)
由于超过最大字数,续一下PRIMARY> db.test.update({ "skyImsi" : "aaaaaaaaaaaaaaaaaaaaaa"},{$pull:{"usrDiscountBCList":"joe"}}) --$pull使用PRIMARY> db.test.findOne(){ "_id" : 1, "myfied" : [原创 2013-04-28 09:27:35 · 1098 阅读 · 0 评论 -
mongodb update array
之前一篇介绍了update的基本操作,今天介绍涉及更深一些的操作,数组操作以及一些函数的使用$inc 对指定的字段增加值,只能操作数值类型 语法:{ $inc : { field : value } }给field增加value$set 这个相当于SQL的set操作,指定某个字段的值,可以操作所有类型$unset 语法:{ $unset : { field : 1} } 删除某一个字原创 2013-04-28 09:20:30 · 1623 阅读 · 0 评论 -
mongodb 聚合函数
1.count这个函数很好理解,和其他数据库一样,就是做一个count操作select count(*) from tab1 =db.tab1.count() 以上例子很好理解,但是如果在操作中有skip,limit这种操作的话,那么count会忽略掉这些操作,必须加入一个true参数比如:db.tab1.find().skip(1),limit(2).count()和db.tab原创 2013-04-27 09:21:46 · 1300 阅读 · 0 评论 -
mongodb replication
1:master-slave replication主从复制:一个服务启动的时候加上--master参数,另一个服务启动时加上--slave和--source参数就可以实现同步了。一个master服务可以有一个或者多个slave,每一个salve都知道master的地址,如图: 举例:启动master$ mkdir -p ~/dbs/master$ ./mongod -原创 2013-04-24 10:12:13 · 780 阅读 · 0 评论 -
mongodb日常操作(查询)
首先介绍日常增,删,改,查询:1:查询show collections ----查看数据库下的集合db.collection-name.find() --------最基础的查询db后面直接跟集合的名称,不能完全显示真个集合的数据,可以用it显示db.collection-name.findOne() ----------一定要注意大写,返回集合的第一条记录,如果没数据原创 2013-04-24 10:08:07 · 708 阅读 · 0 评论 -
mongodb管理Security and Authentication
mongdb自己也提供了验证机制,如果不验证是无法访问数据库对象,一个数据可以有多个用户,用户的权限也可以各不相同,下面具体介绍一下。> use admin ----登录到超级管理员 >db.addUser("root", "abcd");{ "_id" : ObjectId("4eaf58af769d879418d93191"), "user"原创 2013-04-24 10:05:55 · 823 阅读 · 0 评论 -
mongodb capped collections
在mongodb中,除了普通的collections,还有一种特殊的collections,叫做capped collections。特点:1.只能插入,更新,不能删除doc,可以使用drop()删除整个collection2.LRU列表,相信大家对这个应该很了解了,oracle里面很多地方就是用的这个规则,如果指定的集合大小满了,那么会按照LRU挤出数据存放新插入的数据,这里记得更新原创 2013-04-24 10:06:58 · 721 阅读 · 0 评论 -
mongodb index介绍
mongodb同其他数据一样,提供索引,来提高查询的效率。看下索引的种类:1:基础索引2:文档索引3:组合索引4:唯一索引基础索引:比如一个post集合中含有name字段,在name字段上建立索引:db.post.ensureIndexe({name:1}) 后面的1意思是升序,-1表示降序查询该集合的索引:db.post.getIndexes();会原创 2013-04-23 16:47:31 · 829 阅读 · 0 评论 -
mongodb install
首先介绍下mongodb的安装。1.下载安装包http://www.mongodb.org这个上面找自己需要的tar包就可以了2.解压tar包:tar -zxvf mongodb-linux-x86_64-1.4.0.tgz3.创建存放数据库的位置mkdir -p /data/db/4../mongod -dbpath /data/db指定路径启动数据库server,可以./mon原创 2013-04-23 16:45:02 · 508 阅读 · 0 评论 -
mongodb日常管理之导入导出以及备份相关
mongodb提供了mongoexport 和mongoimport 工具,使用也很简单mongoexport --help 查看帮助举例:mongoexport -d databasename -c collectionname -o filename这里还可以指定导出CSV格式,指定需要那些列:mongoexport -d databasename -c collectio原创 2013-04-23 16:46:23 · 502 阅读 · 0 评论 -
mongodb初级学习之逻辑结构和物理结构
前面些了怎么安装,那么安装好以后就可以对mongodb进行一些初级的认识。mongodb也分逻辑结构和物理结构,那么这里先介绍下逻辑结构:1:逻辑结构主要由database->collection->document组成,这里是层次结构。2:多个文档组成集合,多个集合组成数据库,多个数据库组成mongodb实例3:反过来也就是,一个mongodb可以包括多个database。物原创 2013-04-23 16:45:41 · 1484 阅读 · 0 评论 -
mongodb explain plan
mongodb也提供explain命令,来查看执行计划,可以查看系统的是否用到索引,是怎么使用索引,针对性的对查询进行优化。先看一个例子> db.post.find().explain(){ "cursor" : "BasicCursor", "indexBounds" : [ ], "nscanned" : 40,原创 2013-04-24 10:08:56 · 797 阅读 · 0 评论 -
mongodb监控工具
1:mongosniffmongosniff --source NET lo监控mongodb的端口举例: 这是打开的两个客户端,可以看到相应的操作在这个监控下面可以看到2:mongostat 可以查看运行的mongodb的统计信息 字段说明: insert: 每秒插入量 query: 每秒查询量 update: 每秒更新量原创 2013-04-24 10:10:11 · 1042 阅读 · 0 评论 -
mongodb 模糊查询以及$type使用
最近有一监控业务,由于数据采集到非数字内容,导致监控图表无法正常显示,所以要找出这部分数据,进行删除,然后开发员从源头更正插入数据库的数据,不再产生非数字内容。 下面举一个例子:建立测试数据: for(i=1;i > db.test.find(){ "_id" : ObjectId("504ece595e8dc12ed97482b2"), "id" : 1, "con原创 2013-04-27 09:23:38 · 1339 阅读 · 0 评论 -
mongodb 查询结果保存为结果集以及根据条件导出数据
有时候需要把从一个集合里查询的结果保存为一个集合,可以用以下写法:var temp1 = db.mtb1.find(name:"joe");while(temp1.hasNext()) db.tab2.insert(temp1.next());相当于sql中:create table tab2 as select * from mtb1 where name='joe';原创 2013-04-27 09:23:01 · 9065 阅读 · 0 评论 -
error RS102 too stale to catch up
这个错误是replica set中经常看到的一个错误,原因是主节点记录插入的记录速度超过了oplog的同步,官方有这个错误的解释,以及一些处理的方法。http://www.mongodb.org/display/DOCS/Resyncing+a+Very+Stale+Replica+Set+Member 官方介绍了几种解决的方法:一个是重新完全同步,需要把原来的数据全部删除。一个是原创 2013-04-27 09:22:28 · 757 阅读 · 0 评论 -
1.6 pair convert 2.0 replica sets
最近一个业务需要进行升级,之前的版本是1.6,我准备升级到最新的2.0.5,而且原来用的pair,到了2.0.5当然要使用replica set升级已经转换步骤: 1.对原来pair中slave数据库进行重建,slave转换成replica sets的主节点 2.停止服务,把master的数据迁移至转换的主节点。 3.启动服务连接至新建的主节点。 4.对pair中master数原创 2013-04-26 09:51:04 · 540 阅读 · 0 评论 -
mongoDB single db convert to replicaSet
以下以2.0.2为例 : 1. 修改主节点配置# 其他配置不变# 增加配置,例如noauth = trueoplogSize = 31280journal = truejournalCommitInterval = 402. 重启mongodbmongo 127.0.0.1:4321/admindb.shutdownServer()# 增加启动项 --r原创 2013-04-26 09:49:55 · 881 阅读 · 0 评论 -
mongodb sharding 机制
用过mongodb的都知道sharding,这里介绍下分片机制 首先介绍下区间概念,比如[a,d),这就是一个区间,而mongodb每个分片的点,会有多个这样的区间,随着数据量的增加,分片的区间根据数据量会进行分裂,从而分裂成多个区间,如:[a,d)分裂成[a,c)和[c,d)l两个区间,一旦分片之间的数据量不平衡,那么就会以这个区间为单位,进行迁移。以下的图示是,分片根据区间进行数据迁移原创 2013-04-26 09:48:57 · 891 阅读 · 0 评论 -
mongodb sharding
这里先介绍sharding的架构和几个基本概念术语。shard server :shard server可以使一个mongod实例,也可以是replica set。config sever:为了将指定collection存储在多个shard中,那么就需要个key来进行分割,config server存储各个节点的配置信息。shard key的范围,以及分布情况。route proces原创 2013-04-25 09:44:23 · 1014 阅读 · 0 评论 -
mongodb replica set
之前主要介绍了RS(replica set)的安装配置,这里再介绍一下日常的管理,比如添加以及删除节点。故障转移,这个无疑是RS的重要特性: 在之前建立好的replica set,直接kill掉进程,剩下的节点就会选举出一个节点作为主节点。添加删除节点: 删除节点:rs.remove()即可例如:rs.remove("localhost:20004")添加节原创 2013-04-25 09:42:46 · 731 阅读 · 0 评论