yaml_dbを使ってMySQLからPostgreSQLにRedmineを移行した

MySQLからPostgreSQLに移行したのでその時のメモ

移行ツール

yaml_dbを使用する
適当にググっているといくつかのサイトで、本家?のyaml_dbは4.x系のRailsに対応していないという記事がいくつかあったのだが、
https://github.com/yamldb/yaml_db https://rubygems.org/gems/yaml_db
githubとここを見る限り4.x系も対応したみたいなのでそのまま本家のyaml_dbを使うことにする。


Postgresqlに新しいDBを作成

ここを参考に作成
http://www.redmine.org/projects/redmine/wiki/RedmineInstall#PostgreSQL

$ sudo -upostgres psql
psql$ CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'my_password' NOINHERIT VALID UNTIL 'infinity';
psql$ CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;

config/database.ymlの編集

production:
    adapter: postgresql
    database: redmine
    host: localhost
    username: redmine
    password: "my_password"
    encoding: utf8

こんな感じで変更
これを先にやらずにbundleするとpostgresqlのgemが入らなかった

yaml_dbとgemのインストール&アップデート

yaml_dbをGemfileに追加

/srv/redmine/Gemfile の、gemが並んでいる場所に「gem "yaml_db"」を追加する

$ sudo vim /srv/redmine-3.0.3/Gemfile

それっぽい場所に

gem "yaml_db"

を追加

gemのインストールとアップデート
$ sudo bundle update
$ sudo bundle install --without development test sqlite

前回インストールした時は

$ bundle install --without development test postgresql sqlite

ってやったけど、今回はpostgresqlのアダプタをインストールするためpostgresqlを含めない

データのダンプ

$ cd /srv/redmine-3.0.3
$ sudo RAILS_ENV=production bundle exec rake db:data:dump

これでdb/data.ymlにdata.ymlファイルが作成される

マイグレーションしてデータの書き込み

sudo RAILS_ENV=production bundle exec rake db:migrate
sudo RAILS_ENV=production bundle exec rake db:data:load

後はApacheを起動してちゃんと移行できているか確認して終了。
今のとこちゃんと動いてるので上手く移行できたみたい。

参考サイト