移行ガイド

rsyncでVPSデータを安全に移行する

rsyncを使い、通常のファイルシステムデータを送信元VPSからSSH経由で宛先へ段階的にコピーします。その後、書き込みを短時間止め、最終同期を行い、アプリケーションを検証し、ロールバック経路を保ったまま通信を切り替えます。rsyncは汎用のライブマイグレーションツールではありません。データベース、コンテナ、起動ファイル、デバイス、秘密情報、稼働中のキューは、アプリケーションを理解した方法で扱う必要があります。

重要情報

転送方法
認証済みSSH経由のRsync
最初の作業
データを一覧化して予行実行
整合性
最終実行時に書き込みを停止または静止
安全な標準設定
初回移行では`--delete`を使わない

コピー前に一覧化する

アプリケーションファイル、所有者、ACL、拡張属性、データベース、秘密情報、定期ジョブ、サービス、ファイアウォール規則、DNS、証明書、外部ストレージを一覧化してください。宛先の容量が十分であり、利用者、ファイルシステム、OSパッケージ、アプリケーションの版に互換性があることを確認します。切り替え前にDNS TTLを短くするのは、その変更がDNS計画に合う場合だけにしてください。キャッシュされたレコードは想定より長く残る場合があります。

送信元の独立したバックアップを作り、検証します。最初の転送中は送信元を変更せず、利用可能な状態に保ってください。保守時間を告知する前に、成功判定とロールバック判断を定義します。

  • /proc/sys/dev/runなどの仮想ファイルシステムを通常データとしてコピーしない。
  • 必要に応じて、データベース固有のバックアップ、複製、ダンプ用ツールを使う。
  • 秘密鍵をコマンド履歴や共有メモに決して残さない。

予行実行でアプリケーションデータを段階的にコピーする

/srv/app/のようなディレクトリでは、送信元からsudo rsync -aHAX --numeric-ids --info=progress2 --dry-run -e "ssh -i /root/.ssh/migration_key" /srv/app/ admin@DESTINATION:/srv/app/を実行して操作を試します。利用者、鍵のパス、宛先、データのパスを置き換えてください。末尾の斜線は、ディレクトリ階層を一つ増やすのではなく、送信元ディレクトリの内容をコピーすることを意味します。

すべてのパスとエラーを確認してください。遠隔アカウントが宛先へ安全に書き込めることを確認します。rootログインは不要で、多くの場合無効です。予行実行の結果が正しければ、--dry-runを外して同じコマンドを実行します。ディレクトリを同じにするという理由だけで--deleteを追加しないでください。送信元または宛先を誤ると、重要なデータを削除する可能性があります。

  • 大規模転送では永続的な端末セッション内でコマンドを実行する。
  • コピーが本番通信に影響する場合は帯域を制限する。
  • 移行記録にコマンドオプションとツールの版を残す。

書き込みを静止して最終実行する

アプリケーションを文書化した保守状態または読み取り専用状態にします。対応する手順で正確な書き込みサービスを停止し、最終データベースバックアップまたは複製を完了してください。同じrsyncコマンドを再実行し、変更されたファイルデータだけを転送します。検証が完了するまで保守状態を維持してください。

意図した構成で宛先のサービスを起動し、可能なら最初は外部アクセスを制限します。状態、ログイン、書き込み、キュー、証明書、ログ、依存先を確認してください。試験に通った後でのみDNSまたは経路を更新します。複合リスクを明示的に受け入れない限り、同じ時間枠でアプリケーションの版とホスティング所在地の両方を変更しないでください。

  • 最終書き込み停止時刻と同期結果を記録する。
  • ファイル所有者と強制アクセス制御を確認する。
  • DNS切り替え中は旧・新両方のエンドポイントを監視する。

検証、観測、ロールバック維持

より詳しくファイルを比較するには、適切な時間帯に元のrsyncコマンドへ--checksum --dry-runを付けて実行します。チェックサムは両方のデータセットを読み、高負荷になる場合があります。データベースとオブジェクトストレージでは、アプリケーションレベルの整合性検査を優先してください。切り替え後は、エラー、遅延、リソース使用量、バックグラウンドジョブ、外部コールバックを監視します。

ロールバック期間が終わるまで送信元をそのまま維持し、スプリットブレインの書き込みを防いでください。その後、保存・安全な削除計画に従います。バックアップ、監視、文書、復旧手順が宛先を参照するようになって初めて、移行は完了です。

出典

  1. rsync公式マニュアルページ
よくある質問

よくある質問

稼働中のデータベースをrsyncで安全にコピーできますか?

稼働中のデータベースをファイルとしてコピーすると、整合性を失う場合があります。そのデータベースが対応するダンプ、バックアップ、スナップショット連携、複製手順を使ってください。

`--delete`を使うべきですか?

初回移行では使わないでください。後で必要になった場合も、まず--delete --dry-runで実行し、両方のパスを確認して、復旧可能なバックアップを維持します。

権限が変わったのはなぜですか?

宛先利用者の権限が不足している、数値IDが異なる、宛先ファイルシステムが同じACLまたは属性に対応していない可能性があります。切り替え前に互換性を確認してください。