LoginSignup
2
1

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-12-11

概要

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から使い始めた方はエラーは発生しないようです。

以上です!

2
1
1

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
  3. You can use dark theme
What you can do with signing up
2
1