サーバー移転しました。

当初は、元々持っていたサイトに間借りさせてたらかなり限界だったところを、さくらレンタルサーバーのプレミアムプランを新規契約して移設するという話を書こうと思っていましたが、それでもやっぱり限界だったようなので、つい昨日ビジネスプロを契約してそっちに再び移転したというお話です。

プレミアムプランは実に2ヶ月弱の運用でした。
初めからビジネスプロにしておけばよかったね…。

さて、iconDecotterは基本的に認証したユーザーは元アイコンを取得し、サーバーに保存しておくという仕様上、データ数・ディレクトリ数がかなり膨大になっていました。移転の時点で認証アカウント数が25万を超えていたので、実質それだけのディレクトリが存在しました。

ファイルシステムがたぶんext3なので、1階層あたりの限界数が32000らしいのですが、データフォルダは1階層を30000までの2段階にして回避しています。2階層しかないので理論上の限界は9億6000万アカウントですが、そこまでになることはまずないでしょう…。

それだけデータ数が多いととにかく移転が大変で、12月にやったプレミアムの時ですら、今の半分なのに数日掛かりでした。その時は、まずDBだけ先に新サーバー側にインポートして、新サーバー側でスクリプトを実行し、旧サーバーからデータを拾ってくる、といったことを定期的にcronで実行して移設しました。最後に、元サーバーをメンテ状態にした後最新のDBをインポートしなおし、差分のデータも再度拾って再開、という感じでした。

しかし、この方法で今回もやろうとすると、倍以上の時間がかかってしまうことが見込まれるため、なんとかもっと手っ取り早い方法はないものかと調べたところ、SSHでサーバー間データ同期をさせることが出来ると知りました。

【メモ】 サーバ間のファイルコピー(rsync+ssh) | mutter
rsync + ssh でファイルの同期をとる | レンタルサーバー・自宅サーバー設定・構築のヒント

rsyncコマンドで、dataディレクトリをそのまま新サーバーにコピーすればよい、と。
これはスクリプトでコピーするよりかなり早いので、前回よりも楽に移設できそうでした。
実際に実行したコマンドはこちら。

rsync -auz --update --progress /home/[user]/www/data [new_user]@xxx.xxx.xxx.xxx:/home/[new_user]/www

オプションについては割愛します。このコマンドで気を付けないとならないのは、コピー元のディレクトリの書き方です。上記のように、「data」で止めていると、コピー先のwwwディレクトリに「data」のディレクトリごとコピーします。しかし、「data/」のように書くと、wwwディレクトリに「dataの中身」を展開してコピーします。コピー先のディレクトリは「www」としても「www/」としても結果は同じようです。

さて、実際にコマンドを実行してみると、やはりディレクトリ数・データ数の多さで、コピー途中でSSHがタイムアウトしてしまいます。これについては回避策はなさそうでした…。幸いこれはデータ同期なので、タイムアウトしてもコマンドを打ち直せばデータの移行は再開出来ました。データ移行中に更新・追加されたデータも追いかけながらなので少々厄介でしたが、とにかくほとんどのデータについては半日かからず新サーバーに移設出来ました。

あとは、ドメインも新たにicondecotter.jpを取得して、元サーバーには301リダイレクトを設置して完了です。
今度こそあまり503の出ない環境になっていればいいな…。
これでダメならもう諦めるしかないです。

ちなみに。
さくらレンタルサーバーは、サーバーの契約一覧のところで「本登録」が済まないと、お試し期間となり同時アクセス数や転送量などに制限がかかった状態になっています。今回、移転直後に本登録をしてしまったので、再開後は少々重い状態になっていたのですが、1時間程度で本登録完了して正常動作するようになりました。
移転完了よりも前に本登録は済ませておくべきでしたね…。

コメント

  1. […] QAのリリースノートに綴ってますが、その辺りがサーバーの負荷対策のために右往左往していた時期で、元々持ってたサイトのサーバーに間借りしてたのを独立させたり、プランを変更したり、最終的にはレンタルサーバーではダメだということでVPSになったり。 […]

タイトルとURLをコピーしました