0

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
4

1 回答 1

1

兼容的。

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

但是,在我们的主干中更改了 binlog 的版本(这是 2.1-dev 分支,而不是 2.0.X!)在主干中,我们可以自由地升级版本,因为我们添加了新功能并开发了 sphinx。由于svn rev。编号对于两个分支都是一个,在使用从 svn 构建的 sphinx 时,保留必要的分支很重要。例如,svn rev 3308 在 rel20 分支中并且是 2.0.5-release,但是 svn rev 3189 在主干分支中并且是当前的 2.1.X-dev。这里的数字越多(3308 对 3189)决不是说越高的数字指向更“新鲜”的版本。顺便说一下,它们不能混淆,因为它们被放置在 svn repo 的不同分支(=文件夹)中。

实际上,您似乎使用了“主干”版本(2.1.X-dev),然后升级到 2.0.5(实际上它是 donwgrade,而不是升级)。而且,结果是 - 旧版本的 sphinx 无法加载新版本的索引。

所以,问题根本不在狮身人面像上。

如果数据很重要,如果降级到 2.0.5 分支也很重要,可能需要正确关闭 sphinx(这样 binlog 将不包含数据,因为它的目的是保持崩溃),然后擦除输出所有二进制日志文件,包括“元”。重新启动后,sphinx 将使用当前版本重新创建文件。但是 - 它需要通过备份执行 - 因为除了元版本更改之外,它还可能是索引格式的另一个更改(如果是这样,旧版本无论如何都不会加载更新的索引)。

顺便说一句,留在 2.1-dev 中是可以的,因为 stable 2.0.X 分支的全部内容会定期合并到主干中,因此主干中的所有错误也会得到修复。

于 2012-08-08T03:17:39.453 回答