Sphinx作为MySQL存储引擎(SphinxSE)
作者Nedim Hadzimahmutovic <h.nedim@gmail.com>
版本:v1.0
最后变动:2010年5月9日
SphinX是MySQL的一个很棒的全文搜索引擎。 安装Sphinx守护程序很简单,因为您可以从源代码编译或使用.DEB / .RPM包,但是SphinxSE有点棘手,因为它需要作为一个插件安装在正在运行的MySQL服务器上。
所以如果你使用Debian或Centos并从.deb或.rpm包安装你的MySQL,这是你如何做的。
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 database server binaries
对于CentOS:
# rpm -qa | grep mysql-server mysql-server-5.1.45-1.el5.remi
3.从http://www.mysql.com/downloads/mysql/下载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
4.将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
休息一下,这将需要一段时间。
6.将Sphinx .SO
文件复制到MySQL插件目录中:
# cp storage/sphinx/.libs/ha_sphinx.* /usr/lib64/mysql/plugin
您的系统上的插件目录可能不同。
7.以root用户登录到mysql控制台。 安装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 | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO | | SPHINX | YES | Sphinx storage engine 0.9.9 | NO | NO | NO | | FEDERATED | YES | Federated MySQL storage engine | NO | NO | NO | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance | 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): Duplicate entry 'sphinx' for key 'PRIMARY'
您必须手动从mysql.plugin
表中删除sphinx插件条目。 升级后可能会收到此错误。