Sphinx搜索binlog格式是不向后兼容的?

时间:2012-08-05 12:14:18

标签: sphinx

Sphinx团队的问题:为什么新的2.0.5版本的binlog格式与以前的2.0.4版本不兼容?

如何迁移到新版本?

看看我安装2.0.5之后得到了什么:

WARNING: index 'index_9127': preload: /var/db/sphinxsearch/idx/index_9127.meta is v.6, binary is v.5; NOT SERVING

1 个答案:

答案 0 :(得分:1)

IS 兼容。

我调查了我们的来源,发现没有版本更改 介于2.0.4和2.0.5之间(实际上必须如此)。

然而,在我们的主干中更改了binlog的版本(即 2.1-dev分支,不是2.0.X!)在后备箱中,我们可以自由地推出版本 因为我们添加了新功能并开发了狮身人面像。自从svn 转。编号是两个分支的编号,重要的是持有 使用svn构建的sphinx时必要的分支。例如,svn rev 3308在rel20分支中,并且是2.0.5版本,但是svn rev 3189位于主干分支中,当前为2.1.X-dev。在这里越多 数字(3308对3189)绝不表示较高的一个指向 更“新鲜”的版本。顺便说一下,他们不能混淆,因为他们是 放在svn repo。

中的不同分支(=文件夹)中

实际上你似乎使用'trunk'版本(2.1.X-dev),然后 升级到2.0.5(实际上它是donwgrade,而不是升级)。和, 结果是什么 - 旧版的狮身人面像无法加载新鲜的 索引的版本。

所以,问题在于狮身人面像中的 NOT

如果数据很重要,并且如果降级到2.0.5分支也是如此 重要的是,它可能会正确关闭狮身人面像(这种方式 binlog不包含数据,因为它的目的是保持崩溃), 然后清除所有binlog文件,包括'meta'。重启后, sphinx将使用当前版本重新创建文件。 但是 - 它需要与备份一起执行 - 因为除了meta之外 版本更改它可能也是索引格式的另一个变化(和 如果是这样,旧版本无论如何都不会加载更新的索引。)

顺便说一句BTW可以留在2.1-dev,因为整个内容稳定在2.0.X branch会定期合并到trunk中,所以那里的所有bug都会出现 也固定在行李箱里。