EC2上的持久性mongoDB数据问题

时间:2013-01-19 21:31:00

标签: mongodb amazon-ec2

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

我尝试将/etc/mongodb.conf文件中的dbpath更改为/root/data/mongodb(即EBS卷),然后使用mongodb启用和停止sudo service mongodb stop服务{ {1}}。然后我再次尝试sudo service mongodb start并接收

mongo

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

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

编辑:

回答第一个答案:

  1. 目录确实存在
  2. 我将所有者更改为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
  3. 然后我发出了命令mongodb
  4. 检查端口是否已使用sudo service mongodb stop释放。没有输出。
  5. 使用netstat -anp | grep 27017
  6. 重新启动mongodb
  7. 再次检查端口27017并且没有输出。
  8. 尝试连接到mongo shell并收到相同的错误消息。
  9. sudo service mongodb start更改回原始设置,按照上述步骤重新启动mongodb,然后再次尝试连接。同样的错误。
  10. 在星际集配置中配置EBS卷,以便在每次启动时重新附加。

1 个答案:

答案 0 :(得分:1)

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

  1. 检查dbpath指定的目录是否存在。
  2. 确保“mongodb”用户可以写入。也许最好是mongodb。
  3. 确保mongod在启动之前实际释放了27017端口:netstat -anp | grep 27017
  4. 等待几秒钟,mongod重新启动,然后再启动mongo
  5. 您的问题不清楚您是否使用Starcluster EBS volumes for Persistent Storage。请注意,Ordinary EBS volumes在终止实例并启动另一个实例时不会自动保留并重新挂接。您需要手动附加和安装它们。

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