[heroku]HerokuのclearDBとPostgresでのインポートとエクスポートまとめ

herokuのmysqlとpostgresqlのDBのインポートエクスポートメモ。
heroku上のDBの中身を別のheroku上のDBへ移行するという前提。

入れ替える情報

項目 内容 例(clearDB)
USER_NAME ユーザー名 b114d7xxxxxxxb |
PASSWORD パスワード d81xxxxb |
HOST ホスト名 us-cdbr-iron-xxxx-xx.cleardb.net |
DB_NAME DB名 heroku_5f996e9xxxxxxxx |

アプリを指定して実行する場合は、すべてのコマンドのお尻に、--app app_nameとつける。

ClearDB(mySql)

情報の構成

環境変数にて取得可能な情報より。

CLEARDB_DATABASE_URL=mysql://ユーザ名:パスワード@サーバ名/データベース?reconnect=true

エクスポート

$ mysqldump -uUSER_NAME -pPASSWORD -h HOST -r backup.sql --single-transaction DB_NAME

インポート

$ mysql --host=HOST --user=USER_NAME --password=PASSWORD --reconnect DB_NAME < backup.sql

参考

ClearDB から Azure VM 上の MySQL に移行 | プログラミング生放送
mysql – Dump sql file to ClearDB in Heroku – Stack Overflow

Heroku Postgres

概要

Heroku Postgresに標準搭載されているPG Backupsを使用します。

エクスポート

バックアップを取る

$ heroku pg:backups capture
Use Ctrl-C at any time to stop monitoring progress; the backup
will continue running. Use heroku pg:backups info to check progress.
Stop a running backup with heroku pg:backups cancel.

DATABASE ---backup---> b002

URLを取得する

$ heroku pg:backups public-url b002
The following URL will expire at 2015-09-10 07:33:23 +0000:
  "https://xfrtu.s3.amazonaws.com/a53f7aa...."

ここで取得したS3のURLを、S3_URLとする。

(ダウンロードする場合は以下)

$ curl -o latest.dump 'S3_URL'

インポート

$ heroku pg:backups restore 'S3_URL' DATABASE_URL

ローカルのDBにインポートする場合

$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U ユーザー名 -d DB名 バックアップファイル

参考

Importing and Exporting Heroku Postgres Databases with PG Backups | Heroku Dev Center
Heroku PGBackups | Heroku Dev Center

   このエントリーをはてなブックマークに追加