【问题标题】:SOLR - old Transactions-Logs (tlogs) never deletedSOLR - 旧的事务日志 (tlogs) 从未删除
【发布时间】:2013-07-16 10:50:50
【问题描述】:

首先要提到我搜索了很长时间但得到了 n 个解决方案,所以我没有尝试解决我的具体问题,尽量保持简短:

  • solr-spec 4.0.0.2012.10.06.03.04.33

  • 一主三从

  • 索引中有大约 70.000 个文档

  • master 被触发以完全导入/生成完整的新索引 ~ 每天一次

  • 触发器的命令行选项有: ?command=full-import&verbose=false&clean=false&commit=true&optimize=true

  • slave 为新索引触发 master,如果 GEN 增加(如上所述的完全导入 + 硬提交),它们会拉取新索引

  • 没有设置 autoCommit/autoSoftCommit

问题在于,每次硬提交索引(~670MB)每天一次写入磁盘,但旧的永远不会被删除。 据我所知,solr 保留了足够多的 tlog,以便能够恢复对文档的最后 100 次更改,对吗?

在我的设置中,我确信每天至少有 100 个文档(或源数据库中的数据集)被更改,所以我不明白为什么 solr 从不删除旧的 tlog。

如果有人能指出正确的方向,我会很高兴,目前我不知道下一步该尝试什么。我也没有找到像这样的设置描述有这样的问题。

谢谢 ;)

【问题讨论】:

    标签: solr indexing transaction-log


    【解决方案1】:

    首先,您可能需要更新 Solr 版本,因为自 4.0 以来修复了一些事务日志引用泄漏。

    硬提交通常应该删除旧的事务日志,因为文档无论如何都会写入到索引中的磁盘 iirc,这可能表明您正在被一些旧的引用所困扰。

    另一种选择是完全关闭事务日志,因为您每次运行时只会生成一个全新的索引并分发该索引。

    【讨论】:

    • 嗨,谢谢你的快速回复,是的,我已经考虑过升级版本,也许我从这个开始检查 tlogs 是否按预期旋转。你甚至建议关闭硬提交?好吧,据我了解,它仅在主人崩溃的情况下用作“备份”,对吗?但只要我只进行硬提交并且只将完整索引复制到从属服务器,我就不需要 tlog 来保持从属服务器同步,对吧?
    • 对,关闭 tlogs,而不是硬提交。无论如何,tlog 不会有太大用处,因为无论如何您都很难提交和复制完整的新索引。
    • 我从一位同事那里听说,如果我的主服务器挂起并且我需要终止进程,导致主索引损坏,则 tlog 可能对恢复很重要。那个怎么样?我本人对此持怀疑态度,并且不认为在这种情况下,tlogs 无论如何都可以提供帮助,你怎么看?
    • 我相当肯定你不会得到一个损坏的索引(至少我们从来没有遇到过这种情况),如果它损坏了,事务日志无论如何也无法保存你(什么它应该更新吗?)。事务日志主要用于近实时搜索、在 SolrCloud 中分发操作等。如果您的主索引由于其他原因而损坏,您最好启动一个新索引。事务日志计数也与提交次数有关,而不是与 iirc 文档更新次数有关。
    • 如果它的提交次数......我可以每隔几分钟激活一次 AutoSoftCommit,对吗?即使没有对数据进行实际更改,只要与此“100”相关,这将“算作”一次提交,对吧?
    猜你喜欢
    • 2017-09-28
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    • 2021-10-14
    • 2020-04-03
    • 1970-01-01
    相关资源
    最近更新 更多