【问题标题】:MongoDB does not see database or collections after migrating from localhost to EBS volume从 localhost 迁移到 EBS 卷后,MongoDB 看不到数据库或集合
【发布时间】:2014-05-15 17:09:05
【问题描述】:

完全披露:我是 mongodb 的一个完整的 n00b,并且刚刚在 AWS 上使用 mongo 弄湿了我的脚(但在 IT 领域工作了 2 年,所以不是一个完整的 n00b:P)

我设置了一个 EBS 卷并在 EC2 实例上安装了 mongo。 我的问题是我最初配置的 EBS 卷太小。 当我意识到这一点时,我:

  1. 创建了一个新的更大的 EBS 卷
  2. 将其安装在服务器上
  3. 停止 mongo ($ sudo service mongod stop)
  4. 将我的所有 /data/db 文件复制到新卷中
  5. 更新了 conf 文件和 fstab(分别为新卷的 dbpath、logpath、pidfilepath 和挂载点)
  6. 重启 mongod

当我执行时:$ sudo service mongod start
- 一切正常。 - 我可以在 admin 和 local 数据库中进行操作。

但是,当我运行 mongos 命令时:> 显示数据库
- 我只看到管理员和本地。 - 未列出我复制到新卷中的数据库(名为包含)。

我仍然有数据库的工作本地副本,所以我的数据不会丢失,只是不确定如何最好地移动 mongo 数据,除了:

A) 重新开始将数据导入 AWS 服务器上的数据库(不是我想要的,因为它已经加载到我的本地数据库中)

B) 再次将本地数据库复制到新的 EBS 卷(同样不是首选,但比再次从头开始导入所有数据更好!)。

注意:最初我使用以下命令将数据安全复制到 EBS 卷中:

$ scp -r -i //ec2-user@:/

然后,当我在卷之间复制时,我使用了 vanilla cp 命令。

我错过了什么吗?

我在 SO 和网络上能找到的最好的就是这个过程 (How to scale MongoDB?),但也许我错过了命令中的一个开关或使我的数据库文件无效/无用的过程的细微差别?

知道如何让 mongo 查看我的其他数据库文件和集合吗? 还是我在途中的某个地方犯了不可逆转的错误?

感谢您的帮助!!

【问题讨论】:

    标签: mongodb amazon-web-services amazon-ec2 database-migration database


    【解决方案1】:

    您确定正在加载 conf 文件吗?对于测试,您可以加载 mongod.exe 并直接指定数据库的路径以进行测试,即:

    mongod --dbpath c:\mongo\data\db(unix 语法可能略有不同,这里是 windows)

    从命令行运行它,看看 mongo 抱怨什么(如果有的话)。

    【讨论】:

    • 从命令行:$ mongod -dbpath /data/dba 我得到这个:initAndListen 中的异常:10309 无法创建/打开锁定文件:/data/dba/mongod.lock errno:13 权限拒绝 mongod 实例是否已经在运行?,正在终止...无法删除 fs lock errno:9 错误的文件描述符 看起来它正在寻找锁,但唯一的锁文件似乎正在工作。从 mongo 日志中,我看到了成功的启动。那么如何确保 mongo 将我的 mongod.conf 文件加载到 /etc 中呢?感谢您为我提供线索!我会进一步调查 conf 文件。
    • mongod.exe 进程对目录有完全权限吗?
    • 我再次检查了服务器上的 mongod 进程,它肯定是在拥有所有数据目录的 mongod 用户下使用 -f /etc/mongod.conf args 运行的。现在我正在检查目录中的单个文件权限设置。我正在尝试 mongodump/mongorestore 进程(从我的本地工作数据库转储并在我将输出推送到云中附加的 S3 存储后恢复到 EC2 服务器)。在运行该过程时(我的低级 DSL 连接甚至需要一段时间才能将 16 GB 推入 S3 存储桶),我会继续查看是否还能找到其他错误。
    • 我仍然对为什么运行 '$ sudo service mongod start' 在运行 '$mongod -dbpath / data/dba' 抛出锁定错误并退出。由于服务使用指向 /data/dba 的 /etc/mongod.conf 开头,它们是否都引用相同的东西?我开始认为我的 cp 进程完全失败了,我的数据在服务器上很糟糕。如果在我推送 mongodump 之前没有出现任何其他情况,我至少会知道我遵循了更正式的程序开始!
    【解决方案2】:

    数据库有一个非常挑剔的算法,很容易损坏。在从一个数据库复制到另一个数据库之前,您可能应该为数据库播种,一些虚拟条目会告诉您数据库正在工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-21
      • 1970-01-01
      • 1970-01-01
      • 2019-11-30
      • 2021-11-08
      • 2018-10-27
      • 1970-01-01
      • 2013-09-25
      相关资源
      最近更新 更多