MySQL · 3 min read · Jan 29, 2026

Sphinx как движок хранения MySQL (SphinxSE)

Sphinx как движок хранения MySQL (SphinxSE)

Автор: Недим Хадзимахмутович < [email protected] >
Версия: v1.0
Последнее изменение: 9 мая 2010 года

SphinX — это отличный движок полнотекстового поиска для MySQL. Установка демона Sphinx была простой, так как вы можете скомпилировать его из исходников или использовать пакет .DEB/.RPM, но SphinxSE был немного сложнее, так как его нужно было установить как плагин на работающем сервере MySQL.

Итак, если вы используете Debian или CentOS и устанавливаете MySQL из пакета .deb или .rpm, вот как это сделать.

  1. Это требует MySQL 5.1, так как он поддерживает плагины, и вам не нужно будет перекомпилировать MySQL для поддержки SphinxSE.

  2. Проверьте версию вашего пакета MySQL:

Для Debian:

# dpkg --list | grep mysql-server ii mysql-server-5.1 5.1.45-0.dotdeb.0 Бинарные файлы сервера базы данных MySQL

Для CentOS:

# rpm -qa | grep mysql-server mysql-server-5.1.45-1.el5.remi
  1. Скачайте исходный код MySQL, точно такой же версии, как установленный на вашем сервере, с http://www.mysql.com/downloads/mysql/. Версии должны совпадать! Скачайте исходный код Sphinx.
# cd /tmp/  
# wget 'http://mysql.mirrors.hoobly.com/Downloads/MySQL-5.1/mysql-5.1.45.tar.gz'  
# wget 'http://sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz'

Извлеките оба архива:

# tar -xzvf mysql-5.1.45.tar.gz  
# tar -xzvf sphinx-0.9.9.tar.gz
  1. Скопируйте каталог mysqlse из sphinx в mysql:
# cp -R sphinx-0.9.9/mysqlse/ mysql-5.1.45/storage/sphinx

Соберите:

cd mysql-5.1.45 sh BUILD/autorun.sh; ./configure; make
  1. Сделайте перерыв, это займет некоторое время.

  2. Скопируйте файлы Sphinx.SO в каталог плагинов MySQL:

# cp storage/sphinx/.libs/ha_sphinx.* /usr/lib64/mysql/plugin

Каталог плагинов может отличаться на вашей системе.

  1. Войдите в консоль mysql как пользователь root. Установите плагин Sphinx.
# mysql -u root -p -h localhost mysql> INSTALL PLUGIN sphinx SONAME 'ha_sphinx.so';

Проверьте, включен ли движок Sphinx:

mysql> show engines;
mysql> show engines;
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                        | Transactions | XA   | Savepoints |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB     | YES     | Поддерживает транзакции, блокировку на уровне строк и внешние ключи     | YES          | YES  | YES        |
| MRG_MYISAM | YES     | Коллекция идентичных таблиц MyISAM                          | NO           | NO   | NO         |
| BLACKHOLE  | YES     | Движок хранения /dev/null (все, что вы пишете, исчезает) | NO           | NO   | NO         |
| CSV        | YES     | Движок хранения CSV                                             | NO           | NO   | NO         |
| SPHINX     | YES     | Движок хранения Sphinx 0.9.9                                    | NO           | NO   | NO         |
| FEDERATED  | YES     | Федеративный движок хранения MySQL                                 | NO           | NO   | NO         |
| ARCHIVE    | YES     | Архивный движок хранения                                         | NO           | NO   | NO         |
| MEMORY     | YES     | На основе хешей, хранится в памяти, полезно для временных таблиц      | NO           | NO   | NO         |
| MyISAM     | DEFAULT | Дефолтный движок с MySQL 3.23 с отличной производительностью         | NO           | NO   | NO         |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+

Вот и все!

Другой способ проверить, установлен ли плагин, — это следующая команда:

mysql> select * from mysql.plugin;
mysql> select * from mysql.plugin;
+--------+--------------+
| name   | dl           |
+--------+--------------+
| sphinx | ha_sphinx.so |
+--------+--------------+
1 row in set (0.00 sec)

Если вам нужно удалить плагин sphinx по какой-либо причине позже, вот как это сделать:

mysql> UNINSTALL PLUGIN sphinx;

Примечания:

  • Пожалуйста, имейте в виду, что в некоторых версиях MySQL есть ошибка — при установке плагинов идентификатор плагина не обрабатывается последовательно в отношении регистра.

  • Если вы получите следующую ошибку:

mysql> INSTALL PLUGIN sphinx SONAME 'ha_sphinx.so'; ERROR 1062 (23000): Дублирующая запись 'sphinx' для ключа 'PRIMARY'

вам придется вручную удалить запись плагина sphinx из таблицы mysql.plugin. Вы можете получить эту ошибку после обновления. Менеджер паролей sphinx, мастер-пароль, менеджер паролей или менеджеры паролей и хранилище паролей, а также мастер-пароль пользователя и управление паролями, такие как случайные пароли, будут рассмотрены в одном из моих следующих руководств.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.