Help us understand the problem. What is going on with this article?

herokuのPostgreSQLからvps管理のMySQLに移行する

More than 5 years have passed since last update.

最初に素早く作って素早く公開したアプリがherokuでPostgreSQLを使っていたが、データベースの無料枠を超えてしまって、herokuに課金し続けてとくに問題ない日々を過ごしていたが、アプリを気軽にどんどん増やす環境を作っておきたかったのでアプリ毎に課金する必要が出るのは避けたくなった。

なのでvpsを契約してmysql(いつも使っているので使いやすいため)に移行する方法。RDS使うようにしようって時にもやり方特に変わらんと思う。

tapsを使う。

gem install taps
taps server mysql://{移行先user}:{移行先pass}@{移行先host}/{移行先database}?encoding=utf8 {一時的なuser} {一時的なpass}
taps push postgres://{移行元user}:{移行元pass}@{移行元host}/{移行元database} http://{一時的なuser}:{一時的なpass}@localhost:5000

taps server mysql://myaamori@dondondo-natu/musashino-animeshion?encoding=utf8 shiro bako
taps push postgres://yano@youkan/musashino-animeshion http://shiro:bako@localhost:5000

とかとか。

最初は自分のlocal環境のmysqlに入れて試して、問題なかったのでmysql_dumpでsql出して移行先に入れた。だけど一旦localに入れる必要はなかったと思う。encodingの指定しないと文字化けするっぽい。

postgresの指定はheroku configDATABASE_URLの設定そのままでいける。herokuコマンドでtaps使ってるっぽいので割と信頼できる。

あとはアプリのdb接続をmysqlにしたり念のための確認やらバックアップやりなんやらをしておいて

heroku maintenance:on
heroku config:add DATABASE_URL=mysql://{移行先user}:{移行先pass}@{移行先host}/{移行先database}
heroku maintenance:off

でオッケー

vps管理になるので監視とか最適な設定とか必要になるでしょうのでそこら辺は別途いい感じにしましょう。RDSにしたほうが金余分にかかるけど全く意識しないメリットデカイのでそっちでもいいかなぁとか考えたり。

参考 : 手軽にPostgreSQLからMysqlへデータを移行する - mat_akiの日記

soramugi
自己紹介を設定してみる!
http://soramugi.net/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away