MySQL は標準の機能に非同期型のマスター/スレーブ型のレプリケーションを備えています。様々な用途に応用が利くため大変人気の高い機能の一つです。
レプリケーションを利用すると、以下のようなレイアウトのシステムが構築可能です。
- データをリモートサイトに転送(ディザスタリカバリ等に利用)
- データのフルバックアップを取得(マスターサーバの負荷軽減と手順の簡素化)
- スタンバイサーバ(マスターサーバがクラッシュした際に切り替える。ただし、データの転送は非同期なので、マスターがクラッシュした場合にはデータが少し失われる可能性があります。)
- 参照系クエリの負荷分散スレーブを多数用意することで、参照系のクエリを、ロードバランサーを用いて負荷分散させる。
レプリケーションは非同期ですがほとんどタイムラグはありません。
各スレーブの内容はほぼ同じなので、どのスレーブを参照しても、ほぼ同じデータを取得できます。
メリット | デメリット |
---|---|
・MySQL 標準機能を使用するため、手・軽かつ安価で構築可能 ・参照系の負荷分散やバックアップ用途に有効 | ・更新系、参照系を分けて運用する場合にはアプリケーションの改変が必要 ・MySQLレプリケーションは非同期のため、マスター/スレーブ間でデータ遅延が伴う。 ・マスター障害時は大幅なダウンタイムが発生する。 |
MySQL レプリケーションの基本構成
- マスターは常時処理を行うデータベースである。
- スレーブはマスターのレプリケーション(複製)として機能する。
- スレーブはバックアップや参照系として構築する場合が一般的に多い。
MySQL レプリケーションの障害発生時の切り替わり
- スレーブ1に障害が発生
⇒ スレーブ2へ再接続 - マスターに障害が発生した場合、復旧するには手動でスレーブ1または2を切り替えることになるため復旧に数時間かかる場合もある。
MySQLレプリケーションの拡張構成
- スレーブ1,2,3,4・・・・・を拡張させていく(複数台構築)
- MySQL データベースの台数を増やすことで参照処理能力向上が図れる。