プログラマーのメモ書き

伊勢在住のプログラマーが気になることを気ままにメモったブログです

PGBackupsアドオン廃止に伴いPostgreSQLのバックアップを設定

[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のバックアップを設定 の記事中に昔の画面キャプチャが残っていたので、比べてみてください)。

無料枠で使わせてもらってるので、バックアップがあるだけでもありがたいです、はい。