💭
RedmineのDBをPostgreSQLからMariaDBに移行
TL;DR
- Redmine 4.2.5にて、yaml_dbを利用することでPostgreSQL(14.2)からMariaDB(10.4.24)に移行できました
経緯
GCPのVMの無料枠(e2-small,Mem:1GB,HDD:30GB)で以下のDockerコンテナクラスタ(docker-compose)でredmineを運用しています。
- redmine: 4.2.5-alpihne
- postgres: 14.2-alpine
- steveltn/https-portal: 1.21.1
環境が激poorなこともありますが、たまにアクセスするとページが表示されるまで10秒近く待たされることも。そこで、より軽量と思われるMySQL系のMariaDB(10.4.24)に移行しました。パフォーマンスが改善されたかどうかは、現在様子見です。
以下の手順を踏みました。
- コンテナクラスタを停止
-
docker-compose.yml
にMariaDBコンテナを追加し、redmineコンテナから接続できるようnetwork設定し、rootた上で起動 -
docker-compose exec
コマンドでredmineコンテナに接続-
apk-add mariadb-client
を実行してクライアントツールをインストール -
/usr/src/redmine/config/database.yml
のバックアップを取得した上で、記述をMariaDBに接続できるよう(adapterはmysql2
) - mysqlコマンドでMariaDBコンテナに接続し、Install Redmineの手順を参考にDBを作成
- Install Redmine](https://www.redmine.org/projects/redmine/wiki/redmineinstall)の手順を参考に
rake db:migrate
でDBを初期化 -
/usr/src/redmine/Gemfile
にgem "yaml_db"
の記述を追加してgem bundle update
を実行。エラーとなるが、途中yaml_db
のインストールが成功していればOK -
/usr/src/redmine/config/database.yml
を更にバックアップした上で、前にバックアップしていたPostgreSQL用の設定に戻してRAILS_ENV=production bundle exec rake db:data:dump
を実行。/usr/src/redmine/db/data.yml
にバックアップが作成される -
/usr/src/redmine/config/database.yml
をMariaDBの設定に戻し、RAILS_ENV=production bundle exec rake db:data:load
を実行。 - mysqlコマンドでMariaDBコンテナに接続し、データがリストアされていることを確認
-
-
docker-compose.yml
のPostgreSQLコンテナの記述を削除し、redmineコンテナからMariaDBコンテナに接続するよう設定を修正した上で起動。
Discussion
フォローありがとうございます。自分はRedmineを会社内イントラ仮想サーバーでDockerにてセットアップし使っていますが、最初DBをSQLiteで利用していたものを途中からPostgreSQLに変更しました。当初、各所の内部のインクリメントカウンターがずれてしまって補正するのが大変でしたが、yaml_dbなるライブラリで移行できるのは便利ですねー。