コンテンツにスキップ

リカバリー計画 (Disaster Recovery Plan)

本ドキュメントでは、Storeサイトのデータ破損や大規模な移行、あるいは長期間の連携停止が発生した場合の復旧シナリオを定義します。

シナリオA: Storeサイトのデータ消失・復元時

Storeサイトのデータベースをバックアップから復元した場合、Mainサイトとのデータの整合性が取れなくなる可能性があります(復元地点以降の更新が失われるため)。

対応手順

  1. Storeサイトの復旧: バックアップから復元。
  2. 不整合の許容と自然修復:
    • 次回の「サブスクリプション更新(支払い)」のタイミングで、StoreからMainへ通知が飛び、正しい期間に更新されます。
    • このため、即座に全データを修正する必要はありません。
  3. 強制更新が必要な場合:
    • ユーザーから「バッジが消えた」と申告があった場合のみ、Store管理画面で該当サブスクリプションを一時的に「保留 (On-hold)」→「有効 (Active)」にステータス変更することで、再通知をトリガーできます。

シナリオB: 連携キー (Secret Key) の漏洩

シークレットキーが第三者に知られた場合、偽のステータス更新リクエストを送られるリスクがあります。

対応手順

  1. 新しいキーの生成: より複雑なランダム文字列を生成します。
  2. Mainサイト (wp-config.php) 更新: 新しいキーを設定します(この時点で連携は停止します)。
  3. Storeサイト (wp-config.php) 更新: 新しいキーを設定します(連携再開)。
  4. 【オプション】アクセスログの調査:
    • Webサーバーのアクセスログで /wp-json/store-sync/v1/update-status への不審なIPからのアクセスがないか確認してください。

シナリオC: 全件データの再同期 (Resync)

Mainサイトのメタデータを誤って全削除してしまった場合など、ゼロからデータを構築し直す必要がある場合。

現状のツール

現在は「全件一括送信ボタン」はありません。

将来的な開発要件 (Development Request)

このような事態に備え、以下のスクリプトを開発することを推奨します。

Script: resync_all_subscriptions.php (Store側)

// 擬似コード
$subscriptions = wcs_get_subscriptions(['subscriptions_per_page' => -1, 'subscription_status' => 'active']);
foreach ($subscriptions as $sub) {
    $integrator = new SLM_Main_Integrator();
    $integrator->sync_status_to_main_site($sub);
    sleep(1); // 負荷軽減
}

※ 必要になった時点で、このロジックをプラグインに追加実装するか、WP-CLIコマンドとして実行してください。