我在windows azure linux vm上运行了一个mongodb,
数据库位于系统驱动器上,我希望将其移动到另一个硬盘驱动器,因为那里没有足够的空间。
我发现了这篇文章: Changing MongoDB data store directory
这些似乎是一个很好的解决方案,但还有另一个人提到了复制文件的事情,
我的数据库是实时的并且一直在获取数据,如何使这个过程失去最少的数据呢?
谢谢,
答案 0 :(得分:2)
首先,如果这是一个生产系统,你真的需要将它作为副本集运行。在singleton mongodb实例上运行生产数据库不是最佳实践。我会考虑2个正式成员加1个仲裁器的最低生产设置。
如果要转到副本集路由,可以先将此实例转换为副本集:
http://docs.mongodb.org/manual/tutorial/convert-standalone-to-replica-set/
这应该有最短的停机时间。
然后使用正确的存储设置添加2个新实例。同步后,您将拥有一个完整的3个成员集。然后,您可以故障转移到其中一个新实例。从副本集中删除此错误实例。最后,我添加了一个仲裁实例,让您最多可以恢复副本集的3个成员,同时降低成本。
另一方面,如果您不想作为副本集运行,我会在此实例上关闭mongod,将文件复制到另一个适当卷上的新目录结构中,将配置更改为指向它(更改dbpath或使用符号链接)然后再次启动。停机时间在很大程度上取决于现有数据库的大小,因此越早完成此操作就越好。
然而 - 我会再次强调这一点 - 如果你在mongoDB上寻找很少甚至没有停机时间,你需要使用副本集。