heroku の pgbackup のリビジョンは 1000 を超えた時にどうなるのか 


heroku の postgres アドオンには バックアップ機能がついていて、各バックアップ毎に自動で`r015``r016``r017`...みたいなリビジョン番号がつく。

このバックアップ番号、1000を超えた時にどうなるのか気になったので検証してみた。

## 検証方法

pgbackup の操作方法は別途まとめました。

http://qiita.com/mikakane/items/4c024d6963d452a60daf


上記でも記述したように、通常、herokuスケジューラは1日に一回しか自動でバックアップを作ってくれない。

なので１日に１回以上のバックアップが必要な場合、手動でなり自動でなり`capture`コマンドを叩く必要がある。

せっかくなのでコレもherokuで叩かせたかった。

### herokuでherokuコマンドを使う

通常herokuの管理ではherokuコマンドを使うが、herokuコマンドはherokuインスタンス上ではデフォルトで有効になっていない。

heroku には`herokuAPI`というのがあってある程度の操作はAPIベースで行えるものの、herokuコマンド上でできる全ての操作ができるわけではないっぽい？

なので今回は以下の野良ビルドパックを利用させてもらいました。

https://github.com/gregburek/heroku-buildpack-toolbelt

マルチビルドパック構成で上記を突っ込むとheroku上でherokuコマンドが叩けます。

ただしコマンドのパスは`vendor/heroku-toolbelt/bin/heroku`となり、普通に`heroku`と打ってもエラーになるので注意。

あとはドキュメントにもアルように、`heroku config:set`で認証情報を登録していきます。

````
$ heroku config:add HEROKU_TOOLBELT_API_EMAIL=my-fake-email@gmail.com
$ heroku config:add HEROKU_TOOLBELT_API_PASSWORD=`heroku auth:token`
````

herokuコマンドがheroku dyno上で利用可能になったら、後はschedulerの10分毎タスクに以下のコマンドを大量に突っ込むだけ。

````
$ vendor/heroku-toolbelt/bin/heroku pg:backups capture -a appname
````

バックアップのタスクは重複して登録されても問題ありません。

これでものすごい勢いでバックアップが生成されていきます。概ね20タスクくらい登録しておけば一晩で1000くらい超えます。

## 結論

とりあず頑張って一晩で検証してみました。

````bash:
$ heroku pg:backups
=== Backups
ID     Backup Time                Status                               Size   Database
-----  -------------------------  -----------------------------------  -----  --------
b1148  2015-10-26 23:58:15 +0000  Completed 2015-10-27 00:02:42 +0000  298MB  DATABASE
b1147  2015-10-26 23:58:14 +0000  Completed 2015-10-27 00:02:44 +0000  298MB  DATABASE
b1146  2015-10-26 23:58:04 +0000  Completed 2015-10-27 00:02:36 +0000  298MB  DATABASE
b1145  2015-10-26 23:57:56 +0000  Completed 2015-10-27 00:02:35 +0000  298MB  DATABASE
b1144  2015-10-26 23:57:20 +0000  Completed 2015-10-27 00:02:12 +0000  298MB  DATABASE
b1143  2015-10-26 23:57:04 +0000  Completed 2015-10-27 00:01:45 +0000  298MB  DATABASE
b1142  2015-10-26 23:56:59 +0000  Completed 2015-10-27 00:01:32 +0000  298MB  DATABASE
b1141  2015-10-26 23:56:13 +0000  Completed 2015-10-27 00:00:12 +0000  298MB  DATABASE
### ....中略
b1108  2015-10-26 23:32:48 +0000  Completed 2015-10-26 23:35:57 +0000  298MB  DATABASE
b1107  2015-10-26 23:32:31 +0000  Completed 2015-10-26 23:35:58 +0000  298MB  DATABASE
b1106  2015-10-26 23:32:22 +0000  Completed 2015-10-26 23:36:06 +0000  298MB  DATABASE
b1105  2015-10-26 23:30:01 +0000  Completed 2015-10-26 23:33:17 +0000  298MB  DATABASE
b1104  2015-10-26 23:29:57 +0000  Completed 2015-10-26 23:33:17 +0000  298MB  DATABASE
b1103  2015-10-26 23:29:13 +0000  Completed 2015-10-26 23:32:43 +0000  298MB  DATABASE
b1102  2015-10-26 23:28:08 +0000  Completed 2015-10-26 23:32:00 +0000  298MB  DATABASE
b1101  2015-10-26 23:27:42 +0000  Completed 2015-10-26 23:31:43 +0000  298MB  DATABASE
b1100  2015-10-26 23:27:14 +0000  Completed 2015-10-26 23:31:23 +0000  298MB  DATABASE
b379   2015-10-26 14:47:11 +0000  Failed 2015-10-26 14:51:03 +0000     298MB  DATABASE
````

4桁になるみたいです。

なんか一つ`Failed`って奴がずっと残っていて、削除されずに残り続けています…謎です。

ちなみにこいつはWeb画面からDownloadすることはできませんでした。どうしたいのか謎です。

### 注意

この手の検証をしてるとHerokuAPIのリクエスト制限か何かで、HerokuのWeb管理画面などがめちゃくちゃ重くなったりするので注意が必要です。

あまり真似しないほうがいいかもしれません。