サーバ

サーバのバックアップ

今日はサーバのバックアップについて考えてみます。
自分がWebデザイナーだとすると、納品して、バックアップを一定期間とっておけば仕事は終わりですが、大規模なサイトの管理者だとすると、バックアップを忘れるわけにはいきません。

まず、一般的なサイトではサーバにはWebサーバとDBサーバの2種類を使う事が多いです。
それぞれのバックアップの種類から考えてみましょう。

デザイナー

まず、バックアップにはいくつかの手段があります。

1.アーカイブ
後で参照するためにデータのエクスポートを行い、固めて保存しておく方法です。
アーカイブデータは一般的に、後から変更できません。
また、インポート前のアーカイブは通常のデータのように利用する事もできません。

2.バックアップ
一方、バックアップは、現在の状態、もしくはすぐに利用できるようにしたデータのコピーです。
主な利用方法はシステム障害時などに障害前の状態に戻すといった事に使います。

・フルバックアップ
すべてのファイルをまとめてバックアップするのがフルバックアップです。
全てのデータが揃っているので安心ですが、エクスポート、インポート共に時間がかかります。

・差分バックアップ
一方、差異だけバックアップするのが差分バックアップです。
差分だけなので処理も早いです。

3.レプリケーション
インターネットを経由し、別々のサーバ間でデータをリアルタイムにコピーする(レプリカを作る)方法をレプリケーションと呼びます。
元のサーバー(マスター/プライマリ/1台目)と同じデータを2台め(もしくは3台目以降/スレイブ/セカンダリ)のサーバが持ち、仮に1台目がダウンしてもシステムには影響ありません。
ただ、バックアップと違って不具合のある状態がコピーされてしまうと自動では戻りません。
また、常時同期し合うため、ネットワークやシステムに常時負荷がかかる事になります。
メイン稼働しているサーバ(マスター)と同等のサーバ(スレイブ)を使うので、その分サーバ費用が倍倍で増えます。

とあるシステムに障害が起こり代替に切り替わるのをフェイルオーバーと言いますが、安定してレプリケーションされているシステムのフェイルオーバーはユーザーには見えないのが理想的です。

1つのマスターに対し、1つ(もしくは複数)のスレイブが複製を行うのをマスタースレーブ方式といい、わりとメジャーです。
また、固定のマスターに限らず、いずれかのサーバが他のサーバに複製をリクエストして差分を分配する方式を複数プライマリ、もしくはマルチマスター方式などと呼びます。

4.ミラーリング
サーバから見てインターネットを経由せず、ローカル接続された別のサーバ間で同期する方式をミラーリングと呼びます。
CentOSのサーバでは最初からlsyncd、rsyncという機能があり、わりと設置が楽です。
lsync(Master)、rsync(Slave )をそれぞれ有効化し、lsyncに何か更新があれば、rsync側にミラーリングを指示します。

 

個人的に意見を述べれば、障害の起きないシステムというのはありえず、起きた時にどうするか、という対処が重要なのかと思います。
その昔、インターネットの大部分が趣味の集まりであった頃、サーバの不具合やシステムのバグは互いに大目に見て情報交換していたものですが、
Webサイトの管理を職業とする人が現れ始めてからは「どうせネットだし」という事も言いづらくなってきています。
これをインターネット業の発展と見るか、柔軟性を失ったと見るかは人次第でしょうか。

コメントを残す

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