我尝试备份我当地的mongodb。我使用archlinux并安装了mongodb-tools以便使用mongodump。 我试过了:
mongodump --host localhost --port 27017
mongodump --host localhost --port 27017 --db mydb
每次我都有同样的回应:
Failed: error connecting to db server: no recheable server
然而,我可以使用
连接到数据库mongo --host localhost --port 27017
或只是
mongo
我的mongodb版本是3.0.7。 我没有设置任何用户名/密码
如何正确使用mongodump备份本地数据库?
答案 0 :(得分:1)
这似乎是mongodump
工具中的错误,有关详细信息,请参阅此JIRA票证。如果明确指定IP地址,则应该能够使用mongodump
:
mongo --host 127.0.0.1 --port 27017
答案 1 :(得分:0)
我个人仅在两种情况下使用mongodump:备份分片群集元数据(大小只有几MB)和(相对)便宜的数据,这很容易通过其他方式重新获得。
为了正确地进行MongoDB备份,imho只有三种选择:
它有几个优点。您可以进行时间点恢复,保证数据库处于选定时间点的一致状态。它的设置和维护非常简单。 然而,你猜对了,它附带了一个基于数据波动性和整体规模的价格标签,对于具有低到中等波动性的中小型数据来说,这是合理的。
作为云备份的本地版本(它还有其他一些超出此答案范围的功能),它提供了相同的好处。它更适合大规模中等规模到大型数据库或具有不成比例的高波动性的数据库(与数据大小相比较高的“OplogGb / h”值)。
嗯,它有点便宜。只需制作快照,安装它,将其复制到某个备份空间,卸载并销毁快照,可选择压缩复制的数据即可完成。但是有一些警告。
要获得一致数据的备份,您需要在分片群集上同步快照。特别是因为分片群集元数据也需要与备份保持一致,如果您想要中途快速恢复。这可能会变得有点棘手。要确保数据一致,您需要断开所有mongos
,停止平衡器,将数据fsync到每个节点上的文件,制作快照,再次启动平衡器并重新启动所有{{1} }。要使正确同步,每次进行备份时都需要几分钟的维护时间。
请注意,对于简单的副本集,不需要同步,并且备份可以正常运行。
文件系统快照适用于所谓的“写时复制”(CoW)。稍微简化:当您创建快照并修改文件时,会复制该文件并将更改应用于新复制的文件。但是,快照指向旧文件。很明显,为了能够创建快照,按照CoW,您需要一些额外的磁盘空间,以便MongoDB可以在处理快照时工作。让我们假设一个最糟糕的情况,其中所有数据都已更改 - 您需要至少100%的数据大小过度配置MongoDB的分区,或者换句话说,您的关键磁盘利用率为50 %减去您需要扩展的时间的某个阈值。当然,这有点夸张,但你得到了图片。
如上所述:“正确”在备份方面是一个非常主观的术语。 ;)