当前位置: 首页 > 面试题库 >

删除mongodb的日志文件是否安全?

黄和怡
2023-03-14
问题内容

如果删除3.1G日记文件,sudo service mongodb restart将失败。但是,此文件占用太多空间。我怎么解决这个问题?如何删除?

bash$ du -sh /var/lib/mongodb/*
4.0K    _tmp
65M auction_development.0
128M    auction_development.1
17M auction_development.ns
3.1G    journal
4.0K    mongod.lock

问题答案:

TL;
DR:您有两个选择。--smallfiles启动MongoDB时,请使用启动选项将日记文件的大小限制为128MB,或使用该--nojournal选项关闭日记功能。--nojournal在生产中使用通常是个坏主意,在开发中也使用不同的写关注点通常很有意义,因此您在开发和生产中没有不同的代码。

长答案 :不,删除日志文件是不安全的。日记的想法是这样的:

进入写入操作。现在,要使该写入操作具有持久性(并使数据库具有持久性),则必须以某种方式将写入操作转到磁盘。

不幸的是,与对RAM的写入相比,对磁盘的写入要困难得多,因此数据库处于两难境地:不写入磁盘是有风险的,因为意外关闭会导致数据丢失。但是,每执行一次写入操作就将磁盘写入磁盘会严重降低数据库的性能,以致无法用于实际目的。

现在,数据库将不再追加写入数据文件本身,也不是针对每个请求执行写入操作,而是将追加到日记文件中,该日志文件将存储尚未提交给实际数据文件的所有操作。这要快得多,因为文件一直被读写,因此它已经很“热”了,它只是一个文件,而不是一堆文件,最后,因为它每隔100ms批量写入所有待处理的操作默认。在某些情况下删除此文件会造成严重破坏。



 类似资料:
  • 我使用下面的log4j2。xml 我想要的是旧的日志文件被删除,如果累积的大小超过。但是log4j2首先删除最近修改的文件。https://logging.apache.org/log4j/2.x/manual/appenders.html说有一个路径排序参数可以做到这一点。有人能告诉我如何指定相反的将逻辑排序为默认值?

  • 我在SpringBoot中使用logback,但无法删除旧的日志文件。 我在logback-spring.xml文件中定义了以下appender: 即使我设置了“MaxHistory”和“CleanHistoryonStart”,超过10天的日志文件也不会被删除。既不是翻转也不是启动。

  • 我使用在文件中配置的logback来管理应用程序的日志。我想: 创建日志文件,这些日志文件在应用程序启动时贴上时间戳,并在应用程序的生命周期内作为单个日志文件保留。(我们可能同时运行一个应用程序的多个实例,或者在一天内运行多个实例,它们可能会运行几天。) 保持干净的日志文件目录,以便删除超过给定期间的日志。 实现第二个建议使用和,如下所示--这将日志文件保存7天。但是,这将使用一个文件来记录给定日

  • 我用的是log4j2.14。1. 我想做的是有一个appender,它允许我每天有一个日志文件,但在N天后删除旧的日志(例如,我希望最多有10天的日志)。 我尝试过使用DirectWriteRolloverStrategy,它看起来不错,每天创建一个日志文件,但显然无法删除旧文件,因此我的日志目录中充满了日志;maxFiles属性似乎只设置了与文件模式匹配的时间段内允许的最大文件数(请参见http

  • 问题内容: 我正在尝试将 log4j 配置为仅保留指定数量的备份文件或保留不超过一定年龄的文件。最终,我希望有 时间(每天)基于触发策略, 并保留30个备份文件或删除早于30天的文件。 经过一些研究后,我了解到在使用 时间策略 时无法指定备份文件的最大数量,但是遇到了这个问题https://issues.apache.org/jira/browse/LOG4J2-435和此文档片段http: //

  • 我在db_config中的设置: 但是日志文件仍然存在-即使我将检查点设置降低到。如果我在data目录中运行,那么除了最后一个文件之外,所有这些文件都将被删除。 有人知道如何让自动移除工作吗?我几乎放弃了,并添加了一个cron作业,以便在迁移期间运行。但我不确定这是否会引起问题。 我们在CentOS上使用带有BDB后端(准确地说是HDB)的OpenLDAP2.3.43。