Установка SphinxSE плагином под Percona
Все команды вводятся через ssh подключение. Полный список для удобства.
* gpg --keyserver hkp://keys.gnupg.net --recv-keys 9334A25F8507EFA5 * gpg -a --export 9334A25F8507EFA5 | apt-key add - * nano /etc/apt/sources.list deb http://repo.percona.com/apt lenny main deb-src http://repo.percona.com/apt lenny main ctrl+x+y+enter * sudo apt-get update * sudo apt-get install percona-server-server-5.5 * sudo apt-get install libmysqlclient-dev * sudo apt-get install libreadline-dev * sudo apt install systemtap-sdt-dev * sudo apt-get install build-essential cmake libncurses5-dev libaio-dev bison * sudo apt-get source percona-server-server-5.5 * tar xfz percona-server-5.5_5.5.61-38.13.orig.tar.gz * wget http://sphinxsearch.com/files/sphinx-... * tar -xzf sphinx-2.0.6-release.tar.gz * mkdir ./percona-server-5.5.61-38.13/storage/sphinx * cp ./sphinx-2.0.6-release/mysqlse/* ./percona-server-5.5.61-38.13/storage/sphinx/ * cd percona-server-5.5.61-38.13/ * rm -f CMakeCache.txt * cmake . -DBUILD_CONFIG=mysql_release * cd storage/sphinx/ && make * cp ha_sphinx.so /usr/lib/mysql/plugin * mysql -u root -p * INSTALL PLUGIN sphinx SONAME 'ha_sphinx.so'; * show engines;
Percona Server & SphinxSE — обеспечивает высокую производительность индексации и поиска, позволяя делать запросы с помощью SphinxQL, языка на основе Structured Query Language (SQL). Наконец, Sphinx хорошо масштабируется, позволяя работать с миллиардами документов, охватывающих терабайты данных с возможностью распределенного поиска.
Описание компонентов
Sphinx (англ. SQL Phrase Index) — система полнотекстового поиска, разработанная Андреем Аксёновым и распространяемая по лицензии GNU GPL. Отличительной особенностью является высокая скорость индексации и поиска, а также интеграция с существующими СУБД (MySQL, PostgreSQL) и API для распространённых языков веб-программирования (официально поддерживаются PHP, Python, Java; существуют реализованные сообществом API для Perl, Ruby,.NET[1] и C++).
Основные возможности:
- Высокая скорость индексации (до 10-15 МБ/сек на каждое процессорное ядро);
- Высокая скорость поиска (до 150—250 запросов в секунду на каждое процессорное ядро с 1 000 000 документов);
- Высокая масштабируемость (крупнейший известный кластер индексирует до 3 000 000 000 документов и поддерживает более 50 миллионов запросов в день);
- Поддержка распределенного поиска;
- Поддержка нескольких полей полнотекстового поиска в документе (до 32 по умолчанию);
- Поддержка нескольких дополнительных атрибутов для каждого документа (то есть группы, временные метки и т. д.);
- Поддержка стоп-слов;
- Поддержка однобайтовых кодировок и UTF-8;
- Поддержка морфологического поиска — имеются встроенные модули для английского, русского и чешского языков; доступны модули для французского, испанского, португальского, итальянского, румынского, немецкого, голландского, шведского, норвежского, датского, финского, венгерского языков;
- Нативная поддержка PostgreSQL и MySQL;
- Поддержка ODBC совместимых баз данных (MS SQL, Oracle и т. д.).
Percona Server является альтернативой MySQL с обратной совместимостью, которая работает намного быстрее и является более масштабируемой, легче контролируемой и настраиваемой, а также имеет функции, позволяющие сделать оперативные задачи проще. Разработчики ставили задачу поддержки облачных вычислений, доступа NoSQL, и использование всех преимуществ современных аппаратных средств, таких как SSD и флэш-память.
Особенности:
- Масштабируемость: Управление большим числом транзакций; масштабирование на мощных серверах
- Производительность: Percona Server с XtraDB — сверхбыстрый и имеет высокую совместимость
- Надежность: Устойчивость к повреждению, репликации crash-safe
- Управление: Оперативное резервное копирование, онлайн импорт / экспорт таблиц
- Диагностика: Расширенное профилирование и инструментарий
- Гибкость: Percona Server более настраиваемый и легче контролируемый
Порядок установки
Инструкция предназначена для Ubuntu 18.04. Можно скачать образ с официального сайта [1]. Цель: на дистрибутив Ubuntu установить связку Percona Mysql 5.5 и Sphinx 2.0.6, подключить поисковый движок SphinxSE в Mysql. 1. Устанавливаем ключи репозитория Percona:
gpg --keyserver hkp://keys.gnupg.net --recv-keys 9334A25F8507EFA5
gpg -a --export 9334A25F8507EFA5 | apt-key add -
2.Редактируем файл источников:
nano /etc/apt/sources.list-
3.Вставляем ссылки на репозиторий Percona в /etc/apt/sources.list, заменяя bionic на название текущего дистрибутива:
deb http://repo.percona.com/apt bionic main
deb-src http://repo.percona.com/apt bionic main
4.Обновляем APT:
sudo apt-get update
5.Устанавливаем Percona:
sudo apt-get install percona-server-server-5.5
6.Cтавим необходимое окружение для компиляции и сборки:
sudo apt-get install libmysqlclient-dev
sudo apt-get install libreadline-dev
sudo apt-get install build-essential cmake libncurses5-dev libaio-dev bison
sudo apt install systemtap-sdt-dev
7.Выгружаем и разархивируем источники Percona:
sudo apt-get source percona-server-server-5.5
tar xfz percona-server-5.5_5.5.61-38.13.orig.tar.gz
8.Выгружаем и разархивируем источники SphinxSE:
wget http://sphinxsearch.com/files/sphinx-2.0.6-release.tar.gz
tar -xzf sphinx-2.0.6-release.tar.gz
9.Создаём папку для плагина SphinxSE:
mkdir ./percona-server-5.5.61-38.13/storage/sphinx
10.Копируем Sphinx в Percona:
cp ./sphinx-2.0.6-release/mysqlse/* ./percona-server-5.5.61-38.13/storage/sphinx/
11.Переходим в папку Percona:
cd percona-server-5.5.61-38.13/
12. Собираем патч для MYSQL:
rm -f CMakeCache.txt
cmake . -DBUILD_CONFIG=mysql_release
cd storage/sphinx/ && make
13. Копируем {mysql_source_dir}/storage/sphinx/ha_sphinx.so в папку плагинов MySQL (Percona server под Ubuntu по умолчанию ставит плагины в /usr/lib/mysql/plugin, актуальный путь до папки плагинов можно узнать в выводе команды ps ax | grep mysql) и перестраховываемся на случай, если у MySQL нет доступа к плагинам:
cp ha_sphinx.so /usr/lib/mysql/plugin
sudo chown -R mysql:mysql /usr/lib/mysql/plugin
14. Заходим в mysql:
mysql -u root -p
15.Устанавливаем плагин:
INSTALL PLUGIN sphinx SONAME 'ha_sphinx.so';
16.Проверяем конфигурацию:
show engines;
Вывод:
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+ | MyISAM | YES | MyISAM storage engine | NO | NO | NO | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | SPHINX | YES | Sphinx storage engine 2.0.6-release | NO | NO | NO | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | | InnoDB | DEFAULT | Percona-XtraDB, Supports transactions, row-level locking, and foreign keys | YES | YES | YES | | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | +--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+ 10 rows in set (0.00 sec)
17.Выходим из mysql
quit;
18.Скачиваем пакет sphinxsearch
sudo apt-get install sphinxsearch
19.Можно пользоваться возможностями SphinxSE!