クラスターとは?

クラスタークラスターとは、複数のコンピュータで1つの機能を実現することです。

なお、クラスターを構成する各コンピュータをノードと言います。

データベースの基礎知識
スポンサーリンク

クラスターの利点

クラスターの利点は、主に次の2つを向上させるためです。

  • パフォーマンス
  • 可用性 (継続的に稼働すること)

パフォーマンスの向上

複数のノード (コンピュータ) に処理を分散できるため、早く処理が終わります。

可用性の向上

1台が故障しても他のノード (コンピュータ) で処理を継続できます。

スポンサーリンク

クラスターを実現する技術

クラスターを実現する方法は、主に次の2つが存在します

シェアードエブリシング (シェアードディスク/共有ディスク)

シェアードエブリシングとは、各ノードが共通のストレージを利用する構成です。

シェアードナッシング

シェアードナッシングとは とは、各ノードストレージ等のリソースを共有しない構成です。
クライアントとデータベースサーバーの間にロードバランサーを置いたりする

シェアードナッシングでは、テーブルの情報を分割して各ノードに保存します。

https://www.digitalocean.com/community/tutorials/understanding-database-sharding より改変

このテーブルを分割する単位をシャードと呼びます。

シャーディング (シャードを各ノードに振り分ける方法) は、次の3つがあります。

  • Key Based Sharding
  • Range Based Sharding
  • Directory Based Sharding

Hash Base Sharding (Key Based Sharding)

Hash Base Sharding とは、指定したカラムのハッシュ値を元にレコードをシャードに振り分ける方法です。

以下の図は COLUMN1 に対してハッシュ関数を利用して、シャード1、2のどちらかにレコードを割り当てています。

https://www.digitalocean.com/community/tutorials/understanding-database-sharding

ハッシュ値のとりうる値 = シャードの数です。

Range Based Sharding

Range Based Sharding とは、値の範囲ごとにレコードをシャードに振り分ける方法です。

以下の例では、PRICE カラムの値を元に3つのシャードに振り分けています。

https://www.digitalocean.com/community/tutorials/understanding-database-sharding

Directory Based Sharding

Directory Based Sharding は、カラムでシャードを指定することで、レコードをシャードに振り分ける方法です。

以下の例では、DELIVERY ZONE カラムで振り分けるシャードを指定しています。

スポンサーリンク

高可用性 (HA) クラスターの種類

高可用性 (HA) クラスターは、次の2種類が存在します。

  • アクティブ/パッシブ構成 (アクティブ/スタンバイ、フェイルオーバークラスター)
  • アクティブ/アクティブ構成 (ロードバランスクラスター)

アクティブ/パッシブ(アクティブ/スタンバイ)構成とは

アクティブ/パッシブ構成とは、いくつかのノードを待機状態にして、障害時に切り替えて処理を引き継ぐことで可用性を向上させるクラスター構成です。

アクティブ/パッシブ構成の動作は以下のとおりです。

アクティブ/パッシブ構成は、パッシブ側の状態によって次のように分かれます。

コールドスタンバイにする理由は、待機中のデータベースライセンス費をカットできることです。その代わり、障害が発生してからデータベースを起動するため、切り替えが遅くなります。

アクティブ/アクティブ構成とは

アクティブ/アクティブ構成とは、通常時は全てのノードを稼働させパフォーマンスを向上し、障害発生時は残ったノードで処理を継続することで可用性を向上させるクラスター構成です。

アクティブ/アクティブ構成の動作は以下のとおりです。

アクティブ/アクティブでは、アクティブ/パッシブとは異なり正常時は両方のノードが稼働します。

障害時は残ったノードに負荷が集中する点については注意が必要です。

また、複数のノードがほぼ同時に書き込みを行うと、後から書き込んだノードに上書きされることを防ぐために以下の対策があります。

  • シェアードディスク:行ロック
  • シェアードナッシング:シャーディング

最後に

関連記事

データベースの基礎知識

参考記事

MySQL5.7入門(バックアップ編)
https://downloads.mysql.com/presentations/20151208_01_MySQL_Backup_for_Beginners.pdf

MySQL 5.7入門(レプリケーション編)

https://downloads.mysql.com/presentations/20151207_02_MySQL_Replication_for_Beginners.pdf