LoginSignup
1

posted at

updated at

Redmine全文検索プラグイン MariaDB+Mroongaのアップデートエラー対処

概要

Redmine 5.0がリリースされたとのことで、せっかくなのでデータベース等のミドルウェア含めアップデートを行うことにしました。ところが少し古いmroongaのバージョンからだとデータ移行できないことが判明したため手順を記録します。

環境

  • windows 10 Pro
  • Bitnami redmine 4.2.3-3 => Bitnami redmine 5.0.2-2
  • mariadb-10.4.12-with-mroonga-10.01-winx64 => mariadb-10.9.4-with-mroonga-12.10-winx64
  • full_text_serch 1.0.4 (2020年4月頃) => full_text_serch 1.0.4 (2022年12月頃)

Bitnamiインストーラ使わなくても環境構築できる方は適宜スキップ・読み替えてください。

手順

  1. テスト環境へfts関連をignoreしたdumpファイル展開
  2. mrnファイルをテスト環境へコピー
  3. full dumpファイル作成しproduction環境の新環境に展開

image.png

エラー内容と対処方針

mysqlで単純にフルdumpして展開しようとすると次のエラーが出ます。

C:\Bitnami\redmine-4.2.3-3> mysqldump -uroot -p -P3306 bitnami_redmine --default-character-set=utf8 > backup.mariadb
Enter password: *************

C:\Bitnami\redmine-5.0.2-2> mysql -uroot -p -P3307 bitnami_redmine --default-character-set=utf8 < backup.mariadb
Enter password: *************
ERROR 1026 (HY000) at line 828: <fts_targets.tag_ids>: failed to cast to <Int32>: <"\u0001\u0012\u0001\u0010\u0001\u000E\u0001\f\u0001\u0000\u0000\u0000\u0002\

full_text_searchのカラムがInt32がInt64になっているのが原因だそうですが、どうもこれはredmineでのmigrationコマンドでは解決できないそうです。
mrnファイルのコピーにより、fts関連のデータは移します。

1.テスト環境へfts関連をignoreしたdumpファイル展開

本番環境より、schemaファイルと全文検索プラグイン(fts)テーブルの一部を除外したデータファイルを作成します。
新旧の環境が入り乱れるので注意してください。間違い防止のためテスト環境含めて新環境はポート3307で稼働させています。

cd C:\Bitnami\redmine-4.2.3-3
mysqldump -uroot -p -P3306 bitnami_redmine --default-character-set=utf8 --no-data > backup_schema.mariadb
mysqldump -uroot -p -P3306 bitnami_redmine --default-character-set=utf8 --no-create-info --ignore-table=bitnami_redmine.fts_targets > backup_ign-fts.mariadb

これをテスト環境に展開します。

cd C:\Bitnami\redmine-5.0.2-2
mysql -uroot -p -P3307 bitnami_redmine --default-character-set=utf8 < backup_schema.mariadb
mysql -uroot -p -P3307 bitnami_redmine --default-character-set=utf8 < backup_ign-fts.mariadb

これは問題なく展開できるはずです。

2.mrnファイルをテスト環境へコピー

ファイルコピーにより、C:\Bitnami\redmine-4.2.3-3\mariadb\data にある .mrn. のファイル一式をコピーします。

  1. データベースを停止
    コピー元の本番環境、テスト環境ともに、データベースを停止します。
     本番環境
     image.png
     テスト環境
     image.png

  2. mrnファイルのコピー
    コピー元の本番環境のdataフォルダから、引っ越したいデータベースのmrnファイル一式を選択しテスト環境にコピーします。(スクリーンショットのものはデータベース名redmineのものです)
    image.png

  3. 再起動
    データベースが起動できることを確認します。schemaが定義されていると、fts関連データはmrnファイルからデータベースに取り込まれるようです。
    image.png

次に、データベースをmigrationし、redmineが起動できることを確認します。プラグインが5.0に対応しているかどうかは事前に検証しておいてください。

cd C:\Bitnami\redmine-5.0.2-2
cd apps/redmine/htdocs
bundle exec rake db:migrate rails_env=production
bundle exec rake redmine:plugins:migrate  rails_env=production

image.png

3.full dumpファイル作成しproduction環境の新環境に展開

テスト環境のmigrationできたデータベースで、フルダンプファイルを作成します。

.Test Environment
cd C:\Bitnami\redmine-5.0.2-2
mysqldump -uroot -p -P3307 bitnami_redmine --default-character-set=utf8 > backup_full.mariadb
. New Envrionment
cd C:\Bitnami\redmine-5.0.2-2
mysql -uroot -p -P3307 bitnami_redmine --default-character-set=utf8 < backup_full.mariadb

本番環境の新環境のほうを再起動してデータが移行できていることを確認してください。
この手順で全文検索プラグイン関連のデータも引っ越しできます。

ちなみに比較的新しいバージョンの全文検索プラグインとmroongaから使い始めた方はエラーは発生しないようです。

以上です!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1