MetabaseをHerokuで使って、10000行を超えて無料の限界が来たときの対処法

cloud

タイトル通り、MetabaseをHerokuで使っていたら、Herokuからメールが飛んできた。

放置すると、ダッシュボードが使えなくなってしまうので、7日以内に対応が必要らしい

とりあえず原因が知りたいので、Herokuで使われているPostgres SQLに、PG Commanderからアクセス(※)し、片っ端からテーブルをSELECTしてみた。
※ 認証情報は、
heroku config -a {アプリ名}を実行すると知ることができる。
DATABASE_URL: {ユーザー名}:{パスワード}@{ホスト名}:{ポート番号}/{DBスキーマ名} のフォーマットで確認可能。

どうやら、task_historyテーブルというテーブルに9000行以上のレコードが入っていたので、こいつが原因ぽい。

metabaseはオープンソースなので、ソースコードを読んでみると、データベースとの同期をした際のログを取っているっぽい。
どこで使っているか知らないが、必要なさそうなのでレコードを削除してみたら動いた。

ERROR: Heroku Database Exceeded 10,000 Rows #11802というissueでもコミッターが「 You can truncate those tables, but always make a backup first!」と言っているので、まあ消しても大丈夫なんだと思う。

対応手順まとめ

  1. (初回のみ)PG Commanderをインストール
  2.  metabaseの使用するDBの認証情報をheroku config -a {アプリ名}で調べる
  3. PG Commanderを使い、認証情報を入力してDBにアクセス
  4. SELECT * FROM task_historyを実行し、結果をエクスポートすることでバックアップを取る
  5. DELETE FROM task_historyを実行

まとめるとこんな感じでした〜。

cloud

Posted by kyogom