コンテンツにスキップ

移行

データの整合性を保ったまま、あるノードから別のノードにサービスを移行します。移行タスクはソースノードとターゲットノード間でバックアップ、停止、リストア、起動、DNS 更新の各ステップを調整します。

設定

移行中に引き継がれるデータ項目は、data_protectbackuprestore の両方のアクションを持つ必要があります。migrate で宣言します:

name: my-app
nodes:
  - main

data_protect:
  data:
    - name: uploads
      backup:
        strategy: files.copy
        include:
          - ./data/uploads
      restore:
        strategy: files.copy
        include:
          - ./data/uploads

migrate:
  data:
    - name: uploads
キー必須説明
namestringはいバックアップとリストアの両方のアクションを持つ data_protect.data[].name を参照する必要があります。
enabledboolいいえこの項目の移行を有効または無効にします。

移行の実行

Web UI:

  1. サービス詳細ページを開きます。
  2. 移行コントロールを使用してソースノードとターゲットノードを選択します。
  3. 移行 をクリックします。

CLI:

composia service my-app migrate --source main --target edge-1 --wait --follow --timeout 30m

移行手順

  1. データのエクスポート — 設定された各データ項目について、ソースノードでバックアップタスクを実行します。
  2. ソースインスタンスの停止docker compose down を実行し、Caddy 設定を削除します。
  3. ソースでの Caddy リロード — ソース Caddy インスタンスからプロキシエントリを削除します。
  4. ターゲットでのデータリストア — 各データ項目について、ターゲットノードでリストアタスクを実行します。
  5. ターゲットでのデプロイdocker compose up -d を実行し、Caddy 設定を同期します。
  6. ターゲットでの Caddy リロード — ターゲット Caddy インスタンスにプロキシエントリを適用します。
  7. DNS の更新 — DNS レコードをターゲットノードに向けるよう更新します。
  8. 設定の書き込みcomposia-meta.yamlnodes を更新し、Git にコミットします。

注意点

  • サービスはソースノードにデプロイされている必要があり、ターゲットノードはオンラインである必要があります。
  • 移行には短時間のダウンタイムが発生します。オフピーク時間に実行してください。
  • 整合性を確保するため、データ転送前にソースインスタンスが停止されます。
  • データベースの場合はエクスポート戦略(database.pgdumpall / database.pgimport)を使用してください。

ロールバック

状態のロールバックは現在 Web UI でのみ利用できます。移行タスクの詳細を開き、失敗したステップに合う復旧アクションを選択してロールバックを開始します。

アクション説明
deploy_source元のソースノードにサービスを再デプロイします。
stop_targetターゲットノードのサービスを停止してクリーンアップします。
rollback_dnsDNS レコードをソースノードへ戻します。

CLI にはまだ task rollback コマンドがありません。次のコマンドで移行タスクを確認し、進行状況を追跡できます:

composia task wait --follow --timeout 30m <task-id>

関連項目

最終更新日 • alexma233