レプリケーションってなんぞや?(初心者編)


レプリケーション?そんなのわからないよ

初めて聞く人にも説明させて頂きます

レプリケーションとはストレートに日本語訳すると複製ですね。
ではレプリケーション(複製)とはデータベースの分野で言うと、Aのデータベース(MySQL)があるとしてまったく同じBのデータベースをレプリカを複製するということですね。

ではなぜこんなことするのか?

(意外に情報として既に周知されてるので僕みたいなビギナーは当初はなぜだかわからなかったです。ですのでくどいですが説明させて頂きます。)

レプリケーションを利用した場合以下のことができます
 
データをリモートサイトに転送(ディザスタリカバリ等に利用)
 
データのフルバックアップを取得(マスターサーバの負荷軽減と手順の簡素化)
 
スタンバイサーバ(マスターサーバがクラッシュした際に切り替える。ただし、データの転送は非同期なので、マスターがクラッシュした場合にはデータが少し失われる可能性があります。)
 
参照系クエリの負荷分散スレーブを多数用意することで、参照系のクエリを、ロードバランサーを用いて負荷分散させる
ではマスターとスレーブってなに?
  • マスターサーバとは 複数のスレーブをもてるのもマスターの特徴 マスターで変更した内容をスレーブに転送すること データの変更

*スレーブサーバとは
マスターでの変更内容を受け取る
変更内容をデータベースに反映
スレーブは1つのマスターのみ持てる

レプリケーションのメリット

参照性能の向上
参照処理の負荷が高い場合は、スレーブサーバを追加することで、負荷分散による性能向上が実現できる

高可用性構成の実現
マスターの障害時に、スレーブをマスターに昇格することで高可用性を実現可能

地理的冗長性の実現
地理的に離れた場所に、災害対策サイトを構築可能
NW経由で離れたロケーションでマスタースレーブ構成を構築可能

バックアップサーバとしての利用
スレーブサーバでバックアップを取得することで、マスターサーバに影響を与えずにバックアップを取得可能
-例)マスターサーバは常時かどうさせつつ、スレーブサーバでDBを停止してコールドバックアップを取得する

マスターとスレーブに歴史が関わり、呼び名について論争が10年前からあるので暇なときに拝見して見ては面白いと思います。押下してもらえればリンク飛べます。