MySQLクラスタの構成について調べる
かつてはInnoDBクラスタが主に使われていたと思っていたが、調べるとNDBクラスタなるものが登場していたので、今一度調べなおしてみた。
NDB Cluster
公式はこちら。
シェアードナッシング システムでインメモリ データベースのクラスタリングを可能にするとある。
シェアードナッシング
Act/Actのシステム冗長構成の一つで、すべてのノードが処理に必要な資源をすべて自ら備えて独立している
スケールアウトが難しい共有資源がないため、柔軟に性能拡張することができる
データはノード間で分散して保持する場合と、ノード間で同じデータを同期する場合がある
インメモリデータベース
主記憶上でデータを管理するデータベース
NDB Clusterでは「NDB (Network DataBase)」と呼ばれるインメモリのクラスタストレージエンジンとMySQLサーバを統合して構成される。つまりNDBといった場合はクラスタストレージエンジンを指し、NDB Clusterといった場合に加えてMySQLサーバとの統合を指す。
NDB Clusterの仕組みによって、NDBに対してある特定のMySQLサーバが書き込みを行うと、他のMySQLサーバはその結果を即座に参照することができるようになる。
InnoDB Cluster
公式はこちら。
従来から採用されているMySQLクラスタの構成の仕方。少なくとも以下のコンポーネントで構成される
Primary MySQL Server
読み書きが行えるMySQLサーバ
Secondary MySQL Server
PrimaryからGroup Replication機能によって複製された読み取りのみが行えるMySQLサーバ
Primaryが動作できなくなった時にフェイルオーバされて、Primaryに昇格できる。リードレプリカとは別
MySQL Router
アプリケーションが実際にアクセスするエンドポイント。
これに加えてオプションにてリードレプリカを利用することができる。リードレプリカは以下の目的で利用される読み取り専用のMySQLサーバだ。
読み取りのスケールアウト
Primary-Secondaryのデータ更新に依存せずに完全なバックアップの作成
Primary-Secondaryのパフォーマンスに影響を与えずにデータ分析を実施
InnoDB ClusterはすべてのMySQLサーバがPrimaryである、「マルチプライマリモード」もサポートしている。
MySQL RouterはSQLクエリを見て、適切なMySQLサーバにクエリをルーティングするサーバである。書き込みはPrimaryに、そして読み込みはSecondaryおよびリードレプリカに分断して、双方のオペレーションの性能を向上させるのに寄与する。
この記事が気に入ったらサポートをしてみませんか?