- PVSM.RU - https://www.pvsm.ru -
Ни Sphinx [1], ни Percona Server [2] в особом представлении не нуждаются. SphinxSE — не основной, но в некотором роде более удобный интерфейс доступа к Sphinx searchd, оформленный в виде storage engine плагина MySQL.
В документации сфинкса описан процесс установки SphinxSE, но он не работает. Под катом короткая инструкция по связке перконы со сфинксом, которая сработала у меня и, возможно, сбережет кому-нибудь несколько часов здорового сна.
Итак, имеем Percona Server 5.5.28 и Sphinx 2.0.6, установленные из пакетов. В моем случае это RPM на CentOS 6.
Для сборки плагина нам нужны исходники обоих пакетов. Качаем и распаковываем:
[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
Выполняем первые два шага из официальной документации [3], они общие для обоих методов:
[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
Нам предлагают собрать и установить 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/*";
И вываливаемся в segfault. СУБД падает при любом обращении к этой таблице и даже просто при запросе show tables.
Из гугла [4] узнаем о волшебном ключе -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
Вместо ручной очиски кэша и запуска cmake можно отредактировать cmake/configure.pl
-my $cmakeargs = "";
+my $cmakeargs = "-DBUILD_CONFIG=mysql_release";
и запустить configure.
Копируем ha_sphinx.so в /usr/lib64/mysql/plugin/ и перезапускаем перкону. Как ни странно, работает.
Автор: rakeev
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/sphinx/21897
Ссылки в тексте:
[1] Sphinx: http://habrahabr.ru/search/?q=%5Bsphinx%5D&target_type=posts
[2] Percona Server: http://habrahabr.ru/search/?q=%5Bpercona%5D&target_type=posts
[3] официальной документации: http://sphinxsearch.com/docs/current.html#sphinxse-mysql51
[4] Из гугла: http://sphinxsearch.com/forum/view.html?id=10017
[5] Источник: http://habrahabr.ru/post/161461/
Нажмите здесь для печати.