2012年1月30日

[mysql 15663] [ANN] mroonga 1.20

須藤です。

昨日は今年最初の肉の日なので、MySQL 5.1/5.5/5.6、MariaDB
5.2/5.3で利用可能な全文検索可能なストレージエンジン、mroonga
1.20をリリースしました。
http://mroonga.github.com/ja/docs/news.html#release-1-20

mroongaは、全文検索エンジンであるgroongaをベースとしたMySQLの

ストレージエンジンです。Tritonnの後継プロジェクトとなります。

ドキュメント:
http://mroonga.github.com/ja/
インストールガイド:
http://mroonga.github.com/ja/docs/install.html


○ 注意: アップグレード時にデータベースの再構築が必要

カンのいい方は、今回のリリースでマイナーバージョン(mroongaは
${MAJOR}.${MINOR}${MICRO}というバージョン付け規則になっていま
す)が上がっていることから気づいたかもしれませんが、今回のリ
リースでは以前のリリースとデータベースの互換性がありません。
そのため、1.20にアップグレードする場合はデータベースを作成し
直す必要があります。アップグレード方法は↑のリリース情報ペー
ジにもあるのですが、以下でも紹介します。アップグレードする際
はバックアップも取るなどして慎重に作業してください。

疑問点などある場合は質問してくれれば答えるので、お気軽にどう
ぞ。

○○ 非互換な変更点

このリリースでは、データベースの再作成が必要な変更点が2つあります。

* ストレージエンジン名を"groonga"から"mroonga"へ改名。
* DATE、DATETIME、TIMESTAMP型の値にgroongaが提供する時間の値を使うようにした。

DATE型などの分だけであればmysqldumpでダンプしたものをリスト
アするだけでよいのですが、ストレージエンジン名も変わっている
のでダンプしたものを編集する必要があります。具体的には
"CREATE TABLE" SQL内の"ENGINE=groonga"を"ENGINE=mroonga"に変
更する必要があります。


○○ 更新手順

まず、mroongaを使っているデータベースをダンプします:

% mysqldump MY_MROONGA_DATABASE > database-groonga.dump

ダンプファイル中のストレージエンジンを変更します:

% sed -e 's/^) ENGINE=groonga/) ENGINE=mroonga/' database-groonga.dump > database-mroonga.dump

"CREATE TABLE"の"ENGINE=groonga"だけが"ENGINE=mroonga"に変更
されていることを確認します。"@@ ... @@"行に"CREATE TABLE"が含
まれているかを確認します。この行が"CREATE TABLE"を含んでいた
ら、その変更はほぼ間違いなく"CREATE TABLE"用の変更です:

% diff -up database-groonga.dump database-mroonga.dump
--- database-groonga.dump 2012-01-29 16:53:20.732624670 +0900
+++ database-mroonga.dump 2012-01-29 16:54:47.608420981 +0900
@@ -29,7 +29,7 @@ CREATE TABLE `diaries` (
PRIMARY KEY (`id`),
FULLTEXT KEY `title_index` (`title`),
FULLTEXT KEY `body_index` (`body`)
-) ENGINE=groonga DEFAULT CHARSET=utf8;
+) ENGINE=mroonga DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--

既存のデータベースを削除します。

% mysql -u root -e 'DROP DATABASE MY_MROONGA_DATABASE'

"mroonga"ストレージエンジンにアップグレードします。Debian
GNU/LinuxやUbuntuでは apt-get を使います。CentOSやFedoraでは
yum を使います。

Debian GNU/LinuxまたはUbuntuの場合:
% sudo apt-get install -y mysql-server-mroonga

CentOSまたはFedoraの場合:
% sudo yum remove -y mysql-mroonga
% sudo yum install -y mysql-mroonga

"yum install"の前に"yum remove"をするのを忘れないでください。
今のmroongaのRPMの作りがあまりよくなくて"yum remove"を忘れる
とプラグイン管理テーブル(?)が壊れてしまいます。

ソースからインストールする場合(未確認だがこれでいけるはず):
% mysql -u root -e "DROP FUNCTION last_insert_grn_id"
% mysql -u root -e "UNINSTALL PLUGIN groonga"
% sudo make install
% mysql -u root -e "INSTALL PLUGIN mroonga SONAME 'ha_mroonga.so'"
% mysql -u root -e "CREATE FUNCTION last_insert_grn_id RETURNS INTEGER soname 'ha_mroonga.so'"

データベースを作り直します:

% mysql -u root -e 'CREATE DATABASE MY_MROONGA_DATABASE'

修正したダンプファイルを使ってデータベースを復旧します:

% mysql -u root MY_MROONGA_DATABASE < database-mroonga.dump

これで1.20を使うことができます。"SHOW CREATE TABLE テーブル
名"などで"ENGINE=mroonga"になっていることを確認してください。

○ 変更点

1.11からの変更点は以下の通りです。
http://mroonga.github.com/ja/docs/news.html#release-1-20

1.20リリース - 2012/01/29
-------------------------

改良
^^^^

* MySQL 5.5.20に対応。
* MySQL 5.1.61に対応。
* groonga 1.3.0以降を必須にした。
* [非互換] ストレージエンジン名を"groonga"から"mroonga"に変更。
* UTF8_BINコレーションに対応。 [#1150]
* strict-aliasingの警告が出ないようにした。 [@issmさんが報告]
* DECIMALに対応した。 [#1249] [@Kiskeさんが報告]
* [storage mode] HA_KEYREAD_ONLY対応。インデックス内のカラ
ム値のアクセスが高速になるはず。 [#1212]
* [ストレージモード] float値のマルチカラムインデックスに対応。
* [ストレージモード] double値のマルチカラムインデックスに対応。
* [ストレージモード] enum型とset型をより適切なgroongaのデー
タ型に対応付けるようにした。
* [ラッパーモード] REPAIR TABLE対応。
* [ストレージモード] viewでの count(*) に対応。 [#1255]
[Takahiro Nagaiさんが報告]
* [非互換] DATE、DATETIME、TIMESTAMP型の値にgroongaが提供す
る時間の値を使うようにした。

修正
^^^^

* [debian] replacesとbreaksのmysql-server-groongaのバージョ
ンを修正。 [@ytaka5さんが報告]
* [doc] 実行結果が間違っていた問題を修正。 [Hidekazu Tanakaさんが報告]
* [ラッパーモード] メモリリークを修正。 [montywiさんが報告]

感謝
^^^^

* @ytaka5さん
* Hidekazu Tanakaさん
* @issmさん
* montywiさん
* @Kiskeさん

--
須藤 功平 <kou@xxxxx>
株式会社クリアコード < http://www.clear-code.com/>; (03-6231-7270)

プログラミングが好きなソフトウェア開発者を募集中:
http://www.clear-code.com/recruitment/


投稿者 xml-rpc : 2012年1月30日 14:37
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/108451
トラックバック
コメント

mroonga innodb ラッパーモード、mecab をインストールして、
mysql-replication 環境で日本語全文検索を行いたいのですが、
このmroonga innodb ラッパーモードをmysql replication のスレーブサーバーとして動作させたいのですが、この機能をは、動作可能でしょうか?
また、この場合マスターサーバーにも、mroongaのインストールは必要でしょうか?
ご存知の識者のかたお教えいただきたく、よろしくお願いします。

Posted by: 西山昇 : 2012年4月16日 11:36
コメントする




画像の中に見える文字を入力してください。