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

HerokuでのDB移行

More than 1 year has passed since last update.

お仕事のアプリ移行の前に、ほそぼそとやっている自社サービスの http://l-engine.com で試してみた。DBのバージョンアップも出来たので一石二鳥。

準備

Addonの追加でDB追加したらHEROKU_POSTGRESQL_ROSE_URLが割り当てられた。

heroku config --app myapp

などとすると新規のURLの存在を確認できる。

バックアップ

アプリの管理画面からCapture Backupしてバックアップ作成。何かあったらこれに戻ってくる。

メンテ開始

以下の手順でメンテ開始&DBの移行。

DBのコピー

heroku maintenance:on --app myapp

heroku pg:copy DATABASE_URL HEROKU_POSTGRESQL_ROSE_URL --app myapp

ここまでしたら、新しい方のインスタンスにデータがちゃんと入ったか管理画面で確認する。今回は https://postgres.heroku.com/databases からDBを選択して見た。Rowsの数値などが変わればデータの移動には成功している。

DBの切り替え

続いて、DBの切り替えを行い、メンテモードを抜ける。

heroku pg:promote HEROKU_POSTGRESQL_ROSE --app myapp
heroku maintenance:off  --app myapp

確認

とりあえず何かDBに書き込まれるような操作を行って、新しいDBに反映されるのかをチェック。管理画面から下記の操作でpsqlできるとわかるのでこれをコンソールに貼り付けて実行。

heroku pg:psql --app myapp HEROKU_POSTGRESQL_ROSE
myapp::ROSE=> select * from mytable order by created_at desc

新規に書き込んだデータが無事に反映されていれば新DBで動いていることまで確認できる。

Why do not you register as a user and use Qiita more conveniently?
  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
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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