---
name: operating-backup
description: データベースのバックアップ・リストアを実行。AWS Backup による自動バックアップ、SSH トンネル経由の手動バックアップ、スナップショットからのリストア。バックアップやリストア、データ復旧時に使用。
---

# バックアップ・リストア

データベースのバックアップ・リストアを実行します。

## Instructions

### 1. AWS Backup（自動バックアップ）

`Backup = "true"` タグが付与された RDS インスタンスに対して日次・週次でスナップショットを自動取得する。

| ルール | スケジュール | 保持期間 |
|--------|-------------|---------|
| daily | 毎日 JST 0:00 | 7 日 |
| weekly | 毎週日曜 JST 0:00 | 35 日 |

### 2. 手動バックアップ（SSH トンネル経由）

踏み台サーバー経由で RDS に接続し、スキーマ単位のバックアップを実行する。

```bash
# SSH トンネルを確立
ssh -L 5432:<RDS エンドポイント>:5432 ec2-user@<踏み台 IP> -i <キーペア>.pem

# スキーマ単位でバックアップ
PGPASSWORD=<パスワード> pg_dump -h 127.0.0.1 -p 5432 -U <ユーザー名> -d <DB 名> -n <スキーマ名> -Fc -f <スキーマ名>_backup.dump
```

### 3. リストア

```bash
# pg_restore によるリストア
PGPASSWORD=<パスワード> pg_restore -h 127.0.0.1 -p 5432 -U <ユーザー名> -d <DB 名> --clean --if-exists <ダンプファイル>
```

### 4. AWS Backup からのリストア

1. AWS コンソール → AWS Backup → バックアップボールト → リカバリポイントを選択
2. 「復元」をクリック → リストア先の DB インスタンス識別子を指定
3. リストア完了後、アプリケーションの接続先を切り替え

> **注意**: AWS Backup からのリストアは新しい RDS インスタンスとして作成されます。

### 5. 基本例

```bash
# 「データベースをバックアップして」
# 「SMS スキーマをバックアップして」
# 「バックアップからリストアして」
```

### 関連スキル

- `operating-deploy` : デプロイ前のバックアップ確認
- `operating-provision` : AWS Backup リソースのプロビジョニング
