标签: mongodb

加速 mongodump+mongorestore

我创建了一个脚本来将 MongoDB 数据库复制到我的机器上。我正在创建一个 SSH 隧道 ( ssh -L ...),然后连接到隧道端口,mongodump然后将其输出通过管道传输到mongorestore

mongodump --host=127.0.0.1:##### --db=***** --archive | mongorestore --host={mongo_dest} --drop --archive
Run Code Online (Sandbox Code Playgroud)

我想加快复制速度。--gzip在这种情况下使用没有意义 - 因为 和 使用相同的机器和mongodump内存mongorestore。数据通过 SSH 套接字未压缩。

有没有办法mongodump在 SSH 机器上运行并将其输出通过管道传输到我机器上的进程?

当然,我可以转储数据库、存档、通过 SSH 复制并恢复它。但我不想占用临时空间。

ssh ssh-tunnel socket mongodb

2
推荐指数
1
解决办法
6491
查看次数

RDBMS:是否可以横向扩展 RDB?

是否可以横向扩展 RDB?如果可能,如何实现?

我问这个问题是因为我协助了一个 NoSQL 事件,在该事件中,演讲者多次提到关系数据库的缺点之一是无法横向扩展。换句话说,我们应该添加更多内存和更多存储空间,但我们不能像使用 NoSQL 数据库那样添加另一台计算机。

rdbms nosql mongodb

1
推荐指数
1
解决办法
3429
查看次数

mongodb 1 分钟吃掉 48G

在 mongodb 中,我使用这个集合:

Size     55.93g 
Data Size    39.82g
Storage Size 41.08g 
Extents  53 
Indexes  4 
Index Size   9.64g
Run Code Online (Sandbox Code Playgroud)

mongdb 需要几秒钟才能启动这个单个集合,并且专用服务器上的所有 48GB RAM 都没有了。

更糟糕的是,这台机器上还有一个mysqld+nginx/fcgi,应该允许一起使用至少24GB。即剩余的 24GB,对于 mongod 来说足够了!

但是,它并没有以公平的方式共享。每个人都说 mongod 的内存是由操作系统管理的,如果其他进程需要 RAM,则会为其他进程释放不必要的空间。在我的机器上,它没有释放 RAM。怎么了?

自由

             total       used       free     shared    buffers     cached`
Mem:      49559136   49403908     155228          0      57284   47247564
-/+ buffers/cache:    2099060   47460076
Swap:      8008392        164    8008228
Run Code Online (Sandbox Code Playgroud)

memory mongodb

1
推荐指数
1
解决办法
942
查看次数

如何安全地使用 fsyncLock() 备份单个 mongod

我在 MongoDB 的官方文档中读到:

重要:db.fsyncLock() 可能会阻止读取,包括验证身份验证所需的读取警告:调用 db.fsyncLock() 时,请确保连接保持打开状态以允许后续调用 db.fsyncUnlock()。关闭连接可能会使解锁变得困难。

在最坏的情况下,我使用 fsyncLock() 来阻止数据库,但由于临时网络故障,我突然失去了与数据库的连接。在这种情况下,我无法重新连接,因为 fsyncLock() 阻止了读取器。我的数据库将永远被阻塞。

我现在正在考虑关闭 mongodb 进行备份。单 mongod 最安全的备份解决方案是什么?

backup database-backup mongodb

1
推荐指数
1
解决办法
2299
查看次数

MongoDB:两个节点和初选

根据 Mongo 文档,为了安全地部署复制集,您至少需要两个活动节点和一个仲裁节点,因为主节点的选举需要多数票。

假设我可以拥有三台机器,因此部署三个成熟的 mongo 实例,没有仲裁者。

如果选定的主节点失败,我最终会得到两个节点,其中两个节点具有相同的“功率”级别:对我来说,这似乎是部署中描述的必须避免的情况。

有人可以解释为什么在初始设置相同的情况下在这种情况下选择一个主节点不是问题吗?

replication mongodb

0
推荐指数
1
解决办法
4955
查看次数

EC2 上的 MongoDB - 无法统计 /dev/xdf --- 没有这样的文件或目录

我正在学习在 EC2 上设置 MongoDB教程,但我陷入了以下部分:

$ sudo mkfs.ext4 /dev/xdf

mke2fs 1.42.3 (14-May-2012)
Could not stat /dev/xdf --- No such file or directory

The device apparently does not exist; did you specify it correctly?
Run Code Online (Sandbox Code Playgroud)

不知道如何进行 - 任何帮助将不胜感激!

编辑:

$ ls /dev
autofs           disk  hvc4   loop1         mapper              ppp     sdg     tty1   tty17  tty24  tty31  tty39  tty46  tty53  tty60  ttyS1    vcs4   vcsa5        xvdh
block            fd    hvc5   loop2         mem                 psaux   sdh     tty10  tty18  tty25  tty32  tty4   tty47  tty54  tty61  ttyS2    vcs5   vcsa6 …
Run Code Online (Sandbox Code Playgroud)

amazon-ec2 mongodb

0
推荐指数
1
解决办法
2939
查看次数

mongod 非映射虚拟内存突然翻倍,此后未变

non-mapped virtual memory我们 mongo 初级的统计数据一直是不变的,在昨天之前我们从未想过它。昨天,一个设计糟糕的查询的一系列意外的全集合扫描导致了很大的减速,该mongod进程使用了​​ 100% 的 CPU,每个查询都需要几十秒。

在将有问题的查询卸载到我们的辅助节点后,性能问题消失了,但非映射虚拟内存增加了一倍多,并且此后一直没有下降。它曾经保持在大约600MB; 现在大约1.4GB. 增长是立竿见影的,并且与放缓完全相关,此后它根本没有改变。

连接数自始至终都是完全恒定的,所以我们可以确定不是这样。

什么可能导致这种情况?这是个问题吗?我们应该担心吗?

在 EC2 实例上的 Ubuntu 12.04 64 位上运行。

mongodb

0
推荐指数
1
解决办法
1642
查看次数

SSH 隧道在后台

我正在尝试将我的生产 mongo 服务器隧道连接到我的测试服务器,因此,我可以执行一些测试。

我知道我可以简单地通过 ssh -L 建立一个隧道,但是我需要将它作为后台进程运行,因为我无法在我的终端中运行它。

我试过

ssh -f user@myip -L 27017:localhost:27017 -N
Run Code Online (Sandbox Code Playgroud)

我也试过简单地将它作为守护进程运行,但它也不起作用。

ssh -L 27017:localhost:27017 myuser@myip
Run Code Online (Sandbox Code Playgroud)

我知道从不同的服务器指向生产数据库是不好的。但问题是,我已将我的资产迁移到 S3,并且需要在将其上线之前测试一切是否正常。这只是要花我半天的时间来测试,所以我不想经历设置另一个实例的麻烦并在这里转储我的数据库的副本。

请帮我解决一下这个。

ssh ssh-tunnel mongodb

0
推荐指数
1
解决办法
890
查看次数

检查服务器上运行的服务,如果它们已经停止,则重新启动它们?(蟒蛇脚本)

我正在尝试编写一个 python 脚本,该脚本向我展示了在我的服务器上运行的服务。

问题是 mongodb 在服务器上不断停机,每次发生这种情况时,我都必须手动编写命令来启动它。

我想做的是在某些服务出现故障时自动完成这项工作。

目前我已经写了这个https://gist.github.com/prodicus/8993357d3cf49759835e

我知道它非常基本的家伙。它还有数英里要走:)

现在我如何通过这个脚本启动服务mongodbapache?任何建议都会非常有帮助。

mysql ubuntu ssh mongodb apache-2.2

0
推荐指数
1
解决办法
517
查看次数

用于运行 MongoDB 的 Amazon AWS 实例?

在 AWS 中运行 MongoDB 的最优化方法是什么?我得到了一些缓慢的磁盘 i/o 基准测试(我理解这是 EC2 上的标准)。大型 ec2 实例是我最好的选择吗?有没有办法获得更好的磁盘读取?

amazon-ec2 amazon-web-services mongodb

-1
推荐指数
1
解决办法
879
查看次数

尝试在 ubuntu 16.10 上安装 mongodb 后,我遇到了这个错误

尝试在 ubuntu 16.10 上安装 mongodb 时

当我输入这个时:

$ sudo systemctl start mongodb
Failed to start mongodb.service: Unit mongodb.service is masked
Run Code Online (Sandbox Code Playgroud)

我已按照以下链接中的所有步骤进行操作。

ubuntu mongodb

-1
推荐指数
1
解决办法
1791
查看次数

超越 MongoDB ......现在呢?

我们将调试和事务日志转储到MongoDB.

我们真的很喜欢,MongoDB因为:

  • 炽热插入性能
  • 面向文档
  • 能够在需要性能时让发动机放下插件

但是有一个大问题MongoDB:索引必须适合物理 RAM。实际上,这将我们限制为 80-150 GB 的原始数据(我们目前在具有 16 GB RAM 的系统上运行)。

因此,对于我们拥有 500 GB 或 1 TB 的数据,我们需要 50 GB 或 80 GB 的 RAM。

是的,我知道这是可能的。我们可以添加服务器并使用MongoDB sharding. 我们可以购买一个特殊的服务器盒,它可以容纳 100 或 200 GB 的 RAM,但这是摇尾巴的狗!我们可以在硬件上花费 boucoup $$$ 来运行FOSS,当 SQL Server Express 可以在更少的硬件上处理更多的数据时Mongo(SQL Server 不满足我们的架构需求,或者我们会使用它!)我们不会花费巨额$ 在硬件上,因为它是必要的,只是因为Mongo架构,而不是因为固有的处理/存储需求。(还有分片?撇开成本不谈,谁需要三个、五个或更多服务器的持续复杂性来管理相对较小的负载?)

底线:MongoDBFOSS,但我们必须在硬件上花费 $$$$$$$ 才能运行它?我们宁可购买商业软件!

我确定我们不是第一个遇到这个问题的人,所以我们问社区:

我们下一步要去哪里?

(我们已经运行了 Mongo v2)

mongodb

-2
推荐指数
2
解决办法
7634
查看次数