[Redmine]Redmineのマイグレーションを行う
CentOS6からCentOS7にRedmineをマイグレーションし、利用するDBMSもMySQLからPostgreSQLに変更した際の作業。
マイグレーション先
- CentOS7
- Redmine3.4.2
- PostgreSQL9.2
手順
マイグレーションに失敗してもよいよう、検証用マシンを用意して以下の手順で行った。
Redmineのアップグレード
1. 検証機にマイグレーション元と同じRedmineの環境を用意、DBのダンプ、添付ファイルを復元
過去の記事の通り
[Linux]RedmineのDBのバックアップを取る - daybreaksnow's diary
2. 検証機のRedmineをマイグレーション先のRedmineのバージョンにアップグレード
こちらを参考
アップグレード — Redmine Guide 日本語訳
2-1. Redmineのダウンロード、解凍、配置
wget http://www.redmine.org/releases/redmine-3.2.4.tar.gz tar xvzf redmine-3.2.4.tar.gz mv redmine-3.2.4 /var/lib/redmine-3.2.4
2-2. DB設定のコピー
cp -a /var/lib/redmine/config/configuration.yml /var/lib/redmine-3.2.4/config/configuration.yml cp -a /var/lib/redmine/config/database.yml /var/lib/redmine-3.2.4/config/database.yml
2-3. 添付ファイルコピー
cp -ar /var/lib/redmine/files/ /var/lib/redmine-3.2.4/
2-4. プラグインコピー
cp -ar /var/lib/redmine/plugins/ /var/lib/redmine-3.2.4/
2-5. 依存するツールをインストール
bundle install --without development test bundle exec rake generate_secret_token
2-6. DBのマイグレーション
bundle exec rake db:migrate RAILS_ENV=production
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
2-8. キャッシュクリア
bundle exec rake tmp:cache:clear tmp:sessions:clear
2-9.「RackBaseURI /redmine-3.2.4」の行を追加
vi /etc/httpd/conf.d/passenger.conf
2-10. httpdに公開
ln -s /var/lib/redmine-3.2.4/public redmine-3.2.4
2-7.のプラグイン用DBのマイグレーションでタグ付けプラグインがこけたので、そのプラグインは削除して実行した(対して使っていなかったので)
データベースの移行
MySQLのダンプをPostgreSQL用に変換して取得することを考えていたが、RailsのDBはyaml_dbを使うとプレインテキストでバックアップが取れるということなのでyaml_dbを使った。
参考:
yaml_dbを使ってMySQLからPostgreSQLにRedmineを移行した - 烏龍茶より麦茶派です
1. yaml_dbのインストール
1-1. /var/lib/redmine/Gemfileに以下の行を追加
gem "yaml_db"
1-2. /var/lib/redmineで以下のコマンドを実行
bundle update bundle install --without development test
RAILS_ENV=production bundle exec rake db:data:dump
これでredmine/db/data.ymlができる。これをマイグレーション先の同ディレクトリに持っていく
3. マイグレーション先で復元
RAILS_ENV=production bundle exec rake db:data:load
ここで2-7.で削除したプラグインが使っていたテーブルが復元できないと言われたので、手動でdata.ymlからそのテーブルの情報を削除した。