新しいサーバーへの移行 — スペックを上げたり、OS・回線を変更したりするとき
利用中のサーバーのスペック、OS、回線(ゾーン)は後から変更できません。より高いスペックが必要な場合や、OS・回線を変更したい場合は、新しいサーバーを受け取ってデータを移す必要があります。順番どおりに進めれば、サービスをほとんど止めずに移行できます。
全体の手順
- 新しいサーバーを注文 — 既存のサーバーは、移行が終わるまでそのままにしておきます。 有効期限が近い場合は、先に延長しておいてください。
- データを移す
- 新しいサーバーで正しく動作するか確認
- 接続先アドレスを変更(ドメインの接続先の変更、ゲームサーバーなら新しいIPの案内)
- 既存のサーバーを整理
Linux → Linux: サーバー間で直接コピー (rsync)
自分のPCを経由せずにサーバー同士で直接コピーすると速いです。両方のサーバーにrsyncをインストールします。
sudo apt install -y rsync
新しいサーバーに接続して、既存のサーバーのフォルダーを取得します。usernameとold-server-ipは、既存のサーバーの接続情報に置き換えます。(既存のサーバーのパスワードを聞かれます)
rsync -avz --progress username@old-server-ip:/home/username/my-folder/ ~/my-folder/
- フォルダーのパスの末尾の
/までそのまま書くことで、フォルダーの「中身」が移されます。 - 既存のサーバーをSSHキーでのみログインできるように変更している場合は、パスワードでは接続できません。その場合は、いったん自分のPCにダウンロードしてから、新しいサーバーにアップロードしてください。(ファイルのアップロードとダウンロード)
- 途中で切れても、同じコマンドをもう一度実行すれば続きからコピーします。
一緒に移す必要があるもの
- DB — 既存のサーバーでバックアップファイルを作成し、新しいサーバーに取り込んで復元します。
# 既存のサーバーで
sudo mysqldump --all-databases > ~/db-all.sql
# 新しいサーバーで(先にDBをインストールしておきます)
rsync -avz username@old-server-ip:/home/username/db-all.sql ~/
sudo mysql < ~/db-all.sql
.envのような設定ファイル — アプリのフォルダーごと移した場合は、一緒に移されます。隠しファイルなので、ls -aで確認してください。- 予約タスク — 既存のサーバーで
crontab -lで一覧を確認し、新しいサーバーでcrontab -eで再登録します。 - Nginxの設定 —
/etc/nginx/sites-available/にある自分の設定ファイルを移します。HTTPSの証明書は移さずに、ドメインを新しいサーバーに接続してから新たに発行するのが簡単です。 - 実行方法 — pm2・systemdで動かしていたプログラムは、新しいサーバーで同じ方法で再登録します。(自分で作ったWebアプリをサーバーにデプロイする)
マインクラフトサーバー
- 既存のサーバーのコンソールで
stopを実行し、サーバーを完全に停止してから移します。起動したままコピーすると、ワールドが壊れることがあります。 - サーバーフォルダーを丸ごと移します。(
world、plugins、server.propertiesなどをすべて含む)
rsync -avz --progress username@old-server-ip:/home/username/minecraft/ ~/minecraft/
- 新しいサーバーにJavaをインストールして実行します。(マインクラフトサーバーを作る (Java版、Paper・バニラ))
Windowsサーバー
- 移すフォルダーを圧縮(右クリック → 圧縮)してから、いったん自分のPCにダウンロードし、新しいサーバーにアップロードする方法が最も簡単です。(ファイルのアップロードとダウンロード)
- ゲームサーバーなら、既存のサーバーのプログラムを停止してから圧縮してください。
接続先アドレスを変更する
- ドメインを使っている場合は、ドメイン管理サイトでAレコードを新しいサーバーのIPに変更します。変更したアドレスが行き渡るまで、数分から数時間かかることがあります。その後、新しいサーバーでHTTPSの証明書を発行します。(Webサイトを立ち上げる)
- IPで接続するゲームサーバーなら、友だちや利用者に新しいIPを知らせてください。
既存のサーバーを整理する前のチェックリスト
- 新しいサーバーでサービスが正常に動作することを確認しましたか?
- 既存のサーバーにしかないファイルが残っていませんか? 最後にもう一度バックアップしておいてください。
- 既存のサーバーは延長しなければ有効期限の後に停止・終了し、終了したサーバーのデータは復元できません。