概要
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インストーラ使わなくても環境構築できる方は適宜スキップ・読み替えてください。
手順
- テスト環境へfts関連をignoreしたdumpファイル展開
- mrnファイルをテスト環境へコピー
- full dumpファイル作成しproduction環境の新環境に展開
エラー内容と対処方針
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. のファイル一式をコピーします。
-
mrnファイルのコピー
コピー元の本番環境のdataフォルダから、引っ越したいデータベースのmrnファイル一式を選択しテスト環境にコピーします。(スクリーンショットのものはデータベース名redmineのものです)
-
再起動
データベースが起動できることを確認します。schemaが定義されていると、fts関連データはmrnファイルからデータベースに取り込まれるようです。
次に、データベースを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
3.full dumpファイル作成しproduction環境の新環境に展開
テスト環境のmigrationできたデータベースで、フルダンプファイルを作成します。
cd C:\Bitnami\redmine-5.0.2-2
mysqldump -uroot -p -P3307 bitnami_redmine --default-character-set=utf8 > backup_full.mariadb
cd C:\Bitnami\redmine-5.0.2-2
mysql -uroot -p -P3307 bitnami_redmine --default-character-set=utf8 < backup_full.mariadb
本番環境の新環境のほうを再起動してデータが移行できていることを確認してください。
この手順で全文検索プラグイン関連のデータも引っ越しできます。
ちなみに比較的新しいバージョンの全文検索プラグインとmroongaから使い始めた方はエラーは発生しないようです。
以上です!