Mroongaブログ

2012-01-29

mroonga 1.20リリース

今日は今年最初の肉の日ですね。

mroonga 1.20 がリリースされました!

それぞれの環境毎のインストール方法: インストール

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

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

非互換な変更点

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

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

DATE型などの分だけであればmysqldumpでダンプしたものをリストアするだけでよいのですが、ストレージエンジン名も変わっているのでダンプしたものを編集する必要があります。具体的には"CREATETABLE" 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からの変更点: 1.20リリース - 2012/01/29

さいごに

それでは、今年もよろしくおねがいします!