隔週連載groonga

第10回 [実録] MySQL向け全文検索エンジン「Tritonn」から「mroonga」への移行ガイド(3)

この記事を読むのに必要な時間:およそ 9 分

こんにちは,株式会社リブセンスの吉田健太郎です。第8回に続いて,私が体験したTritonnからmroongaのシステム移行プロジェクトを舞台裏からお届けします。

これまでのあらすじ

将来的な技術負債を残さない,そしてInnoDBの性能向上等の恩恵を受けるため,もはやレガシーとなったMySQL 5.0を捨てて,MySQL 5.6への移行を行いたい。しかしSolrへ乗り換えるほどでもなく,引き続きシンプルにSQLを用いた,リレーショナルな日本語対応の全文検索を使いたい。この構想を実現するため,groongaのMySQLバインディング版である「mroonga」を用いた,MySQL 5.6への移行プロジェクトが始動しました。

これまでの記事と,主なトピックは次の通りです。

今回の流れ

前回までのオペレーションでは,稼働中であるMySQL 5.0のレプリケーションスレーブとしてMySQL 5.6を接続する所までを完了させました。いよいよ大詰めとなる今回,次の流れで移行プロジェクトの最終章を紹介します。

  1. mroongaのインストール方法
  2. Tritonnからmroongaへのテーブルスキーマ書き換えガイド
  3. Tritonnからmroongaへの全文検索クエリ書き換えガイド
  4. mroongaのプロダクション環境への投入
  5. Tritonnからmroongaへ移行する際の要注意ポイント
  6. mroongaのトラブルシューティング
  7. まとめ

なお,次の事柄については適宜必要に応じて実施しているものとするため,説明は省略します。

  • GRANT文を用いたMySQLユーザの追加
  • MySQL 5.6レプリケーションスレーブのクローン
  • 稼働試験用データベースの作成と,それを用いたWebアプリケーションとの結合動作試験
  • LVSを用いたMySQLのDSR構成化

ここまで完了すれば移行の準備はほぼ完了です。今回の事例では段階を追わずに一気にMySQL 5.6構成への切り替えを行いました。段階的に移行するならば,マスタをMySQL 5.0,スレーブをMySQL 5.6という構成を挟んでも良いでしょう。

mroongaのインストール方法

前回までの記事では,MySQL 5.0のスレーブとしてMySQL 5.6をぶら下げるため,MySQLのインストールのみを行いました。続いて,RPM作成の記事でビルドしたRPMパッケージを用いて,mroongaのインストールを行います。

# groongaリポジトリをまだインストールしていない場合に実行
$ sudo rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm

# groongaリポジトリより,関連パッケージのインストール
$ sudo yum install mecab mecab-devel mecab-ipadic groonga-libs groonga-tokenizer-mecab --enablerepo=groonga

# MySQLが起動していることを確認
$ sudo /etc/init.d/mysql status

# 自分でパッケージビルドしたmroongaのRPMパッケージをインストール
$ sudo yum localinstall /home/build/rpmbuild/RPMS/x86_64/mysql56-mroonga-3.05-1.el6.x86_64.rpm

# mroongaがインストールされていることをmroongaという行があることで確認
$ mysql -uroot -p -e "SHOW PLUGINS" | grep mroonga
| mroonga | ACTIVE | STORAGE ENGINE | ha_mroonga.so | GPL |

# インストールできたmroongaのバージョンや設定を確認
$ mysql -uroot -p -e "SHOW VARIABLES LIKE 'mroonga_%'"
+------------------------------------+-------------+
| Variable_name                      | Value       |
+------------------------------------+-------------+
| mroonga_database_path_prefix       |             |
| mroonga_default_parser             | TokenBigram |
| mroonga_default_wrapper_engine     |             |
| mroonga_dry_write                  | OFF         |
| mroonga_enable_optimization        | ON          |
| mroonga_libgroonga_version         | 3.0.5       |
| mroonga_log_file                   | groonga.log |
| mroonga_log_level                  | NOTICE      |
| mroonga_match_escalation_threshold | 0           |
| mroonga_version                    | 3.05        |
+------------------------------------+-------------+

もしMySQLを停止した状態でmroongaのRPMパッケージをインストールした場合には,次の記事を参考に手動でmroongaの有効化を行います。

著者プロフィール

吉田健太郎(Kentaro Yoshida)

株式会社リブセンス,Web系インフラの研究開発エンジニア。

ITベンチャー立ち上げに参画し,幅広い領域での経験を積むこと8年目。フルスタックエンジニアを目指して,湧き出るアイディアを形にする日々を過ごしている。

GitHub:https://github.com/y-ken/
ブログ:http://y-ken.hatenablog.com/

コメント

コメントの記入