Heroku PGBackupsの統合
ご無沙汰しております、浅野です。(案件が忙しく、ブログかけてませんでした...)
今回は、PGBackupsアドオン(以下PGBackups)の heroku-postgresqlアドオン統合の話題です。
簡単に3行で
- 2015年3月11日から Heroku PG backups アドオンが Heroku-postgresqlアドオンに統合されました。
- heroku toolbelt での操作が
heroku backups [subcommand]
からheroku pg:backups [subcommand]
に変更されています。 - バックアップ開始は、コマンドでバックアップスケジュールを手動設定して行う必要があります。
詳しく
公式のお知らせはコチラ。
確かに、Heroku Addonsを「backup」などのキーワードで検索しても、みんなが大好きだったPG Backupsは見つかりません。
変わったこと
- Heroku-postgresqlアドオンを導入するだけで、Postgresqlのバックアップができるようになりました
- これまで使っていた
heroku pgbackups [subcommand]
系のコマンドが非推奨になり、heroku pg:backups [subcommand]
のようにheroku-postgresqlアドオンのサブコマンドに変更になりました。 - バックアップスケジュールの設定は
heroku pg:backups schedule
を使って手動設定する必要があります。 - バックアップスケジュールは任意の時間が設定できるようになりました。
2つ目のコマンドの変更は新旧対応関係一覧に、どんなコマンドに変更されたかが記載されています。(大体は、 pgbackups:hoge が pg:backups hoge のように変わっただけですが、 pgbackups:transfer
は pg:copy
に変わっています。)
何が嬉しいの?
これまでできなかった日次バックアップの時間帯指定ができるようになりました。
コマンド操作でバックアップスケジュール設定するのは若干手間ですが、毎日x時にバックアップを実施する、のような運用要件には応えやすくなっています。
バックアップスケジュールの設定コマンド
heroku pg:backups schedule [DATABASE_URL] --at ':00 '
パラメータ
- DATABASE_URL ... バックアップ対象となるDATABASEのURL。 HEROKU_POSTGRES_[COLOR]_URL を指定します。
- hour ... バックアップを実施する時間。午前9時の場合は '09'のように2桁で指定してください。
- timezone ... バックアップを実施する時間のタイムゾーン。
PDT
のような値を設定します。 PDTができるならJSTでもできるのでは?と試してみたのですが、JSTではコマンドが成功せずでした。
実行例: 日本時間 01:00 にDBバックアップを実行する
ターミナルから heroku pg:backups schedule を実行して
heroku pg:backups schedule HEROKU_POSTGRESQL_COBALT_URL --at '08:00 PDT'
以下のように出ると成功です。
Scheduled automatic daily backups at 08:00 PDT for HEROKU_POSTGRESQL_COBALT
設定されたスケジュールは pg:backups schedules
で確認できます。
実行すると以下のようになります。
heroku pg:backups schedules === Backup Schedules HEROKU_POSTGRESQL_COBALT_URL: daily at 8:00 (America/Los_Angeles)
まとめ
この変更によってDBのバックアップ方法が変更になりました。 本番環境でDBバックアップを取らない選択はないので、忘れずにスケジュールを設定しましょう。
4月10日追記:
heroku-postgresql のページ を見ているとプラン毎に保持できるバックアップの上限数(PGBackups Retained)が記載されていました。
- Hobby Dev ... 2
- Hobby Basic ... 9
- Standard * ... 25
- Premium * ... 50
だそうです。