1. バックアップの概要
業務管理システムのデータベースは、毎日午前3:00に自動でバックアップされています。
万が一、データが消えたり壊れたりした場合でも、過去のバックアップから復元できます。
バックアップの保管場所
| 保管場所 | 保持期間 | 用途 |
|---|---|---|
| VPSサーバー内 | 直近 7日分 | すぐに復元(高速) |
| さくらオブジェクトストレージ | 直近 30日分 | 長期保管(外部) |
3-2-1原則に準拠
- 3つのコピー: Supabase本体 / VPS / オブジェクトストレージ
- 2種類の媒体: クラウドDB / ファイルストレージ
- 1つはオフサイト: さくらオブジェクトストレージ(別拠点)
2. バックアップの確認方法
バックアップが正常に動作しているか確認したい場合は、担当者(峠)にご連絡ください。以下の内容を確認いたします。
VPSローカルのバックアップ
直近7日分のファイルが保存されているか、ファイルサイズが正常か
オブジェクトストレージのバックアップ
直近30日分のファイルが外部保管されているか
バックアップログ
エラーが発生していないか
3. 復元が必要になったら
以下のような場合にデータの復元が必要になります。
データの誤削除
システム障害
セキュリティ被害
復元作業について
復元作業は担当者(峠)が行います。データの復元が必要と思われる場合は、すぐにご連絡ください。復元するデータの日付(いつ時点のデータに戻したいか)をお伝えいただけると、スムーズに対応できます。
4. 復元手順(技術者向け)
# Step 1: VPSに接続
ssh ubuntu@49.212.131.156
# Step 2: バックアップ一覧を確認
ls -lh /var/backup/
# OSSから取得する場合(7日〜30日前)
s3cmd ls s3://kowa-db-backup/
s3cmd get s3://kowa-db-backup/supabase_YYYYMMDD_HHMM.dump /var/backup/
# Step 3: ダンプファイルの整合性を確認
/usr/lib/postgresql/17/bin/pg_restore --list /var/backup/supabase_YYYYMMDD_HHMM.dump | head -20
# Step 4: 既存データをクリア(publicスキーマのみ)
PGPASSWORD='****' psql \
-h aws-1-ap-northeast-1.pooler.supabase.com \
-p 5432 -U postgres.kahfuhrjujzvazhvyjey -d postgres \
-c "DO \$\$ DECLARE r RECORD; BEGIN FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = 'public' AND tablename != '_prisma_migrations') LOOP EXECUTE 'TRUNCATE TABLE public.' || quote_ident(r.tablename) || ' CASCADE'; END LOOP; END \$\$;"
# Step 5: バックアップからデータを復元
/usr/lib/postgresql/17/bin/pg_restore \
-h aws-1-ap-northeast-1.pooler.supabase.com \
-p 5432 -U postgres.kahfuhrjujzvazhvyjey -d postgres \
--data-only --schema=public --no-owner --no-privileges \
/var/backup/supabase_YYYYMMDD_HHMM.dump
# Step 6: 動作確認
# ブラウザで https://src-taupe-sigma.vercel.app にアクセスし、
# 業者一覧・工事一覧・請求金額入力画面が正常に動作するか確認
5. 手動バックアップ
大きな変更を行う前など、定期バックアップ以外にバックアップを取りたい場合は、担当者にご連絡いただくか、以下のコマンドで手動実行できます。
bash ~/backup/backup_supabase.sh
6. トラブルシューティング
バックアップファイルのサイズが 0 になっている
Supabaseへの接続に失敗した可能性があります。バックアップログ(~/backup/backup.log)を確認してください。
また、Supabase Freeプランは7日間操作がないとDBが一時停止されます。Supabaseダッシュボードでプロジェクトの状態を確認してください。
オブジェクトストレージにファイルがない
さくらオブジェクトストレージのアクセスキーが無効化されていないか確認してください。さくらのクラウドコントロールパネルからアクセスキーの状態を確認できます。
復元時にバージョン不一致エラーが出る
pg_restoreのバージョンがSupabase(PostgreSQL 17)と一致していない可能性があります。/usr/lib/postgresql/17/bin/pg_restore を使用してください。
7. お問い合わせ
復元作業が必要な場合や、バックアップに関するご不明点がございましたら、以下までご連絡ください。
担当: 峠 悠介
メール: y.touge.rec@gmail.com