[事例紹介]逆境からのWORDPRESSサーバ移行

お客様名:社会福祉法人 愛光 様

1.経緯

当方神戸市、お客様は千葉県佐倉市という遠方ですが、当社がサーバサービスの代理店になった旨ブログをご覧になって連絡をいただきました。
当初の問い合わせは、既存webサーバのサービスが終了するということで、移転先を検討しておられ、当社の代理店としてのサポートをご希望とのことでした。
ホームページのデータ移行が必要だったのですが、サーバ事業者の移行サービスを利用するとのご意向だったので、当社としては契約の取次を行い、事業者に引き渡す予定でした。

ところが、実際の移行フェーズになってどうにもうまく行かない、ということで当社の方でサポート業務を行うことになりました。
ヒアリングを進めていくと、サーバ事業者:「移行作業を行ったが、途中で失敗したのであとお客様でヨロシク」(超意訳)ということらしく。。
Webの専門家がやって失敗したものを、お客様が引き継ぐというのもなんともハードモードだなと思いつつ、当社の業務はスタートしました。

2.インポートができない!?

WORPRESSで構築したWebだったので、一括移行のプラグインを使えば便利かなと思い、旧環境にインストールを試みるも・・・ できない! ダウンロードエラーから始まり、何とか手動ダウンロードによる設置を行うも、SSLセッションエラー。。
おそらくWORDPRESSのバージョンが古かったりメンテ不良だったりで、あまり挙動がよろしくない様子。よくあることなのですが、私は手入れされてない庭に雑草が生えてきているようなビジュアルを感じています。

さて、仕方ないので、見切りをつけて正攻法で挑みます。
WORDPRESSのデータは、ファイル+DBで構成されているのですが、ファイルコピーは正常にできている模様。となると、DBの対応が必要になります。
ちなみに、DBとは比喩表現によるなんちゃってDBではなく、本当にRDBMSであるMySQLのインスタンスが起動しています。

こういう画面を使って作業を進めます🔽

* 画面はテスト環境のものと差し替えてあります。

お客様から預かったデータをインポートすると・・・ うん、確かにエラーになる。
2GBを超えると、まずアップロードエラーになります。
オンプレミスでシステムインフラを触っていた私としては、渋い仕様だなと思いつつも、zip圧縮ファイルでも可能とのことなので、とりあえずそれでアップロードはできました。
しかし、実際にインポートを実行すると、タイムアウト! やはりデータが大きすぎるようです。

3.データ解析

ここで、インポートデータの解析が始まります。
中身を開くと、SQL文でした。
テーブル定義(CREATE TABLE~)から始まり、INSERT文で中身が記述されてます。
仕方ないので、2GBのSQL文をバラしてテーブルづつimportする作戦に切り替えます。
10テーブルぐらい流すも、アレ、一瞬で終わる?? などとやっていたら最後にwp_Hitsなる巨大テーブルがあり、中身を見るとアクセス履歴のようなものが延々と書かれています。
これだけで全容量の99%以上を占めています。
思い切ってテーブルごと諦めて捨てましたが、挙動に影響はない様子。。
こういうものは結果オーライで臨むしかありません。

WORDPRESSの巨大DBのインポート作業と思ったら正味10MBだったというオチ。
しかも容量の99%を占めている巨大テーブルが別にいらんやつだったという。。
インポート文を紐解いていって、最低限定義系のテーブルだけは救い、トランザクション系は溢れるようなら一部捨てることを覚悟していましたが、結果的に大丈夫でした。

久しくCUIの世界から離れていましたが、基本的な技術って結構変わってないですね。
クラウドの時代だと何だの言っても、プラットフォームが変わっただけで、中で動いているサービスは意外とクラシカルだったりするようです。

ここでようやく、動作確認に移れます。
旧環境のphpバージョンが古いらしく、新環境で実行すると「バージョン違うよ」的なWARNINGが出ます。
さりとて、旧環境はもはやアップデート不可。
functions.phpを触って、エラー出力を強制的に止めます。

error_reporting(0);

1行足すだけで対処できました。
本当はよくないのですが、新Web稼働までのつなぎということだったので対症療法で乗り切ります。

そんなこんなで、何とか旧サーバのサービス停止に間に合った次第です。
結果的に対応にご満足いただき、月額コンサルティングサービス(困ったときに相談できる窓口)のご契約もいただくことができました。

今回は純粋に技術的な対応でしたが、たまにはこういう仕事もよいものです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です