Mroongaブログ

2015-08-31

Mroonga 5.06リリース!

今日は野菜の日ですね。 Mroonga 5.06 をリリースしました!

今月は変更点が少なめですが、次のいずれかの条件にマッチする人はアップグレードを推奨します。

  • Mroonga 5.04または5.05を使っている
  • マルチカラムインデックスを使っている

それぞれ理由を説明します。

Mroonga 5.04または5.05を使っている

Mroonga 5.04、5.05にはシャットダウン時にクラッシュするバグがありました。このバグはこのバージョンで修正しました。

シャットダウン時に常にクラッシュするわけではなく、次の条件を満たした時にクラッシュします。

  • Mroongaのテーブルを1つ以上開いている

そのため、次のようにFLUSH TABLESを実行してすべてのテーブルを閉じてからシャットダウンをするとクラッシュしません。

FLUSH TABLES;

なお、Mroongaアンインストール時もMySQLシャットダウン時と同様にクラッシュします。そのため、アップグレード時は次の手順を使ってください。

  1. FLUSH TABLES;を実行
  2. Mroongaをアップグレード

マルチカラムインデックスを使っている

これはMroongaの問題ではなくGroongaの問題なのですが、次のいずれかのときにインデックスが壊れる可能性がありました。

  • すでにデータが入ったテーブルに対してALTER TABLE ADD INDEXでマルチカラムインデックスを追加したとき(ALTER TABLE ADD FULLTEXT INDEXでも同様)
  • マルチカラムインデックスをALTER TABLE ENABLE KEYSしたとき
  • マルチカラムインデックスがあるテーブルをmysqldump→restoreしたとき

インデックスが壊れると、誤ヒット(ヒットすべきではないレコードがヒットする)と検索漏れ(ヒットするべきレコードがヒットしない)が発生する可能性があります。

この問題は常に発生するわけではなく、レコード数・データ量が多いほど発生する可能性が高くなります。そのため、マルチカラムインデックスを使っている方にはアップグレードを推奨します。

繰り返しますが、これはMroongaではなくGroongaの問題です。そのため、厳密にはGroongaをアップグレードするだけでよいです。しかし、多くのMroongaユーザーはGroongaを意識せずに使っているはずなので、ここではパッケージを使ってMroongaをインストールしている人向けに、Mroongaのアップグレード方法を紹介します。MroongaをアップグレードするとGroongaも一緒にアップグレードされます。もちろん、ソースからビルドしている方や細かいことがわかっている方は、Groongaだけアップグレードしても問題ありません。

この問題用のMroongaのアップグレード方法は次の通りです。MySQLを再起動する必要があることに注意してください。

  1. Mroongaをアップグレードする
  2. MySQLを再起動する(必須!)

MroongaがMySQLにロードされると、Groongaも一緒にロードされます。Mroongaはアップグレード毎に動的に再ロードできるのですが、Groongaは一度ロードされたらMySQLが終了するまでアンロードされません。そのため、MySQLを再起動する必要があります。

おわりに

5.05からの詳細な変更点は 5.06リリース - 2015-08-31 を確認してください。

それでは、Mroongaでガンガン検索してください!