Sphinx作为MySQL存储引擎(SphinxSE)

Sphinx作为MySQL存储引擎(SphinxSE) SphinX是MySQL的一个伟大的全文搜索引擎。安装 Sphinx守护进程很简单...

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插件条目。 升级后可能会收到此错误。