从单个实例mongodb恢复到空副本集

时间:2014-01-05 12:14:49

标签: mongodb database-backups rackspace-cloud

我在Windows服务器上安装了mongodb。我使用Rackspace备份定期备份data / db文件夹。

我使用Rackspace部署创建了一个mongodb副本集的部署,其中包含3个ubuntu服务器。现在我想将windows上的数据移动到空副本集。我该怎么办?

我尝试将windows上的data / db内容复制到主副本集上的var / lib / mongodb。它不起作用。

由于某种原因,ubuntu机器上的var / lib / mongodb不包含data / db目录。当我创建一个新的db时,将在var / lib / mongodb目录中创建db文件。

2 个答案:

答案 0 :(得分:1)

数据目录的差异很好..在Windows上,默认dbpath将为c:\data\db; Ubuntu包将dbpath设置为/var/lib/mongodb

由于您从一个空的副本集开始(并使用独立服务器的备份),最简单的方法是:

  • 停止副本集的所有mongod服务器(您绝对不希望将数据文件直接复制到正在运行的实例中!)。
  • 删除/var/lib/mongodb数据目录中已有的所有文件。
  • 将您的独立MongoDB备份中的数据文件复制到其中一个副本集服务器上的/var/lib/mongodb。此服务器将成为您的以设置副本集的其余部分。
  • 启动此主要内容,确保在配置文件中包含replSet名称。您可能已经从已创建的“空”副本集中获得此集。
  • rs.initiate() shell中运行mongo以在主服务器上创建初始配置。
  • 以此副本集的成员身份启动其他服务器:它们需要配置相同的replSet名称。
  • 使用rs.add(..)在主服务器上的mongo shell中添加其他服务器。假设添加成功(即mongod可以相互连接),这将开始初始同步过程(从主数据复制数据),新主机在完成初始同步后将成为辅助主机。

这与deploy a replica set tutorial基本上是相同的步骤,除非您先复制数据。

答案 1 :(得分:0)

问题可能与mongodb

的配置文件有关

找到文件mongodb.conf并编辑dbpath参数,检查路径是否确实存在,以及是否不创建缺少的目录。还要检查该路径中的权限

无论如何我不知道它是否是在新位置复制数据文件的正确方法,我想你应该使用mongo import/export