バックアップと復元

AppCotton は「ライセンス」「プラン」「注文」「アクティベーション履歴」など、
販売事業の中核となるデータ を扱います。

そのため、万が一に備えた バックアップと復元の運用ルール が重要です。


1. バックアップ対象となるデータ

データベース(必須)

テーブル名内容重要度
appcotton_productsプロダクト定義★★★
appcotton_product_plansプラン/価格/アクティベーション上限★★★★★
appcotton_licensesライセンスキー / 有効期限 / 所有者★★★★★
appcotton_license_activationsドメイン認証履歴★★★★☆
appcotton_ordersStripe注文情報(Webhook反映済)★★★★☆

これらが揃って初めて ライセンス利用状況が復元できます。

外部サービス側のデータ

サービス内容保全方法
Stripe価格定義(Price)・決済履歴・顧客情報Stripe 側が保持(削除しないこと)
メール配信基盤メールテンプレート・通知履歴エクスポート推奨

2. 推奨バックアップ方法

WordPress 全体をまとめてバックアップ(推奨)

項目推奨理由
データベース全体ライセンス・ユーザー情報は DB に保存
wp-content/plugins/appcottonバージョン差異による DB 構造不一致を防ぐ
テーマ / 他プラグインマイページ UI に影響

自動バックアップを設定する

項目推奨頻度ツール
DB毎日UpdraftPlus / Xserver自動バックアップ
Webサイト全体週1BackWPup / JetBackup など
Stripe 設定エクスポート月1Stripe Dashboard > Data

3. 復元の手順

前提

  • 復元先の WordPress / PHP / AppCotton バージョンは、バックアップ時と同等に合わせる。

手順

  1. WordPress + DB のバックアップを同時に復元する
    (片方だけ復元すると整合性エラーが起きやすい)
  2. 管理画面へログイン
  3. AppCotton → 「設定」 → データベース修復(Repair Database) を実行
    → テーブル構造の差異がある場合、自動で補正します
  4. 必要であれば、Stripe Webhook の送信先 URL が正しいか確認
  5. ライセンス検証をテストする

4. 復元後に確認すべきチェックリスト

確認項目期待される状態
ライセンス一覧が表示できるエラーなしで一覧がロードされる
任意のライセンス詳細が開けるアクティベーション履歴が表示される
マイページで自分のライセンスが見えるログイン紐付けが維持されている
Stripe Webhook が「受信成功」状態checkout.session.completed が 200 で返る
新規購入が実行できるCheckout → Webhook → ライセンス発行まで通る

Webhook が通らない場合、購入は成功してもライセンスが発行されません。


5. よくある復元ミスと対策

症状原因対策
ライセンス一覧が空になるappcotton_licenses テーブル未復元DBを再度完全にインポート
アクティベーション数がリセットされるappcotton_license_activations 未復元activation テーブルも含めて復元
ライセンスが「未認証」になるドメイン正規化ルールが異なるAppCotton のバージョンを揃える
決済は成功するのにライセンスが作られないWebhook未到達Stripe Dashboard → Webhookログを確認

6. バージョン管理とリリース方針

項目運用原則
AppCotton の更新本番適用前にステージングで動作確認
DB構造変更(Migration)アップデート時に自動実行されるが、バックアップが必須
SDK / 利用プラグイン側の互換性破壊的変更は事前告知とリリースノートで明記

まとめ

要素優先度ポイント
DBバックアップ★★★★★ライセンス資産の根幹
Stripe データ★★★★☆決済履歴・アップグレード履歴の整合性
Webhook★★★★☆購入 → ライセンス反映の生命線
Repair DB 機能★★★★☆復元後の整合性確保に使う
バックアップは「復元して初めて成功」。
月1回は必ずテスト用環境で復元リハーサルを実施してください。