私はMySQLのMySQLデュアルマスターレプリケーションを行っています。各サーバーには21 GBのメモリがあり、現在このプロジェクトのクラスタリングソリューションを探しています。6つのサーバーを持つことができます。そのうちの2つに20 GBのRAMおよび10 GBのRAMを備えたその他。MySQLClusterのドキュメントには、合計メモリと各ノードのRAMの式が下に記載されています。さらに多くのRAM私の既存のレプリケーションの、そして私の会社にこの種のRAM=要件に同意させるのは難しいです。クラスタリングの目的は、大きなサーバーを(リソース内で)小さくする代わりに)サーバーは相互に接続されていますが、この式では、クラスタリングの各ノードが既存のサーバーよりもはるかに大きくなっています。
完全に新しいデータベースを設計する場合は、次の計算を使用して、データノードのおおよそのメモリサイズ要件を決定できます。
•(メモリ内)データサイズ*レプリカ* 1.25 =合計データベースメモリ要件例:50 GB * 2 * 1.25 = 125 GB
•(データサイズ*レプリカ* 1.25)/ノード= RAM Per Node例:(2 GB * 2 * 1.25)/ 4 = 31.25 GB
この状況では、いくつか質問があります。
クラスタ化されたソリューションを評価するときは、アプリケーションの読み取り/書き込みプロファイルを検討し、それを利用可能なソリューションと照合する必要があります。
アプリケーションの読み取りベースのプロファイルが多い場合、MySQLマスター-マスターレプリケーションセットアップから複数のMySQLレプリカを作成することで、読み取りをスケールアップできます。
プロファイルの書き込みが多い場合は、マスターとマスターのレプリケーションで明らかな選択肢のいくつかを実装しています。
クラスター化されたMySQLオプションから選択する場合、2つのテクノロジーオプションがあります。Percona(XtraDBクラスター)とMariaDB(MariaDBクラスター)のNDBベースのOracle MySQLクラスターとGaleraベースのオプション、およびGalera Cluster for MySQLです。それらは異なる方法で設計され、異なる長所と短所があります。
区別に関する優れたウェビナーはここにあります:
前述の式は、主にNDBクラスターのノードごとの予測要件を測定する際に使用されます。もともとMySQL Cluster(以前のNDB Cluster)はメモリのみのデータベースであり、すべてのデータを使用可能なノードのメモリに常駐させる必要がありました。すべてのデータをメモリに保持する必要がある場合、RAMですべてのデータを保持するのに十分ではなかった場合は、ハードウェアに関してプロビジョニングが不十分です。
現在、MySQLクラスタの各ノード、つまりデータノードは、MySQLインスタンスです。最適なパフォーマンスのためにデータをメモリに保持する必要がありますが、それは必須ではありません。したがって、基本的には、式に「従わない」場合、最終的にディスクにドロップダウンし、ノードで使用可能な特定のハードウェアのすべてのIOパフォーマンスを処理する必要があります。