開発メモ

開発関係のメモをいろいろと。たぶん。

Redmine 2.3のデータをRedmine 3.3に移行

古いサーバーで動いていたRedmineのデータを、新しいサーバーに移行します。

具体的に言うとMySQLのデータをMariaDBに移行。普通に、dumpを使って作業します。

使用した環境

  • 旧サーバー
環境 情報
CentOS CentOS release 6.6 (Final)
Redmine 2.3.1.stable
Ruby 1.9.3 (i686-linux)
Rails 3.2.13
  • 新サーバー
環境 情報
CentOS CentOS Linux release 7.2.1511 (AltArch)
Redmine 3.3.1.stable
Ruby 2.3.3-p222 (2016-11-21) [i686-linux]
Rails 4.2.7.1

データの保存・復元

旧サーバーでデータを保存

データベースのデータをすべてダンプ。

# mysqldump -u user_redmine -p{password} db_redmine > ~/backup_mysql.dump

Redmineで使われているファイルを圧縮。

# cd /var/lib/redmine
# tar zcvf ~/backup_files.tar.gz files

それぞれ、scpなどを使って新サーバーにコピーしておきます。

新サーバーでデータを復元

ファイルを展開。

# tar zxvf backup_files.tar.gz -C /var/lib/redmine

ダンプしたデータを復元。

# mysql -u user_redmine -p{password} db_redmine < ~/backup_mysql.dump

マイグレーション

不要なテーブルを削除

これだけで動いてくれれば楽なんですが・・・ このままだとデータのマイグレーションでエラーが出るので、不要なテーブルを削除しておきます。

# nano drop_table.sql

以下の内容でファイルを保存。

drop table changeset_parents;
drop table queries_roles;
drop table custom_fields_roles;
drop table email_addresses;
drop table roles_managed_roles;
drop table imports;
drop table import_items;
drop table custom_field_enumerations;

まとめて、削除を実行します。

# mysql -u user_redmine -p{password} db_redmine < drop_table.sql

データベースのマイグレーション

マイグレーションを実行します。

# cd /var/lib/redmine
# bundle exec rake generate_secret_token
# RAILS_ENV=production bundle exec rake db:migrate

動作を確認

ここまで出来たら、実際にアクセスして確認しましょう。

http://{サーバーのアドレス}/redmine

これでアクセスできれば成功です。

参考資料

Redmine3.1をCentOS7.1にインストールし、既存のRedmine1.2のデータの移行を行う手順 - Qiita
http://qiita.com/k-awa/items/88243fbee921bf3ac13b