1

我正在尝试将数据存储在 Amazon EC2 上的 mongoDB 数据库中。我正在使用 starcluster 来配置和启动 EC2 实例。我在 /root/data 安装了一个 EBS 卷。我按照此处的说明安装了 mongoDB 。当我登录到 EC2 实例时,我可以键入,这会将我带到带有数据库mongo的 mongo shell 。test然后,我将一些数据添加到数据库中,比如说database1,其中包含各种集合。当我退出 EC2 实例并使用 终止它,starcluster terminate mycluster然后创建一个新的不同实例时,database1数据不再显示在 mongo shell 中。

我尝试将/etc/mongodb.conf文件中的 dbpath 更改/root/data/mongodb为 EBS 卷,然后使用and启动和停止mongodb服务。然后我再试一次并收到sudo service mongodb stopsudo service mongodb startmongo

MongoDB shell version: 2.2.2
connecting to: test
Sat Jan 19 21:27:42 Error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:91
exception: connect failed

另一个问题是,每当我终止 EC2 实例时,我对配置文件所做的任何更改都会消失。

所以我的基本问题是:如何更改 mongoDB 在 EC2 上存储其数据的位置,以便在我终止一个 EC2 实例然后启动另一个 EC2 实例时数据将保留。

编辑:

回应第一个答案:

  1. 目录确实存在
  2. 我将所有者更改为mongodb
  3. 然后我发出命令sudo service mongodb stop
  4. 检查端口是否已使用netstat -anp | grep 27017. 没有输出。
  5. 使用重新启动mongodbsudo service mongodb start
  6. 再次检查端口 27017 并没有收到任何输出。
  7. 尝试连接到 mongo shell 并收到相同的错误消息。
  8. mongodb.conf回原来的设置,按上述步骤重启mongodb,再次尝试连接。同样的错误。

EBS 卷在 starcluster 配置中配置为在每次启动时重新附加。

4

1 回答 1

1

对于更改问题后的“连接失败” ,您可以查看(可能在)/etc/mongodb.conf中指定的日志文件:/etc/mongodb.conf/var/log/mongodb/mongodb.log

  1. 检查指定的目录是否dbpath存在。
  2. 确保它可由“mongodb”用户写入。也许最好是 chown 到 mongodb。
  3. 确保 mongod 在启动它之前实际释放了 27017 端口:netstat -anp | grep 27017
  4. 在启动之前等待几秒钟mongod以重新启动mongo

您的问题不清楚您是否将Starcluster EBS 卷用于 Persistent Storage。请注意,当您终止一个实例并启动另一个实例时,普通 EBS 卷不会自动保留并重新附加。您需要手动附加和安装它们。

一旦你开始工作,你可能想要创建一个自定义 Starcluster AMI,并正确安装 mongo 并适当修改 /etc/mongodb.conf。

于 2013-01-20T02:49:14.473 回答