将实时 mongodb 数据重新定位到另一个驱动器

Mat*_*n L 3 linux azure mongodb

我有一个在 windows azure linux vm 上运行的 mongodb,

数据库位于系统驱动器上,我希望将其移动到另一个硬盘驱动器,因为那里没有足够的空间。

我发现了这篇文章: 更改 MongoDB 数据存储目录

这些似乎是那里建议的一个很好的解决方案,但是还有另一个人提到了有关复制文件的内容,

我的数据库是实时的并且一直在获取数据,我怎样才能在丢失最少数据的情况下进行这个过程?

谢谢,

Joh*_*one 5

首先,如果这是一个生产系统,您确实需要将其作为副本集运行。在单例 mongodb 实例上运行生产数据库不是最佳实践。我认为 2 名正式成员加 1 名仲裁员是最低生产设置。

如果要走副本集路线,可以先把这个实例转成副本集:

http://docs.mongodb.org/manual/tutorial/convert-standalone-to-replica-set/

这应该有最少的停机时间。

然后添加 2 个具有正确存储设置的新实例。同步后,您将拥有完整的 3 个成员集。然后,您可以故障转移到新实例之一。从副本集中删除这个坏实例。最后,我会添加一个仲裁器实例,让您在降低成本的同时最多备份副本集的 3 个成员。

另一方面,如果您不想作为副本集运行,我会在此实例上关闭 mongod,将文件复制到另一个适当卷上的新目录结构,更改配置以指向它(更改 dbpath或使用符号链接),然后再次启动。停机时间将在很大程度上影响您现有数据库的大小,因此您越早这样做越好。

但是 - 我将再次强调这一点 - 如果您希望使用 mongoDB 几乎没有停机时间,则需要使用副本集。