【问题标题】:docker, mongorestore - ERROR: root directory must be a dump of a single databasedocker,mongorestore - 错误:根目录必须是单个数据库的转储
【发布时间】:2015-12-18 16:07:58
【问题描述】:

我必须在我的本地机器上更新一个集合并想把它上传到一个 docker 实例,这是我的程序

$ #backup local database
$ mongodump --collection styles --db ccc-mongo
$ tar -zcvf dump.tar.gz dump

$ scp dump.tar.gz me@remote:/home/me
$ ssh me@remote
me@remote: ~ $ docker exec -i mongo-dev sh -c "cd /tmp && tar xzf - && mongorestore --collection styles --db ccc-mongo" < dump.tar.gz

这给了我一个错误

connected to: 127.0.0.1
Fri Dec 18 16:05:26.768 ERROR: ERROR: root directory must be a dump of a single database
Fri Dec 18 16:05:26.768 ERROR:        when specifying a db name with --db
Import BSON files into MongoDB.

我只需要恢复一个集合而不删除其他数据,非常感谢任何建议

【问题讨论】:

    标签: mongodb docker


    【解决方案1】:

    这对我有用

    docker exec -i mongo-dev sh -c "cd /tmp && tar xzf - && mongorestore --db ccc-mongo --drop dump/ccc-mongo  && rm -Rf dump"  < dump.tar.gz
    

    需要确保在转储中只包含我只想恢复的集合

    【讨论】:

      【解决方案2】:

      我想出了办法

      注意:请简要解释您的问题。问题不清楚,请指定您想将数据转储到哪里 - 进入服务器数据库或运行 ubuntu 的计算机。如果从本地数据库进入服务器,请按照以下步骤操作:-

      这里是说明

      将转储文件夹复制到服务器

      scp -r /local_path/to/dump_folder root@111.222.33.4:/remote/path
      

      SSH 进入服务器

      ssh root@111.222.33.4
      

      从服务器根目录复制到 docker 容器内

      docker cp dump_folder mongodb:/dump_folder
      

      进入 mongodb docker 容器

      docker exec -it mongodb bash
      

      检查复制的文件夹是否存在 ls(您应该看到 dump_folder,如果您将其命名为与本示例中相同的文件夹)

      使用 mongorestore

      mongorestore --drop -d AppName dump_folder
      

      【讨论】:

      • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
      • 好的,当然@NicolaBen 我很感激你的建议。我会再发一次。谢谢。
      猜你喜欢
      • 1970-01-01
      • 2015-10-07
      • 2020-06-17
      • 1970-01-01
      • 1970-01-01
      • 2015-02-08
      • 1970-01-01
      • 2015-02-26
      • 1970-01-01
      相关资源
      最近更新 更多