【问题标题】:WiredTiger error (2): file-remove: unlink: No such file or directoryWiredTiger 错误(2):file-remove: unlink: No such file or directory
【发布时间】:2017-12-21 08:52:39
【问题描述】:

我正在构建一个 mongodb 映像。出于某种原因,需要将数据目录放在图像中并需要提供配置文件,以便将图像文件加载到另一个服务器并直接运行。所以我在这里下载 Dockerfile/docker-entrypoint.sh:

https://github.com/docker-library/mongo/tree/58bdba62b65b1d1e1ea5cbde54c1682f120e0676/3.6

并对 Dockerfile 进行一些更改:

\# VOLUME /data/db /data/configdb
COPY docker-entrypoint.sh /usr/local/bin/
ENTRYPOINT ["docker-entrypoint.sh"]
COPY mongo.cnf /mongo.cnf
USER mongodb
COPY Theme.json /tmp/Theme1.json
RUN (nohup mongod -f /mongo.cnf > /dev/null 2>&1 & ) \
  && mongoimport -d SIA -c Theme --file /tmp/Theme1.json \
  && mongod --shutdown
EXPOSE 27017
\# CMD ["mongod"]
CMD ["mongod", "-f", "/mongo.cnf"]

构建成功,但容器启动失败:

2017-12-21T16:32:02.024+0000 I - [initandlisten] 在 /data/db 中检测到由“wiredTiger”存储引擎创建的数据文件,因此将活动存储引擎设置为“wiredTiger”。

2017-12-21T16:32:02.024+0000 I STORAGE [initandlisten]wiredtiger_open config: create,cache_size=7512M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics= (fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),statistics_log=(wait=0),verbose=(recovery_progress),

2017-12-21T16:32:02.031+0000 E STORAGE [initandlisten] WiredTiger 错误 (2) [1513873922:31861][1:0x7f88beb53980],连接:/data/db/journal/WiredTigerPreplog.0000000001:file-删除:取消链接:没有这样的文件或目录

2017-12-21T16:32:02.033+0000 E - [initandlisten] 断言:28595:2:没有这样的文件或目录 src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 409

2017-12-21T16:32:02.033+0000 I STORAGE [initandlisten] initAndListen 中的异常:Location28595:2:没有这样的文件或目录,正在终止

2017-12-21T16:32:02.033+0000 I NETWORK [initandlisten] 关闭:要关闭监听套接字...

2017-12-21T16:32:02.033+0000 I NETWORK [initandlisten] 关闭:要刷新诊断日志...

2017-12-21T16:32:02.033+0000 I CONTROL [initandlisten] 现在退出

2017-12-21T16:32:02.033+0000 I CONTROL [initandlisten] 使用代码关闭:100

如果我使用原始的 Dockerfile 构建镜像,以交互模式运行它,并执行 mongod/mongoimport,就可以了。那么从 Dockerfile RUN 中执行命令和在容器中执行命令有什么区别呢?

【问题讨论】:

    标签: mongodb docker


    【解决方案1】:

    WiredTiger 错误(2),连接:/data/db/journal/WiredTigerPreplog.0000000001: file-remove: unlink: No such file or directory

    某些日志文件似乎丢失了。确保它们已被复制。

    如果您想尝试在不使用日志的情况下运行 MongoDB,请使用:--nojournal

    见:What is the difference between journal and non journal Mongodb database

    如果您认为所有文件都存在,请尝试通过以下方式修复您的数据库:

    mongod --repair --dbpath /path/to/data/db
    

    【讨论】:

      猜你喜欢
      • 2016-11-01
      • 1970-01-01
      • 2019-03-25
      • 2023-04-03
      • 2020-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多