Mroonga 설치 삽질기
이번 프로젝트를 기획하면서 Mroonga 에 관심을 갖게 되었다. Percona 서버 부터 mysql 5.5~5.6 , Mariadb 를 다 설치해봤지만
현재까지 나온 Mroonga 3.11 은 mysql 5.6 버전에서 제대로 설치가 되지 않았다.
당연히 뭔짓을 해도 CentOS 6.5 에서 MariaDB 10.0.7 과 Mroonga 가 설치가 안된다.
정확히 말하면 설치는 성공했으나 MariaDb 에 Mroonga 를 플러그인으로 등록 할때마다 오류를 뿜는다. 버전 변경점을 보니 아래와 같은 문구가 있더라.
Supported MariaDB 10.0.7 (it doesn’t released yet.) [#1964]
지원은 된다는데 릴리즈는 아직이다. 뭘까?
아무튼 하루종일 삽질하다, 결국 다시 MariaDB 5.5.34 + Mroonga 3.11 + Handlersocket 으로 넘어왔다.
MariaDB 에 대한 소개는 https://mariadb.org/en/about/
Mroonga 에 대한 소개는 http://mroonga.org/docs/characteristic.html
참고 : http://kakaodbe.blogspot.kr/2013/09/fulltext-search-mroonga.html
MariaDB 와 Mroonga 가 궁금하다면 위에 링크를 참고하자.
| # cat /etc/redhat-release CentOS release 6.5 (Final) |
64bit 이므로 32bit 패키지를 제거하고 yum.conf 에 64bit 패키지만 설치하도록 32bit 패키지는 exclude 한다.
| yum remove \*.i\?86 vi /etc/yum.conf exclude = *.i?86 #add exclude |
앞으로 설치할 패키지들을 위해 기본 패키지 설치
| yum -y install system-config-date subversion gcc gcc-c++ g++ cpp make ncurses-devel automake autoconf tcl-devel rdate rsync pcre-devel gd-devel zlib zlib-devel curl curl-devel libcurl-devel openssl openssl-devel libopenssl-devel libtermcap-devel libc-client-devel bzip2-devel libxml2 libxml2-devel bison bison-devel cmake wget |
ImageMagick 가 필요하다면
| yum -y install ImageMagick* |
준비는 끝났다. MariaDB 5.5.34 를 설치한다.
CentOS 6 에서는 yum 을 이용해서 설치하면 쉽게 끝난다.
https://downloads.mariadb.org/mariadb/repositories/#mirror=kaist&distro=CentOS&distro_release=centos6-amd64&version=5.5
| vi /etc/yum.repos.d/maria.repo # MariaDB 5.5 CentOS repository list - created 2014-01-11 15:08 UTC # http://mariadb.org/mariadb/repositories/ [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/5.5/centos6-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1 |
에 넣고
| yum install MariaDB-server MariaDB-client MariaDB-devel |
을 설치해주자.
설치가 끝났으면 아래 순서대로 실행해서 MariaDB를 기동 및 비밀번호 설정 , 기본 보안을 하자.
| mysql_install_db service mysql start chkconfig mysql on mysql_secure_installation |
다 끝났다면 Mroonga 를 설치할 차례다.
Mroonga 를 설치하기 위해서는 MariaDB 소스가 있어야 한다.
| cd /usr/local/src wget http://ftp.kaist.ac.kr/mariadb/mariadb-5.5.34/kvm-tarbake-jaunty-x86/mariadb-5.5.34.tar.gz tar zxf mariadb-5.5.34.tar.gz cd mariadb-5.5.34 cmake . make |
mariadb 를 cmake & make 하는 이유는 설치하면서 오류가 나오는 패키지를 찾아 설치하기 위함이다.
(이미 Mariadb를 바이너리 설치해서 install 할필요는 없다..)
완료되었다면 mroonga 를 설치한다.
http://packages.groonga.org/source/mroonga/
| rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm yum makecache yum install groonga groonga-libs groonga-devel groonga-normalizer-mysql groonga-normalizer-mysql-devel groonga-plugin-suggest cd /usr/local/src wget wget http://packages.groonga.org/source/mroonga/mroonga-3.11.tar.gz env GROONGA_CFLAGS="-I/usr/include/groonga" GROONGA_LIBS="-L/usr/lib64/groonga" CFLAGS=-fPIC ./configure -with-mysql-source=../mariadb-5.5.34 make make install |
* 필요하다면 설치(필요해보인다..)
https://github.com/mysqludf/lib_mysqludf_preg
http://dragkh.wordpress.com/2013/12/18/how-to-install-mysql-10-0-6-mariadb-and-to-compile-lib_mysqludf_preg-on-centos-6-4/
설치가 성공했으면 mysql 에 plugin을 등록해준다.
| mysql -u root -p INSTALL PLUGIN mroonga SONAME 'ha_mroonga.so'; |
안된다… mroonga 폴더로 돌아와서
| cmake . -DMYSQL_SOURCE_DIR=../mariadb-5.5.34 make make install |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | [root@mandeulgo mroonga-3.11]# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 28 Server version: 5.5.34-MariaDB MariaDB Server Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> INSTALL PLUGIN mroonga SONAME 'ha_mroonga.so'; Query OK, 0 rows affected (0.06 sec) |
됐다..
my.cnf 에 handlersocket 설정을 추가하자. mariadb 는 my.cnf.d/server.cnf 에 넣으면된다.
| [mariadb-5.5] plugin-load=handlersocket.so loose_handlersocket_port = 9998 # the port number to bind to for read requests loose_handlersocket_port_wr = 9999 # the port number to bind to for write requests loose_handlersocket_threads = 16 # the number of worker threads for read requests loose_handlersocket_threads_wr = 1 # the number of worker threads for write requests open_files_limit = 65535 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 18 Server version: 5.5.34-MariaDB-log MariaDB Server Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show plugins; +--------------------------------+----------+--------------------+------------------+---------+ | Name | Status | Type | Library | License | +--------------------------------+----------+--------------------+------------------+---------+ | binlog | ACTIVE | STORAGE ENGINE | NULL | GPL | | partition | ACTIVE | STORAGE ENGINE | NULL | GPL | | handlersocket | ACTIVE | DAEMON | handlersocket.so | BSD | | OQGRAPH | ACTIVE | STORAGE ENGINE | ha_oqgraph.so | GPL | | mroonga | ACTIVE | STORAGE ENGINE | ha_mroonga.so | GPL | +--------------------------------+----------+--------------------+------------------+---------+ 45 rows in set (0.00 sec) MariaDB [(none)]> |
handlersocket 과 mroonga 가 활성화 중이다..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | MariaDB [(none)]> show engines; +--------------------+---------+------------------------------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+------------------------------------------------------------------------------------+--------------+------+------------+ | CSV | YES | CSV storage engine | NO | NO | NO | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | MyISAM | YES | MyISAM storage engine | NO | NO | NO | | InnoDB | sh | Percona-XtraDB, Supports transactions, row-level locking, and foreign keys | YES | YES | YES | | mroonga | YES | CJK-ready fulltext search, column store | NO | NO | NO | | FEDERATED | YES | FederatedX pluggable storage engine | YES | NO | YES | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | | Aria | YES | Crash-safe tables with MyISAM heritage | NO | NO | NO | | OQGRAPH | YES | Open Query Graph Computation Engine, stored in memory (http://openquery.com/graph) | NO | NO | NO | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | +--------------------+---------+------------------------------------------------------------------------------------+--------------+------+------------+ 12 rows in set (0.00 sec) MariaDB [(none)]> |
mroonga 엔진이 올라온 것이 보인다.
| [root@mandeulgo mysql]# netstat -anp Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 1759/exim tcp 0 0 0.0.0.0:9998 0.0.0.0:* LISTEN 17841/mysqld tcp 0 0 0.0.0.0:9999 0.0.0.0:* LISTEN 17841/mysqld tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 1759/exim |
handlersocket 도 활성화 중이다.
MariaDB에 로그인해서, mroonga 플러그인과 관련 UDF들을 설치한다.
| INSTALL PLUGIN mroonga SONAME 'ha_mroonga.so'; CREATE FUNCTION last_insert_grn_id RETURNS INTEGER soname 'ha_mroonga.so'; CREATE FUNCTION mroonga_snippet RETURNS STRING soname 'ha_mroonga.so'; |
HandlerSocket 을 php 에서 사용하려면 module 이 필요하다.
https://code.google.com/p/php-handlersocket/
에서 php-handlersocket-0.3.1.tar.gz 를 받아 설치한다. hsclient 와 함께 설치하려면
hsclient-1.1.0-0.el6.kjdev.x86_64.rpm
hsclient-devel-1.1.0-0.el6.kjdev.x86_64.rpm
두개를 먼저 받아서 설치한다.
| yum localinstall hsclient-* tar zxf php-handlersocket-0.3.1.tar.gz cd handlersocket phpize ./configure or ./configure --disable-handlersocket-hsclient make make install vi /etc/php.d/hsock.ini extension=handlersocket.so service httpd restart |
이제 MariaDB , mroonga , handlersocket 으로 개발을 즐겨봅시다~