Beyond‘s blog

IT/Webの技術

【データ移行】Webサイトを新しいサーバー環境へ移行する

以前、お客様より、このようなご相談をいただきました。

現在契約しているIDC(Internet Data Center)から、サーバー設備の老朽化と事業の再編に伴い、サービス終了の緊急通知が届いた。

そのため、約2週間で現在のサーバー環境から、新しいサーバー環境へデータを移行する必要があり、そのサポートをお願いしたい。

これはつまり、「移行期限を過ぎると、既存のサーバー環境は強制停止・削除され、Webサイトや各種リソースに一切アクセスできなくなる」という深刻な状況でした。

① 旧サーバー環境と稼働サービスの分析、移行準備

この緊急事態を受けて、弊社では以下の計画を立案し、サーバー移行作業を進めました。

通常、サーバー移行の前には、IDCが提供する、Webコンソールから以下の情報を把握します。

  • サーバー構成(サーバーリージョン、OSバージョン、IPアドレス、DNS、CPU、メモリ、ディスク、ネットワーク帯域幅など)
  • データベース、SSL、CDN、ドメインなどのリソース有無

しかし、今回の旧サーバー環境は特殊で、Webコンソールにアクセスできない状況だったため、お客様(および先方の開発エンジニア)との徹底的なヒアリングを実施しました。

その結果、当該システムはPHPで開発された、WeChat 公式アカウントとオンライン決済機能を持つ、特定業界向けのUGCサイト(ユーザー投稿型サイト)であることが判明しました。

旧サーバー環境の調査結果

さらに詳細な調査により、当該のWebサイトおよびサーバー環境の、おおよその構成を把握しました。

項目 構成 内容
サーバー環境 OS CentOS 7.9.2009
CPU 4core
メモリ 8GB
システムディスク 40GB
データディスク 200GB
ネットワーク帯域幅 10Mbps(シングル回線)
ソフトウェア環境 Webサーバー Nginx 1.24
データベース MySQL 5.7.44
プログラミング言語 PHP 7.4
キャッシュ Redis 6.2
ファイル転送 FTP(vsftpd)
管理ツール phpMyAdmin 5.1
WAF ModSecurity
SSL証明書 あり
コントロールパネル 宝塔面板(Pagoda Panel)

② 旧サーバー環境へSSHツール(Xshell)でログイン

弊社のエンジニアで Xshell を使用し、SSH経由で旧サーバーへのログインを試みましたが、接続できませんでした。さらに、ローカルの cmd コマンド(TCP/IP)でもアクセスできない状態でした。

調査の結果、IDCのサーバールームで使用されている回線プロバイダーが撤退しており、China Mobile 回線のみが残っていることが判明しました。

最終的に弊社では、China Mobile 回線を利用した、一時的な「中継サーバー(Linux の踏み台サーバー)」を用意し、Xshell で中継サーバーに接続した後、ssh root@127.0.0.1 コマンドで、旧サーバーにログインする方法で接続を確立しました。

# ssh conntect old linux server
ssh root@192.168.1.2
# write old server 192.168.1.2 pwd

③ 旧サーバー環境のバックアップ(プログラム + データベース)

中継サーバー経由で旧サーバーに接続し、サーバーデータ、プログラムソースコード、データベースを圧縮・パッケージ化しました。

まず、システムディスクおよびデータディスクのディレクトリ構造・容量を確認し、移行対象の範囲とサイズを把握しました。

# ディスクを表示 
[root@MyCloudServer ~]# df
# ディレクトリ一覧を表示 
[root@MyCloudServer ~]# ls /path/to/directory
# CPU を確認する 
[root@MyCloudServer ~]# ls lscpu
# すべてのデータベースをバックアップする
[root@MyCloudServer ~]# mysqldump -u[アカウント名] -p --all-databases | gzip > /path/to/backup_file.sql.gz
# 単一のデータベースをバックアップする
[root@MyCloudServer ~]# mysqldump -u[アカウント名] -p[パスワード] [データベース名] > /path/to/backup_file.sql

④ 旧サーバー環境から中継サーバーへのデータ一括転送

もう一つの課題は、旧サーバーには定期的なバックアップや監視を担う、専任担当者がいなかったことです。

また、お客様は Alibaba Cloud、AWS などのクラウドプラットフォームではなく、低価格なローカルIDCのサービスを利用していたため、セキュリティや運用コストが考慮されていませんでした。

その結果、サーバーのバックアップ機能が不足しており、Webサイトのプログラム容量は160GBあるにもかかわらず、利用可能なバックアップ容量は40GBしかありませんでした。

そこで弊社はバッチ処理方式で、優先度の高いデータから順に処理しました。

  1. PHPソースコードとMySQLデータベースをパッケージ化し、検証用サーバーへ転送
  2. 画像などの大容量ファイルを一括パッケージ化して転送
  3. Webサイトのデータと、サーバーログをまとめて移行
  4. Nginx、MySQL、PHP 設定を含む、サーバー全体をパッケージ化し完全転送
# 圧縮パッケージを転送する
[root@MyCloudServer ~]# scp /local/path/backup.tar.gz username@remote_host:/remote/path/
# 転送ディレクトリ
[root@MyCloudServer ~]# scp -r /local/directory/ user@remote_host:/remote/path/

⑤ データの整合性確認とバックアップ

IDCが提供する回線は、1本の China Mobile 回線のみだったため、大量データのダウンロード中に転送速度が低下したり、切断が発生することがありました。

そのため、弊社では以下の対策を取りました。

  • Webサイトのプログラム部分を細かく調査し、転送の優先度とサイズをリスト化
  • データの転送状況を継続的に監視
  • 複数回バックアップを取得し、データを照合・確認

また、データ紛失を防ぐため、弊社では一時的に中継サーバー上にテスト環境を構築し、データの完全性を検証しました。特にデータベース転送では、回線切断によるデータ欠落や文字化けに注意しました。

それから、おおよそ3日間の作業を経て、旧サーバーから中継サーバーへの完全移行を実現。テスト環境でデータの完全性とWebサイトの正常動作を確認しました。

その後、本番公開用の新サーバー環境を設計・構築し、画像データの最適化(重複削除、圧縮、未使用画像の削除)を実施した上で、新サーバー環境へ移行し、本番公開することになりました。

これにより、お客様は喫緊のサービス終了という危機を、無事に乗り越えることができました。

余談:なぜ急な、IDCのサービス終了が起きるのか

今回のお客様が、元々利用していたIDCは、中国国内の小規模なローカルIDCでした。

本来、IDCの運営には、ラック賃料、電気代、回線費用、ハードウェアの調達、メンテナンス、人件費など、多額のコストが掛かります。

しかし現在は、Alibaba Cloud をはじめとするグローバルクラウドプラットフォームが、低価格でサービスを提供しているため、小規模なIDCでは価格競争で対抗できなくなっています。

その結果、今回の事例に登場する、競争に敗れたIDCは、急遽サービスを終了することになったようです。

まとめ

新しいサーバーを契約・利用する際は、信頼性の高いIDCや、グローバルクラウドプラットフォームを選択することを推奨します。

特に、オンライン決済やデータのセキュリティが求められるプロジェクトでは、以下のような、グローバルクラウドプラットフォームが適しています。

  • Alibaba Cloud:中国や世界各国で広く利用
  • AWS:日本や欧米で実績が豊富

これらは、世界中に分散されたIDCにより、安定したアクセス、ネットワークの冗長化、データの安全性が保証されています。

企業のデジタル化や海外展開、越境貿易といった需要に対しては、グローバルに対応できるクラウドプラットフォームが有利と言えます。

関連サービス

ホームページ制作 https://beyond-shenzhen.cn/service/website
クラウド構築 https://beyond-shenzhen.cn/service/server

 

ホームページ制作、クラウド構築のことなら

 

弊社へのお問い合わせについて

  • ▼ 企業WeChat公式アカウント▼

  • ▼ WeChatで担当者に直接連絡 ▼

お気軽にお問い合わせください

CONTACT

お気軽にお問い合わせください

WeChat 公式アカウント