heroku データベースのバックアップを自動化(スケジュール)するには(2015-05現在)

目次

環境

Windows 8 Pro 64bit

heroku toolbelt

https://toolbelt.heroku.com/

railsinstaller-3.1.0.exe

    Ruby 2.1.5
    Rails 4.1
    Bundler
    Git
    Sqlite
    TinyTDS
    SQL Server Support
    DevKit
広告

操作に必要なアドオンは必要なくなりました。

2015-05現在、add-onとしてのPG Backupsは非推奨となっています。
詳しくはhttps://devcenter.heroku.com/articles/pgbackups

クライアントコマンドは、HerokuのPostgresに標準で組み込まれました。

コマンドが変わったようです
https://devcenter.heroku.com/articles/heroku-postgres-backups#scheduling-backups

新コマンドと旧コマンドのマッピングはこちら

マッピング
https://devcenter.heroku.com/articles/mapping-pgbackups-commands

実践

herokuからデータベース名を取得する

$ heroku config --app アプリケーションID

heroku config はアプリケーションの設定を一覧表示するコマンドです。
HEROKU_POSTGRES_XXX_URLの値は Postgres にアクセスするために必要な情報です。
以下のフォーマットになっています。

HEROKU_POSTGRESQL_XXX_URL: postgres://ユーザ名:パスワード@サーバ名:ポート/データベース

自動バックアップをスケジュールす Scheduling backups

定期的な自動バックアップをスケジュールすることができます。
これらは、指定されたデータベースに対して毎日実行されます。

$ heroku pg:backups schedule DATABASE_URL --app アプリケーションID

実行結果

Scheduled automatic daily backups at 04:00 UTC for HEROKU_POSTGRESQL_BROWN

バックアップ状態を確認する Checking Backup Status

作成済のバックアップを確認する

$ heroku pg:backups --app unitprice
Your version of git is 1.8.4.. Which has serious security vulnerabilities.
More information here: https://blog.heroku.com/archives/2014/12/23/update_your_git_clients_on_windows_and_os_x
=== Backups
ID    Backup Time                Status                              Size    Database
----  -------------------------  ----------------------------------  ------  --------
b003  2015-04-29 06:04:34 +0000  Finished 2015-04-29 06:04:35 +0000  10.1kB  BROWN
b002  2015-04-29 06:04:07 +0000  Finished 2015-04-29 06:04:07 +0000  10.1kB  BROWN

スケジュールを止めるには To stop regular backups, use unschedule:

$ heroku pg:backups unschedule DATABASE_URL --app アプリケーションID

スケジュールを確認するには To view current schedules for your app, use:

$ heroku pg:backups schedules --app unitprice
=== Backup Schedules
HEROKU_POSTGRESQL_BROWN_URL: daily at 4:00 (UTC)

実践・他

使われている行数確認

$ heroku pg:info
Your version of git is 1.8.4.. Which has serious security vulnerabilities.
More information here: https://blog.heroku.com/archives/2014/12/23/update_your_git_clients_on_windows_and_os_x
=== HEROKU_POSTGRESQL_BROWN_URL (DATABASE_URL)
Plan:        Hobby-dev
Status:      Available
Connections: 2/20
PG Version:  9.4.1
Created:     2015-04-27 06:14 UTC
Data Size:   7.0 MB
Tables:      4
Rows:        4/10000 (In compliance)
Fork/Follow: Unsupported
Rollback:    Unsupported

バックアップを手動で作成する Creating a backup

$ heroku pg:backups capture --app unitprice
HEROKU_POSTGRESQL_BROWN ---backup---> b001
Backup completedB

バックアップファイルをダウンロードするには Downloading your backups

バックアップのURLを作成します。HerokuのPostgresの外にデータをエクスポートする場合に便利です。

$ heroku pg:backups public-url b003 --app アプリケーションID
The following URL will expire at 2015-04-29 06:56:35 +0000:
  "https://xxx

このURLをクリックしてダウンロードします。
10分後に期限切れになります。

存在しないバックアップファイルを指定すると

internal error

特定のバックアップに関する詳細な情報を取得するには、infoコマンドを使用します。

$ heroku pg:backups info b003 --app unitprice
    === Backup info: b003
    Database:    BROWN
    Started:     2015-04-29 06:04:34 +0000
    Finished:    2015-04-29 06:04:35 +0000
    Status:      Completed Successfully
    Type:        Manual
    Original DB Size: 7.31MB
    Backup Size:      10.1kB (100% compression)
    === Backup Logs
    2015-04-29 06:04:34 +0000: pg_dump: reading schemas

バックアップを削除するには Deleting a backup

heroku pg:backups delete b001 --app アプリケーションID

バックアップからリストアするには Restoring a backup

通常

heroku pg:backups restore b001 DATABASE_URL --app アプリケーションID

DATABASE_URL はそのまま入力します。

他のアプリケーションのバックアップからもリストアできます

$ heroku pg:backups restore flailing-papaya-42::b101 DATABASE_URL

公開URLに置いたファイルからもリストアできます

$ heroku pg:backups restore 'https://s3.amazonaws.com/me/items/mydb.dump' DATABASE -a sushi
広告

参考 herokuのWebサイト

Heroku PGBackups
旧PGBackups

広告
デル株式会社