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およびリードレプリカに分断して、双方のオペレーションの性能を向上させるのに寄与する。

この記事が気に入ったらサポートをしてみませんか?