メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://docs.jitera.ai/llms.txt

Use this file to discover all available pages before exploring further.

バックアップ対象コンポーネント

コンポーネントデータ優先度
PostgreSQL (Automation)アプリケーションデータ重要
PGVector PostgreSQL埋め込みベクトル重要
MongoDB / DocumentDB / Cosmos DBAI/チャットデータ重要
オブジェクトストレージファイル、エクスポート
Redisセッションデータ
設定Helm values
PostgreSQL は Automation データベースと PGVector データベースが別インスタンスです。Automation だけバックアップしても、PGVector の埋め込みベクトルは別途バックアップが必要です。MongoDB / DocumentDB / Cosmos DB はデプロイ構成によりいずれか 1 つを使用します。

PostgreSQL バックアップ

以下のコマンドは クラスター内(in-cluster)の PostgreSQL Pod を対象とした例です。マネージド PostgreSQL(RDS / Cloud SQL / Azure Database for PostgreSQL Flexible Server 等)を使用している場合は、クラウドプロバイダーのスナップショット機能(aws rds create-db-snapshot 等)を使用してください。PGVector も別 PostgreSQL インスタンスとして同じ手順を適用 します。

手動バックアップ

# PostgreSQL Podを取得
PG_POD=$(kubectl get pod -n jitera -l app.kubernetes.io/name=postgresql -o jsonpath='{.items[0].metadata.name}')

# バックアップを作成
kubectl exec -n jitera $PG_POD -- pg_dump -U jitera -Fc jitera > backup-$(date +%Y%m%d).dump

CronJob による自動バックアップ

apiVersion: batch/v1
kind: CronJob
metadata:
  name: postgres-backup
  namespace: jitera
spec:
  schedule: "0 2 * * *"  # Daily at 2 AM
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: backup
            image: postgres:15
            command:
            - /bin/sh
            - -c
            - |
              pg_dump -h jitera-postgresql -U jitera -Fc jitera > /backup/jitera-$(date +%Y%m%d).dump
              # Upload to S3/Azure
            volumeMounts:
            - name: backup
              mountPath: /backup
            env:
            - name: PGPASSWORD
              valueFrom:
                secretKeyRef:
                  name: jitera-postgresql
                  key: password
          volumes:
          - name: backup
            persistentVolumeClaim:
              claimName: backup-pvc
          restartPolicy: OnFailure

PostgreSQL のリストア

# バックアップをPodにコピー
kubectl cp backup-20240101.dump jitera/$PG_POD:/tmp/

# リストア
kubectl exec -n jitera $PG_POD -- pg_restore -U jitera -d jitera -c /tmp/backup-20240101.dump

MongoDB バックアップ

以下のコマンドは クラスター内(in-cluster)の MongoDB Pod を対象とした例です。マネージド MongoDB 互換サービス(AWS DocumentDB、Azure Cosmos DB for MongoDB 等)を使用している場合は、クラウドプロバイダーのスナップショット機能(aws docdb create-db-cluster-snapshot、Cosmos DB の continuous backup 等)を使用してください。

手動バックアップ

# MongoDB Podを取得
MONGO_POD=$(kubectl get pod -n jitera -l app.kubernetes.io/name=mongodb -o jsonpath='{.items[0].metadata.name}')

# バックアップを作成
kubectl exec -n jitera $MONGO_POD -- mongodump --out /tmp/backup

# バックアップをローカルにコピー
kubectl cp jitera/$MONGO_POD:/tmp/backup ./mongo-backup-$(date +%Y%m%d)

MongoDB のリストア

# バックアップをPodにコピー
kubectl cp ./mongo-backup-20240101 jitera/$MONGO_POD:/tmp/backup

# リストア
kubectl exec -n jitera $MONGO_POD -- mongorestore /tmp/backup

オブジェクトストレージのバックアップ

AWS S3

S3 バージョニングとクロスリージョンレプリケーションを使用します:
# バージョニングを有効化
aws s3api put-bucket-versioning \
  --bucket jitera-prod-automation \
  --versioning-configuration Status=Enabled

# レプリケーションを設定(宛先バケットが必要)
aws s3api put-bucket-replication \
  --bucket jitera-prod-automation \
  --replication-configuration file://replication.json

Azure Blob Storage

ソフトデリートとgeo冗長性を有効化します:
# ソフトデリートを有効化
az storage blob service-properties delete-policy update \
  --account-name jiteraprod \
  --enable true \
  --days-retained 30

MinIO バックアップ

# mc mirrorでバックアップ
mc mirror ./charts/jitera-automation backup/jitera-automation

設定のバックアップ

Helm Values のバックアップ

# 現在の値を取得
helm get values jitera -n jitera > values-backup-$(date +%Y%m%d).yaml

# バージョン管理にバックアップ
git add values-backup-*.yaml
git commit -m "Backup Jitera values"

シークレットのバックアップ

# シークレットをエクスポート(暗号化済み)
kubectl get secret -n jitera -o yaml > secrets-backup.yaml

# 安全に保管(保存前に暗号化)
gpg --encrypt --recipient ops@example.com secrets-backup.yaml

災害復旧

復旧目標時間

コンポーネントRTORPO
PostgreSQL1時間24時間
MongoDB2時間24時間
オブジェクトストレージ4時間1時間

復旧手順

  1. 新しいクラスターをプロビジョニング
    # 新しいnamespaceを作成
    kubectl create namespace jitera
    
  2. 設定をリストア
    # シークレットを適用
    kubectl apply -f secrets-backup.yaml
    
  3. バックアップ値でJiteraをデプロイ
    helm install jitera ./charts/jitera \
      -f values-backup.yaml \
      -n jitera
    
  4. データベースをリストア
    # PostgreSQL
    kubectl exec -n jitera $PG_POD -- pg_restore -U jitera -d jitera backup.dump
    
    # MongoDB
    kubectl exec -n jitera $MONGO_POD -- mongorestore /tmp/backup
    
  5. 機能を検証
    • すべてのPodが実行中であることを確認
    • データの整合性を検証
    • ユーザーログインをテスト

バックアップの検証

月次リストアテスト

  1. テスト環境を作成
  2. 最新のバックアップをリストア
  3. データの整合性を検証
  4. 重要な機能をテスト
  5. 結果を文書化

検証チェックリスト

  • バックアップファイルが存在し、読み取り可能
  • バックアップサイズが想定通り
  • リストアがエラーなく完了
  • アプリケーションが正常に起動
  • データが無傷でクエリ可能
  • ユーザー認証が動作

外部バックアップサービス

AWS 向け

  • AWS Backup: RDS、S3 の自動バックアップ
  • EBS Snapshots: ボリュームスナップショット

Azure 向け

  • Azure Backup: マネージドバックアップサービス
  • Azure Site Recovery: 災害復旧

サードパーティ

  • Velero: Kubernetes バックアップツール
    velero backup create jitera-backup \
      --include-namespaces jitera
    

保持ポリシー

バックアップ種別保持期間
日次7日間
週次4週間
月次12ヶ月
年次7年間

トラブルシューティング

バックアップ失敗

  1. Podのログを確認
  2. ストレージ容量を確認
  3. 認証情報を確認
  4. 接続性をテスト

リストア失敗

  1. バックアップの整合性を検証
  2. バージョンの互換性を確認
  3. エラーログを確認
  4. ターゲットがクリーンな状態であることを確認

関連ドキュメント

メンテナンス概要

バックアップ、リストア、定期メンテナンスタスク

モニタリング

Jitera Self-Hostedの稼働状況・メトリクス・アラート

トラブルシューティング

インシデント対応フローとよくある問題