• PostgreSQL

    pg_cronで定期的にデータを削除する

    pg_cronはその名の通り、PostgreSQL上でcronベースのジョブスケージュールを行う拡張です。ちなみにMySQLではちゃんと調べていないですがイベントスケジューラというものが標準で搭載されているらしいです。

    コレを使えば定期的にデータを削除できます。例えば、ログテーブルの古いデータを削除するとか。

    今回はGoogle CloudのAlloy DBを使う前提です。使用可能拡張のページがあり、そこをみると問題なく利用できます。設定が必要で、 alloydb.enable_pg_cron を有効にする必要があります。設定変更のために20分ぐらいのダウンタイムが生じます。またこれはpg_cron側の設定ですが、 cron.database_name でデータベースを、cron.timezone でタイムゾーンを変更できます。

    あとはpg_cronの公式ドキュメント通りに対応すればよいです。

    -- 00:00(JST) SELECT cron.schedule('auth-delete-logs', '0 15 * * *', $$DELETE FROM logs WHERE created_at < now() - interval '90 days'$$); -- 削除するときは下記 -- SELECT cron.unschedule('auth-delete-logs');

    ログはできればCloud Logging使ったほうがいいと思う。