Articles of mongodb

mongodb在尝试同步数据时保持循环

我把我的独立的mongodb转换成副本集。 我已经添加了一个成员(并且我想以后再添加两个成员,并closures主服务器)。 我的主要mongodb运行2.2.3,并且运行最新版本的mongodb 2.6.4的新副本成员。 这两个数据库的运行在Ubuntu服务器14.04,在微软Azure和他们正在运行在相同的亲和组。 (Vm尺寸是A2) 我已经编辑了“nofile”和“nproc”的ulimit到65535,在看到MMMS监控build议之后,BUT只在副本上,以避免机器的重启时间,是否有必要? 我在主数据库上find了一个超过80米的文件,并在现场制作中运行。 这是否是这样的? 经过几个小时的同步数据,TTL显示以下错误,并开始重新同步。 并保持循环。 [rsSync]完成build立底层,即将提交 [rsSync]旧的日志文件将被删除:/datadrive/data/journal/j._9 [rsSync]build立索引完成。 扫描55381316总logging。 1348.97秒 [conn221] serverStatus非常慢:{after basic:0,after assert:0,after backgroundFlushing:0,after connections:0,after cursorors:0,after dur:0,after extra_info:0,after globalLock:0,after indexCounters:0,锁后:0,网后:0,后opcounters:0,后opcountersRepl:0,后recordStats:744214,后repl:744214,在末尾:744214} [conn221] command admin。$ cmd command:serverStatus {serverStatus:1} keyUpdates:0 numYields:0 locks(micros)r:31 reslen:3920 1243515ms [conn228] serverStatus很慢:{后基本:0,后断言:0,之后backgroundFlushing:0,后连接:0,后游标:0,后dur:0,后extra_info:0,后globalLock:0,后indexCounters:0,锁后:0,网后:0,后opcounters:0,后opcountersRepl:0,后recordStats:634932,后repl:634932,在末:634932} [conn228] command admin。$ cmd command:serverStatus {serverStatus:1} keyUpdates:0 numYields:0 locks(micros)r:33 reslen:3920 1073310ms [conn235] serverStatus很慢:{后基本:0,后断言:0,之后backgroundFlushing:0,后连接:0,后游标:0,后dur:0,后extra_info:0,后globalLock:0,后indexCounters:0,锁后:0,网后:0,后opcounters:0,后opcountersRepl:0,后recordStats:578551,后repl:578551,在末尾:578551} [conn235] command […]

在相同的存储卷上创build第二个(克隆)MongoDB副本集

我们正在升级我们的软件,这需要更新我们的MongoDB数据库。 我们计划通过使用新名称复制现有的ReplicaSet,并对新的名称进行更新,然后在一切准备就绪时进行切换。 这两个ReplicaSet将在同一台服务器上。 我已经用它的新名称创build了新的独立数据库(是否有来自主服务器的mongodumop,然后在与主服务器同样的卷名下将其作为独立服务器进行了恢复)。 我现在想要做的是将这个新的数据库从一个独立的版本更改为一个ReplicaSet,而不会影响原始的Production ReplicaSet 我发现 – 将独立转换为副本集http://docs.mongodb.org/manual/tutorial/convert-standalone-to-replica-set/ 但是这个例子只显示了一个ReplicaSet,我只想确保这个过程仍然可以在同一台服务器上的两个数据库上工作。 在此示例中,要从独立版转换的ReplicaSet的名称是mongo启动选项之一(–replSet)。 该选项是否需要原始和新的ReplicaSrt名称,或只需要从Standalone转换新的名称

增加mongodbauthentication断开连接通过nodejs

我需要外部访问我的mongodb数据库,所以我已经从mongod.conf文件中删除了bind_ip,并打开了auth。 然后,我添加了一个可以访问所有内容的root用户,并尝试用robomongo连接到数据库 – 完美地工作。 然后,我为nodejs应用程序添加了另一个用户。 我已经尝试使用angular色dbAdmin,readWrite,read ….并且无论我设置了什么,它都不会完成连接到nodejs中的数据库。 用户看起来像这样: db.getUser('node'); { "_id" : "admin.node", "user" : "node", "db" : "admin", "roles" : [ { "role" : "read", "db" : "mydb" }, { "role" : "userAdmin", "db" : "mydb" }, { "role" : "dbAdmin", "db" : "mydb" }, { "role" : "readWrite", "db" : "mydb" }, { […]

使用数据库来存储文本文件和图像

我需要build立一个图像/静态文件caching,可能会从1kb到〜200kb主机可能有几百到几千个静态文件。 我需要超快速读取(我正在使用redis,但它是一个线程,我不知道它是如何群集工作,因为它在testing中,我需要有多个caching服务器)。 我试过了:Redis,ElasticSearch和MongoDB。 你可以请给我一些build议,哪个数据库软件将是最好的: TTL或类似的东西 非常快的读取 聚类并不重要,但是如果有的话就好了 如果你决定冷静地知道你们中的很多人会做什么,请让我知道你为什么这么做。

EC2退休 – meteor/ MongoDB

我在Amazon EC2实例上托pipe我的Meteor应用程序。 今天我收到一封邮件,说我的实例计划退休,直到月底。 我没有这方面的经验,处理这种情况的最好办法是什么? 我的根设备types是ebs。 亚马逊build议:“我们build议您启动替代实例并开始迁移到它们。” 我已经创build了一个我的实例的AMI镜像并启动了它。 不幸的是我的应用程序无法访问。 目前正在运行的实例可以通过web和ssh访问。 有没有最佳做法? 提前致谢

MongoDB复制失败

我试图debugging一个奇怪的问题,导致失败或一副副本过时,无法赶上主(在AWS,AWS上运行)的副本集。 典型的复制延迟<1秒。 似乎有一个与二级变得过时相关,主要用尽日志空间,即/ var / log / mongodb /。 oplog存储在不同的驱动器上,并具有> 50GB的可用空间。 问题:主服务器创build日志失败会导致复制失败吗? 我一直无法find任何文件或在网上可以证实这一点。 编辑以添加db.printReplicationInfo()的输出: rs0:PRIMARY> db.printReplicationInfo() configured oplog size: 30720MB log length start to end: 2238secs (0.62hrs) oplog first event time: Mon Nov 09 2015 16:36:13 GMT+0000 (UTC) oplog last event time: Mon Nov 09 2015 17:13:31 GMT+0000 (UTC) now: Mon Nov 09 2015 17:13:31 […]

为什么在3.0升级到3.2升级时,MongoDB复制套件不能同步RBAC $外部数据?

我想知道是否有人看到一个问题从3.0.9升级到3.2.8与$外部用户数据库不被复制? 我有一个现有的3.0.9副本集环境运行,没有encryption通信(no-TLS),没有身份validation; 环境工作正常。 但是,当我使用具有TLS和RBAC的3.2.8(使用$ external)进行升级时,集群中的SECONDARY成员似乎没有获得$外部用户数据。 如果我使用我的configuration执行3.2.8的原始安装,它可以正常工作,即连接到副本集的应用程序以及从主要读取/写入的应用程序,或者只是从辅助连接读取可连接和身份validation。 但是,如果我尝试从升级的3.0.9-3.2.8群集中执行相同的操作,connect,auth和read / write从主服务器没有问题,但他们可以连接,但不能连接到辅助服务器。 这是一个已知的错误? 我已经阅读了所有mongodb上的升级文档,但无法find任何人尝试这个。 我遇到的错误是: test7-mongodb-rs:SECONDARY> db.getSiblingDB("$external").auth( { mechanism: "MONGODB-X509", user: "CN=*******,OU=******,O=**********,L=***,ST=**,C=US@$external" Error: 11 { ok: 0.0, errmsg: "Could not find user CN=*******,OU=******,O=**********,L=***,ST=**,C=US@$external", code: 11 } 0 一些额外的信息似乎很有趣。 如果我使用我的集群成员证书,而不是客户端证书,我可以连接和授权给辅助。 然后,当我在$ external DB上运行getUsers()命令时,会引发以下错误: test7-mongodb-rs:SECONDARY> db.getSiblingDB("$external").getUsers() 2016-08-17T16:49:56.188-0400 E QUERY Error: not master and slaveOk=false at Error (<anonymous>) at DB.getUsers (src/mongo/shell/db.js:1342:15) […]

我可以限制mongodb文件的数量(每个2GB)吗?

我看到我的mongodb服务器正在创build这样的文件: my_db.ns my_db.1 my_db.2 my_db.3 my_db…. my_db.15 对于我的一些mongod进程停止到9,但有时会上升到13,14,15。 然后我在我的小AWS实例上有一些空间问题。 我不想增加大小。 我想告诉mongo(v2.6)不要超过10个文件,但是在添加新条目时不会阻塞mongo。 我想要删除最旧的数据或删除空间。 我用这个来要求mongo不要创build10个以上的文件。 quota=true quotaFiles=8 但后来执行一段时间,而插入,我得到这个错误:MongoError:超过配额 有没有办法强制mongo重用相同的文件或不创build新的,但没有产生错误? 谢谢

Mongos with –upgrade:我已经停止了平衡器,但是

从Ubuntu 14.x切换到16.x后,我遇到了麻烦。 像configuration服务器,仲裁器和主MongoDB服务器的MongoDB进程运行良好。 我可以用Mongo shell访问我的数据库。 但问题来自mongos。 当我想启动它(使用–upgrade )时,它会崩溃,说运行升级之前必须停止平衡器。 但是,我已经停止了几秒钟! 我用Mongo shell做了: sh.stopBalancer () 然后我用下面的方式validation了状态 sh.getBalancerState () 返回的值是false 。 但是我仍然从mongos得到同样的错误! (平衡器必须停止configuration升级) 之前的几行(在mongos输出中)我得到了这个: 范围连接到xxx没有被返回到池 但我不明白这句话。 我不知道这是否与我的问题有关。 所以最后的问题是:我怎么能成功启动mongos?

在场所中使用Kubernetes和MongoDB Cluster(分片)

目前我正在研究使用Kubernetes和MongoDB集群。 场景:我们正在计划创build一个分割的Mongo Cluster。 我们打算使用MongoDB的Ops Manager来编排集群,它是碎片。 我们计划对所有数据库(包括自动化代理)进行docker化,以便于部署。 现在我们想知道是否可以用Kubernetes编排Docker镜像(和VM),但是还有很多挑战: 我们需要确保包含同一个分片(副本)的mongo实例的多个docker容器不会与原来的相同 。 (这将是一个复制“失败”)。 我们期望我们的数据库会变得相当大(将来有多个TB,但在开始的时候是相当小的),所以每个分片容器不应该在某个时候获得它自己的VM吗? 这可能是Kubernetes可以决定的事情吗? 我将面临更多的挑战,当然还有更多的问题,我应该问的,但这些是我现在最“紧迫”的问题。 我也读了Docker Swarm,看起来更简单。 所以我想知道这是否会是一个更好的select。 他们是否可以给我指点/build议? 我完全在这个错误的轨道上? 链接: Docker集群工具