运行两个searchd实例的问题

Pat*_*and 3 sphinx ubuntu-10.04

我刚刚将我们的Sphinx服务器从1.10-beta更新到2.0.6版本,现在我遇到了一些问题searchd.以前我们可以searchd通过指定两个不同的配置文件来运行两个彼此相邻的实例,即:

searchd --config /etc/sphinx/sphinx.conf
searchd --config /etc/sphinx/sphinx.staging.conf
Run Code Online (Sandbox Code Playgroud)

sphinx.conf监听9306:mysql41,并且9312,当sphinx.staging.conf侦听9307:mysql41和时9313.

然而,在我们更新到2.0.6之后,永远不会启动第二个实例.或者更确切地说..输出使它看起来像它启动,并创建了一个pid文件等.但由于某种原因,只有第一个searchd实例继续运行,第二个似乎立即关闭.因此,当尝试运行searchd --config /etc/sphinx/sphinx.conf两次(如果这是第一个开始)抱怨pid文件正在使用,尝试运行searchd --config /etc/sphinx/sphinx.staging.conf(如果这是第二个启动的实例)"一次又一次"启动守护进程,只有没有新的进程已创建..请注意,如果我在第一次创建进程时切换这些命令,那么sphinx.conf实例并未真正启动.

我已检查并重新检查,这些端口仅用于searchd.

有谁知道我能做什么/下一步尝试?我在ubuntu 10.04 LTS上从源代码安装了它:

./configure --prefix /etc/sphinx --with-mysql --enable-id64 --with-libstemmer
make -j4 install
Run Code Online (Sandbox Code Playgroud)

Pat*_*and 5

自我注意:检查日志!

RT-indices使用二进制日志来启用崩溃恢复.由于我的旧配置文件没有指定存储这些文件的路径,因此两个实例都searchd尝试写入相同的二进制日志.最后启动的实例当然不允许操作这些文件,因此会出现致命错误:

[Fri Nov  2 17:13:32.262 2012] [ 5346] FATAL: failed to lock
    '/etc/sphinx/var/data/binlog.lock': 11 'Resource temporarily unavailable'
[Fri Nov  2 17:13:32.264 2012] [ 5345] Child process 5346 has been finished, 
    exit code 1. Watchdog finishes also. Good bye!
Run Code Online (Sandbox Code Playgroud)

解决方案很简单,确保binlog_pathsearchd每个配置文件的配置部分内指定:

searchd
{
[...]
   binlog_path = /path/to/writable/directory
[...]
}
Run Code Online (Sandbox Code Playgroud)