10分で作る、MySQL Cluster

2017/5/31

わーすーです。

今回はMySQLのクラスタについてです。
概要を細かくお話しするととても一回じゃ収まらないので、
今回はいかに簡単に作れるかに焦点をあててみたいと思います。

とはいえ何が何だか分からないと思いますので、まずは簡単に概要をお話しします。

▼MySQL Clusterとは

MySQL Clusterは分散型のリアルタイムデータベースです。
複数のホストを使ってシステムを構成し、全体で一つのRDBMSを提供します。
一番の特徴としてMySQL Clusterでは共有ディスクや共有メモリを必要としません。
そのため単一障害点が存在せず、他の共有ディスク型のクラスタシステムと比較して耐久障害性が高くなります。

MySQL Clusterには3種類のノードが存在します。
構築の際も各ノードの設定を順番に行っていきます。
・管理ノード → クラスタ全体の管理や設定を行う
・データノード → データを格納する
・SQLノード → クライアントから発行されたSQLを解析する

mysql1.png

▼ノード間でデータ連携をとる仕組み

MySQL Clusterでは共有ディスクを使わずに「フラグメント」の仕組みを使ってノード間で連携を取っています。
・テーブルのデータは行ごとに「フラグメント」に割り振られている
・どのフラングメントに属するかは、ハッシュ関数で一意的に決まる
・データの冗長性を実現するために、フラグメントは複数のノードに複製される

mysql15.png

データノード1がダウンした場合でも処理を継続することができる。
※ノードグループの中に一つでも生き残っているノードがあれば停止を免れることができます。

mysql16.png

さらに補足ですが、MySQL Clusterはそもそも通常のMySQLとは別製品でエンジンも違います。
MySQL Cluster はNDBCLUSTERストレージエンジンが組み込まれており、
NDB APIというプロトコルを使っています。

mysql2.png


以上、簡単ですが概要です。早速構築してみます。

▼構築

今回は最小構成とし管理ノード、データノード、SQLノードをすべて同じホストに構築します。

1.ユーザー、グループ作成

mysql3.png

2.MySQL Clusterインストール
・アーカイブファイルの展開
※今回はredhat6.5にMySQL Cluster7.4.6をインストールします。

mysql4.png

・展開したファイルを移動し、リネーム

mysql5.png

3.クラスタデータ用のディレクトリ作成
 2ノード分の管理ディレクトリデータディレクトリ、SQLディレクトリを作成します。

mysql6.png

4. my.cnfの作成
 2ノード分の設定ファイルを作成します。

mysql7.png

5.データベースの作成
 2ノード分のデータベースを作成します。

mysql8.png

6.クラスター設定ファイル作成
 管理ノード用の設定ファイルを作成します。

mysql9.png

7. 管理ノードの起動
 作成したファイルを読み込みます。
 クラスタの管理にはndb_mgmdコマンドを使用します。

mysql10.png

8. データノードの起動
・データの読み込み

mysql11.png

・サービスの開始

mysql12.png

9. SQLノードの起動

mysql13.png

10.確認
・SQLノードの接続確認

mysql14.png

これで完成です。
OracleのRACと比べて簡単で早くできます!

今回はすべてのノードを同じOS内に設定しました。
実際はデータノードを2台、4台、、、と増やして冗長性を高くすると思いますので
ぜひやってみて下さい。

Standby Expressに関するお問合わせ

  • TEL 042-333-6217
  • FAX 042-352-6101
  • LINE
  • Mail