Hatena::ブログ(Diary)

Y-Ken Studio - 日々クリエイション このページをアンテナに追加 RSSフィード

2012-02-03 CentOS-6.3に mysql-5.5.20 と mroonga-2.04 を入れる方法 このエントリーを含むブックマーク このエントリーのブックマークコメント

mroonga公式のCentOS-6向けパッケージでは、mysql-5.1用しか提供されていません。

しかし事情により、CentOS-6でmysql-5.5系を利用したい方もいると思います。

そんな時に使える、インストール方法を紹介します。

<お知らせ>

mroongaは公開時にセットでリリースされたMySQLバージョン以外の組み合わせとした場合、期待通りの動作となりません。mroongaは日進月歩の進化を遂げているため、「CentOS-6.x に MySQL-5.6.11 と mroonga の最新版を入れる方法」という記事で紹介しております、最新のMySQL 5.6と共に使うmysql56-mroongaを是非ご検討ください。

目的

CentOS-6.3 + MySQL-5.5の環境で、MySQL向けの全文検索ストレージエンジン「mroonga」を利用する。

事前準備

remiリポジトリからmysql-5.5をインストールしていた場合には、先にアンインストールを行って下さい。

確認環境

CentOS-6.3(x86_64)

インストール方法

リポジトリ推奨のmecabを先に入れた後に、mroonga本体をインストールします。

CentOS-6でも問題なく動作します。

$ sudo yum -y install mecab mecab-devel mecab-ipadic --disablerepo=* --enablerepo=groonga
$ sudo rpm -ivh http://packages.groonga.org/centos/5/x86_64/Packages/mysql-mroonga-2.04-0.x86_64.rpm \
http://packages.groonga.org/centos/5/x86_64/Packages/MySQL-shared-5.5.25-1.rhel5.x86_64.rpm \
http://packages.groonga.org/centos/5/x86_64/Packages/MySQL-server-5.5.25-1.rhel5.x86_64.rpm \
http://packages.groonga.org/centos/5/x86_64/Packages/MySQL-devel-5.5.25-1.rhel5.x86_64.rpm \
http://packages.groonga.org/centos/5/x86_64/Packages/MySQL-client-5.5.25-1.rhel5.x86_64.rpm

インストール確認

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| mroonga            | YES     | CJK-ready fulltext search, column store                        | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
10 rows in set (0.00 sec)

動作テスト

mysql> create table sample_fulltext (id int, content text, primary key(id), fulltext key (content)) engine = mroonga;
Query OK, 0 rows affected (0.56 sec)

mysql> insert into sample_fulltext (id, content) values (1, 'mroongaとは'), (2, 'Tritonnの後継'), 
    -> (3, 'MySQLのプラグインとして動作'), (4, '更新性能の向上'), (5, '検索性能の向上');
Query OK, 5 rows affected (0.01 sec)
Records: 5  Duplicates: 0  Warnings: 0

mysql> select * from sample_fulltext where match(content) against('性能');
+----+-----------------------+
| id | content               |
+----+-----------------------+
|  4 | 更新性能の向上        |
|  5 | 検索性能の向上        |
+----+-----------------------+
2 rows in set (0.01 sec)

なお、同様の方法で過去のバージョンも動きましたが、今後も同様に動くとは限りません。

このインストール方法は公式の組み合わせではない点、ご承知おき下さい。

更新履歴

2012.07.14 CentOS 6.3向け情報にアップデートしました

2013.05.02 リンクして下さっているブログを関連ブログとして追加

関連ブログ

http://14code.com/blog/category/groonga

けろろんけろろん 2012/07/15 01:14 すみません質問です。
こちらの内容を参考にさせてmroongaをいれて試しているのですが、
phpはどうしているのでしょうか?
mysql、phpなどのインストール、アンインストールしているうちに
最初は動いていたphpmyadminがえらーになってしまって原因わかりません。
PHPが問題だとはおもうのですが、解決方法がわかりません。

CentOS6のアップデートでは、php-5.3.3-14となっており
remiにおいある5.3.14-1ではないです。
PHPはの最新である5.3.14-1にした状態でmroongaやMySQLが正常に動作するには
remiの5.3.14-1をrpmパッケージを入れて問題ないのでしょうか?
(mronngaとMySQLは記載してあったバージョンを使用)
remiで問題の場合はどこのリポジトリのものを使えればよいでしょうか?
ソースからのインストールは絶対避けたいです。
rpmをダウンロードしてからのインストール、またはrpmbuildから作ったrpmパッケージをインストールを考えています。

もう一つしつもんですが、エンジンをmroongaに指定したときに作成されるmrnファイルですが
var/lib/mysql の中の対象データベースのフォルダに入らず、
var/lib/mysql の直下に直接保存されます。
これを避ける方法はありますでしょうか?

いきずまってしまっており、お分かりのようなら教えて頂きたいです。

よろしくお願いします。

けろろんけろろん 2012/07/17 16:04 自分でもう少し調べたところ、php-mysqlがインストールされていないのが原因のようですが、php-mysqlを入れるにはlibmysqlclient.so.18が必要であり、よってmysql-libsをインストールする必要となります。しかしgroongaが提供しているMySQLではmysql-libsにあたるものがありません。そこでremiのmysql-lib使えばphp-mysqlは入りますが、今度はgronngaのMySQLをいれるときに競合してしまい、groongaのMySQLをいれることができません。どのようにすれば対応できるようになるのでしょうか?
phpはremiのリポジトリにあがっているphp-5.3.14-1がインストールしてあります。

おわかりのようでしたらよろしくお願いします。

yoshi-kenyoshi-ken 2012/07/17 21:48 同一環境を用意して検証してみました。
以下、回答となります。いかがでしょうか?

・php-mysql
remiリポジトリを利用する場合には、remiにあるmysql-libsが必要となり、コンフリクトが発生します。
ですが、updatesリポジトリにある5.3.3-14.el6_3というバージョンを使えば、問題なく動きます。

・mrnファイルの保存先
mroongaストレージエンジンを利用するテーブルが存在しない状態で、
my.cnfに以下の行を追加し、mysqlを再起動してみてください。
mroonga_data_home_dir=mroonga.data

1つ注意がありまして、その他のDB名と名前が被らないことが必須条件です。
この設定を行う事で、var/lib/mysql以下にファイルが大量に生成される状態を回避できます。
こちら、まだ情報が整備されていない実験的な機能ですので、利用の際はご注意ください。

けろろんけろろん 2012/07/18 01:48 yoshi-kenさん、ご返答ありがとうございます。

ご返答の質問ですが、
updatesリポジトリにある5.3.3-14.el6_3のバージョンを利用すればOKとのことですが、
それはphp-mysqlのrpmパッケージだけ5.3.3-14.el6_3を利用すればよいのでしょうか?
それともphp-mysql以外のphpパッケージも同じ5.3.3-14.el6_3にする必要があるのでしょうか?
できたらバージョンが高いremiの5.3.14-1の方を使いたいと思っているのですが、
あきらめるしかないのでしょうか?

mrnファイルの保存先については、試して後日ご報告させていただきます。

yoshi-kenyoshi-ken 2012/07/18 08:55 > それはphp-mysqlのrpmパッケージだけ5.3.3-14.el6_3を利用すればよいのでしょうか?
php-mysql以外も同じバージョンのものを使う必要があります。

新しいバージョンを使いたいという事でしたら、以下の手法が参考になります。

・remiレポジトリにあるphp-mysqlを依存性無視してインストール
yumでのインストールではphp-mysql以外を入れて、最後に以下コマンドでphp-mysqlを強制インストールする方法です。
rpm -ivh --nodeps http://rpms.famillecollet.com/enterprise/6/remi/x86_64/php-mysql-5.3.14-1.el6.remi.x86_64.rpm

・SRPMSの中にあるspecファイルを書き換えてrpmbuildする。
dependencyでの警告が出ないように書き換えるというものです。
http://rpms.famillecollet.com/SRPMS/

いかがでしょうか?
上手く行く事を祈っております。

けろろんけろろん 2012/07/19 03:01 yoshi-kenさん、ありがとうございます。

教えて頂いた情報を元にいろいろと試してみました。

まずはphp-mysql及びphp-mysql以外のパッケージについて、5.3.3-14でインストールして
確認したところmroongaが動くようになりました。
そこで質問ですが、mroongaのインストールで使用しているMySQLのバージョンは5.5.25ですが、
5.3.3-14のビルド対象のデータベースがMySQL-5.1なので
データベースクライアントのバージョンがlibmysql-5.1.54 になります。
これはMySQL-5.5.25とは食い違うバージョンとなりますが、
これはあまり気にしなくても問題ないという認識で良いのでしょうか?

my.cnfの設定に、「mroonga_data_home_dir=mroonga.data」を設定したところ
mysqlの再起動に失敗し、mysql.log を見ると
「/usr/sbin/mysqld: unknown variable 'mroonga_data_home_dir=mroonga.data'」
というエラーログがあります。
未知の変数と認識しているので再起動できないようです。
これは実験的な機能とのことなので、解決は難しいのでしょうか?

教えて頂きましたとおりに、
phpのバージョン5.3.14について、まずはphp-mysql以外をremiのphpパッケージをインストールして
依存無視してremiのphp-mysqlをいれたところmroongaの全文検索ができることが確認はできました。
依存関係を無視してインストールしたことが今まで経験がないのでわからないのですが、
依存関係を無視したphpは、動作上気にするほど問題にはならない認識でよいのでしょうか?

後、SRPMSのspecを使ったご解答ですが、
こちらは指定したリポジドリにあるphpのsrc.rpmを使ったインストール紹介といことでしょうか?
理解不足ですみません。何のパッケージのsrc.rpmのことを言ってるのかがわからなくて。

よろしくお願いします。

けろろんけろろん 2012/07/19 18:57 mroonga_data_home_dirの件ですが、
「mroonga_data_home_dir=mroonga.data」ではなく
「mroonga_database_path_prefix=mroonga.data」を指定したら
MySQLの再起動はうまくいきました。

ただし、/var/lib/mysqlの中に
mroonga.dataフォルダを作成したにもかかわらず、
そのフォルダの中にmrcファイルができず、
mroonga.dataデータベース名.mrn.xxxx
というファイル名で/var/lib/mysql直下
に直接ファイルが作られてしまいます。

けろろんけろろん 2012/07/19 18:59 すみません、上記の書き込みですが、
mrcファイルではなくmrnファイルです。

けろろんけろろん 2012/07/19 21:11 mroonga_database_path_prefixについてもう少しいろいろ試したところ、「mroonga_database_path_prefix=mroonga.data」でななく「mroonga_database_path_prefix=mroonga.data/」として「/」をつけると/var/lib/mysqlの中に作ったmroonga.dataのディレクトリにmrnファイルが生成できることが確認しました。
また「mroonga_database_path_prefix=/home/mroonga.data/」な感じでパス指定すると、/var/lib/mysql/の中ではないフォルダに対してもmrnファイルが生成することも確認できました。

ただ、/var/lib/mysql/の中にデータベースのデータはまとめておきたいので、/var/lib/mysql の中にmroonga.dataフォルダを置きたいと思っています。
しかしphpmyadminで閲覧すると、左メニューのデータベースの選択項目で「mroonga.data」が出てきてしまいます。
ひとつ解決すると、違うことが問題になる状況です。

mroonga_database_path_prefixの値設定で、データベース名が入る変数をつけらるとよいのですが、
例えば、mroonga_database_path_prefix=$database_nameといった感じで変数設定できれば、
それぞれ対象のデータベースのフォルダにmrnファイルが作られて便利なんですが・・・・

yoshi-kenyoshi-ken 2012/07/24 01:03 確認し、週末にまとめてご回答差し上げますので、今しばらくお待ち頂けますでしょうか。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

リンク元