Sử dụng Sphinx như MySQL Storage Engine (SphinxSE)

Quản Trị Mạng - SphinX là 1 trong những cỗ máy tìm kiếm dữ liệu dạng text mạnh mẽ nhất đối với MySQL. Việc cài đặt Sphinx daemon khá đơn giản như khi bạn tiến hành biên dịch từ bộ mã nguồn sử dụng gói .DEB/.RPM, nhưng việc sử dụng SphinxSE đã phức tạp hơn 1 chút kể từ khi cài đặt và trở thành 1 phần plugin trên hệ thống MySQL server.

Vì vậy nếu bạn đang quản lý hệ thống Debian hoặc Centos, việc cài đặt MySQL từ gói .deb hoặc .rpm sẽ như sau:

Yêu cầu tối thiểu là MySQL 5.1 trở lên để hỗ trợ tốt hơn cho SphinxSE.

Kiểm tra phiên bản của MySQL đang sử dụng:

với Debian:

# dpkg --list | grep mysql-server ii mysql-server-5.1 5.1.45-0.dotdeb.0 MySQL database server binaries

với CentOS:

# rpm -qa | grep mysql-server mysql-server-5.1.45-1.el5.remi

Tải mã nguồn MySQL, cùng phiên bản với ứng dụng trên hệ thống tại đây. Đồng thời tiến hành tải bộ mã nguồn của 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'

Giải nén:

# tar -xzvf mysql-5.1.45.tar.gz
# tar -xzvf sphinx-0.9.9.tar.gz

Copy thư mục mysqlse từ sphinx tới mysql:

# cp -R sphinx-0.9.9/mysqlse/ mysql-5.1.45/storage/sphinx

Gõ lệnh sau:

cd mysql-5.1.45 sh BUILD/autorun.sh; ./configure; make

Quá trình này sẽ mất khoảng 10 – 20 phút để hoàn thành. Tiếp theo, copy những file .SO của Sphinx tới thư mục plugin của MySQL:

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

Lưu ý rằng đối với từng hệ thống mà những đường dẫn này sẽ khác nhau.

Đăng nhập vào bảng điều khiển mysql bằng tài khoản root và cài đặt Sphinx plugin:

# mysql -u root -p -h localhost mysql> INSTALL PLUGIN sphinx SONAME 'ha_sphinx.so';

Kiểm tra lại xem cơ chế Sphinx engine đã được kích hoạt hay chưa:

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 |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+

Bên cạnh đó, còn có cách khác để kiểm tra với câu lệnh sau:

mysql> select * from mysql.plugin;

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

Nếu muốn gỡ bỏ plugin sphinx thì dùng lệnh sau:

mysql> UNINSTALL PLUGIN sphinx;

Nếu gặp lỗi sau:

mysql> INSTALL PLUGIN sphinx SONAME 'ha_sphinx.so'; ERROR 1062 (23000): Duplicate entry 'sphinx' for key 'PRIMARY'

thì bạn cần xóa từng thành phần sphinx plugin theo cách thủ công trong bảng mysql.plugin.

Thứ Bảy, 03/07/2010 08:52
31 👨 2.686