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使ったほうがいいと思う。