Установка SphinxSE на Percona Server

от автора

Ни Sphinx, ни Percona Server в особом представлении не нуждаются. SphinxSE — не основной, но в некотором роде более удобный интерфейс доступа к Sphinx searchd, оформленный в виде storage engine плагина MySQL.

В документации сфинкса описан процесс установки SphinxSE, но он не работает. Под катом короткая инструкция по связке перконы со сфинксом, которая сработала у меня и, возможно, сбережет кому-нибудь несколько часов здорового сна.

Итак, имеем Percona Server 5.5.28 и Sphinx 2.0.6, установленные из пакетов. В моем случае это RPM на CentOS 6.

Если сфинкс не устанавливается, требуя libmysqlclient.so.x

А в системе есть только более свежая версия библиотеки, просто поставьте пакет Percona-Server-shared-compat

Для сборки плагина нам нужны исходники обоих пакетов. Качаем и распаковываем:

[user@host ~]$ wget http://sphinxsearch.com/files/sphinx-2.0.6-release.tar.gz [user@host ~]$ tar -xzf sphinx-2.0.6-release.tar.gz [user@host ~]$ wget http://www.percona.com/redir/downloads/Percona-Server-5.5/Percona-Server-5.5.28-29.1/source/Percona-Server-55-5.5.28-rel29.1.334.rhel6.src.rpm [user@host ~]$ rpm -i Percona-Server-55-5.5.28-rel29.1.334.rhel6.src.rpm [user@host ~]$ cd rpmbuild/ [user@host rpmbuild]$ rpmbuild -bp SPECS/percona-server.spec 

Выполняем первые два шага из официальной документации, они общие для обоих методов:

[user@host rpmbuild]$ cd BUILD/Percona-Server-5.5.28-rel29.1/Percona-Server-5.5.28-rel29.1/ [user@host Percona-Server-5.5.28-rel29.1]$ cp -R ~/sphinx-2.0.6-release/mysqlse storage/sphinx [user@host Percona-Server-5.5.28-rel29.1]$ sh BUILD/autorun.sh 

Метод 1 — официальный

Нам предлагают собрать и установить MySQL полностью. Понятное дело, это нам не подходит. Пытаемся собрать только плагин:

[user@host Percona-Server-5.5.28-rel29.1]$ ./configure [user@host Percona-Server-5.5.28-rel29.1]$ cd storage/sphinx/ [user@host sphinx]$ make 

Собрался .so, копируем его в директорию с плагинами MySQL (замените путь на ваш):

[root@host sphinx]# cp ha_sphinx.so /usr/lib64/mysql/plugin/ 

Теперь лезем в mysql устанавливать плагин:

[user@host sphinx]$ mysql -uroot -p mysql> INSTALL PLUGIN sphinx SONAME 'ha_sphinx.so'; mysql> SHOW ENGINES; 

Видим SPHINX в списке движков — вроде бы все хорошо. Создаем поисковую таблицу:

CREATE TABLE sphinx (     id BIGINT UNSIGNED NOT NULL,     weight INTEGER NOT NULL,     query VARCHAR(3072) NOT NULL,     INDEX(query) ) ENGINE=SPHINX CONNECTION="sphinx://127.0.0.1:9312/*"; 
Примечание

В документации вместо BIGINT и 127.0.0.1 указаны соответственно INTEGER и localhost, но с ними таблица не создается и хост не резолвится.

И вываливаемся в segfault. СУБД падает при любом обращении к этой таблице и даже просто при запросе show tables.

Метод 2 — рабочий

Из гугла узнаем о волшебном ключе -DBUILD_CONFIG=mysql_release для cmake.

[user@host Percona-Server-5.5.28-rel29.1]$ rm -f CMakeCache.txt [user@host Percona-Server-5.5.28-rel29.1]$ cmake . -DBUILD_CONFIG=mysql_release [user@host Percona-Server-5.5.28-rel29.1]$ cd storage/sphinx/ && make 
Скрытый текст

В том посте еще много страшных опций, но они нужны только для полной сборки MySQL.

Вместо ручной очиски кэша и запуска cmake можно отредактировать cmake/configure.pl

-my $cmakeargs = ""; +my $cmakeargs = "-DBUILD_CONFIG=mysql_release"; 

и запустить configure.

Копируем ha_sphinx.so в /usr/lib64/mysql/plugin/ и перезапускаем перкону. Как ни странно, работает.

ссылка на оригинал статьи http://habrahabr.ru/post/161461/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *