[heroku] PostgreSQLのバックアップを設定 で書いたように、herokuのPostgresのバックアップは PGBackups というアドオンでやってました。
ところが、これが2015/4からPostgresの機能の一部に統合されて、アドオンとしての提供がなくなりました。
https://blog.heroku.com/archives/2015/3/11/pgbackups-levels-up
遅ればせながら、新しいバックアップシステムへの切り替えを行ったので、作業時のメモを残しておきます。
heroku toolbelt のアップデート
新しいバックアップシステムを使う際は、CLIコマンドも新しくなっています。このため、まずはheroku toolbelt をアップデートします。
現在のバージョンを確かめると
mor@T105-PandRDev:~/work/projects/pandr/vehicle$ heroku version heroku-toolbelt/2.39.0 (x86_64-linux) ruby/1.9.3 mor@T105-PandRDev:~/work/projects/pandr/vehicle$ mor@T105-PandRDev:~/work/projects/pandr/vehicle$ dpkg --list | grep -i heroku ii heroku 2.39.0 Client library and CLI to deploy apps on Heroku. ii heroku-toolbelt 2.39.0 A metapackage for working with the Heroku platform. mor@T105-PandRDev:~/work/projects/pandr/vehicle$
となってました。手順どおりアップデートをしてみると
mor@T105-PandRDev:~/work/projects/pandr/vehicle$ heroku update
! To update this version of the Heroku client please use
! `apt-get install heroku-toolbelt`
mor@T105-PandRDev:~/work/projects/pandr/vehicle$
と言われたので、apt-getから更新します。
mor@T105-PandRDev:~/work/projects/pandr/vehicle$ sudo apt-get update mor@T105-PandRDev:~/work/projects/pandr/vehicle$ sudo apt-get install heroku-toolbelt パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下のパッケージが自動でインストールされましたが、もう必要とされていません: linux-headers-3.2.0-29 linux-headers-3.2.0-29-generic これらを削除するには 'apt-get autoremove' を利用してください。 以下の特別パッケージがインストールされます: heroku 以下のパッケージはアップグレードされます: heroku heroku-toolbelt アップグレード: 2 個、新規インストール: 0 個、削除: 0 個、保留: 506 個。 1,638 kB のアーカイブを取得する必要があります。 この操作後に追加で 0 B のディスク容量が消費されます。 続行しますか [Y/n]? y 取得:1 http://toolbelt.heroku.com/ubuntu/ ./ heroku-toolbelt 3.37.2 [666 B] 取得:2 http://toolbelt.heroku.com/ubuntu/ ./ heroku 3.37.2 [1,637 kB] 1,638 kB を 6秒 で取得しました (254 kB/s) (データベースを読み込んでいます ... 現在 227988 個のファイルとディレクトリがインストールされています。) heroku-toolbelt 2.39.0 を (.../heroku-toolbelt_3.37.2_all.deb で) 置換するための準備をしています ... heroku-toolbelt を展開し、置換しています... heroku 2.39.0 を (.../archives/heroku_3.37.2_all.deb で) 置換するための準備をしています ... heroku を展開し、置換しています... heroku (3.37.2) を設定しています ... heroku-toolbelt (3.37.2) を設定しています ... mor@T105-PandRDev:~/work/projects/pandr/vehicle$
一応確認
mor@T105-PandRDev:~/work/projects/pandr/vehicle$ dpkg --list | grep -i heroku ii heroku 3.37.2 Client library and CLI to deploy apps on Heroku. ii heroku-toolbelt 3.37.2 A metapackage for working with the Heroku platform. mor@T105-PandRDev:~/work/projects/pandr/vehicle$
問題なさそうです。
スケジュールバックアップの設定
やっておくことは、スケジュールバックアップの設定です。スケジュール時刻を指定しない方法(--atオプションなし)でもできるのですが 、UTCで夜中の時刻に設定されるので、日本時間だと日中になります。なので、ここでは、時刻を指定した形でスケジュールを指定します。
mor@T105-PandRDev:~/work/projects/pandr/vehicle$ heroku pg:backups schedule --at '04:00 Asia/Tokyo' HEROKU_POSTGRESQL_CHARCOAL_URL Scheduled automatic daily backups at 04:00 Asia/Tokyo for HEROKU_POSTGRESQL_CHARCOAL mor@T105-PandRDev:~/work/projects/pandr/vehicle$ mor@T105-PandRDev:~/work/projects/pandr/vehicle$ heroku pg:backups schedules === Backup Schedules HEROKU_POSTGRESQL_CHARCOAL_URL: daily at 4:00 (Asia/Tokyo) mor@T105-PandRDev:~/work/projects/pandr/vehicle$
問題なさそうですね。念のため、スケジュールも確認しておきます。
mor@T105-PandRDev:~/work/projects/pandr/vehicle$ heroku pg:backups schedules === Backup Schedules HEROKU_POSTGRESQL_CHARCOAL_URL: daily at 4:00 (Asia/Tokyo) mor@T105-PandRDev:~/work/projects/pandr/vehicle$
なお、スケジュールを指定する際に、時間を1桁で入力すると受け付けてくれません。
mor@T105-PandRDev:~/work/projects/pandr/vehicle$ heroku pg:backups schedule --at '4:00 Asia/Tokyo' HEROKU_POSTGRESQL_CHARCOAL_URL Invalid schedule format: expected '<hour>:00 <timezone>' mor@T105-PandRDev:~/work/projects/pandr/vehicle$
参考
herokuのpostgresのバックアップのドキュメントを見ると、1週間分しか保持されないようです。
これは、以前のPGBackup アドオンのAuto-one Week Retention に該当しそうですね。Auto-One Month Retention に該当するバックアップは、devプランではできなくなったようですね ([heroku] PostgreSQLのバックアップを設定 の記事中に昔の画面キャプチャが残っていたので、比べてみてください)。
無料枠で使わせてもらってるので、バックアップがあるだけでもありがたいです、はい。