web-dev-qa-db-ja.com

MySQLマルチマスターレプリケーションとMySQLCluster

高速で多くの接続をサポートするMySQLデータベースが必要です。ほとんどの接続は読み取りのみですが、一部は読み取り/書き込みです。すべての接続は、少なくともいくつかのデータを読み書きする必要があります。

実験専用のテストサーバーが4台あります。当初はマルチマスターを計画していましたが、MySQLClusterについて少し読みました。いくつか質問があります:

  1. MySQL ClusterはRAMのみですか?パンフレットにはディスクテーブルがサポートされていると記載されていますが、独自のドキュメントでもサポートされていない場合があります。停電。

  2. MySQL Clusterは、マルチマスターよりも信頼性が高くなりますか?停電により、マルチマスターのインストールが絶望的に​​同期しなくなるのではないかと心配しています。停電などの障害からスムーズに復旧できることが、マルチマスター以外のことを考える主な理由です。

  3. 一時テーブルを使用する方法はありますか?私のアプリケーションはいくつかの一時テーブルを使用していますが、MySQLClusterがそれらをサポートしていないことがわかります。永続テーブルを一時的なものとして使用する以外の回避策はありますか?

  4. いつでもデータノードを追加および削除できますか?サービスを中断することなく?

2
Brad

あなたの質問に答えるために(彼らはマニュアルでも答えられています。)

  1. MySQL Cluster(ndb)は、すべてのインデックスを常にメモリに保持します。その場合、データ構造とアクセスパターンが最適化されます。それらは(オプションで)ディスクに書き込むこともできます。インデックス付けされていないデータはディスクに保存でき、必要に応じて読み取られます(そしてキャッシュされます)。一般に、データベースの場合、ワーキングセットをメモリに保持するのに十分なメモリがあると便利ですが、クラスタはこれに関して少し厳密です。
  2. MySQL/Oracleは、MySQL Clusterを99.999%の実現可能性としてアドバタイズします。信頼性の多くはソフトウェアではなく環境にあることに注意してください。スイッチまたは電源が切れると、クラスター全体がダウンする可能性があります。 MySQL Clusterには、ノードがダウンして戻ってきた場合に機能を維持し、同期するための非常に優れたルーチンがあります。 MMRでこれを適切に行うのは少し手間がかかりますが、行うこともできます。
  3. 1あたり。MySQLClusterはRAMのデータでうまく機能するので、おそらくそれらにもndbを使用できます。あるいは、実際のデータとユースケースによっては、一時テーブルを独立して保持することもできます。さまざまなMySQLサーバー。ndbがメモリテーブルよりも太いことを示すベンチマークがあります(ベンチマークは常に存在します)。
  4. はい、MySQL Clusterの最近のバージョンでは、ノード構成をオンラインで変更したり、テーブル構造をオンラインで変更したりすることもできます。どちらもMMRではより複雑です。

MySQL Clusterについては良いことを言っても、私はまだ注意したいのですが、MySQL Clusterにはいくつかの制限があります。たとえば、MySQL ClusterでJOIN操作を実行すると、現在非常に遅いです。次のバージョンではこれを修正する予定です(「プッシュダウン結合」を探してください)。そのため、セットアップ時に注意し、クラスターに移動する前にいくつかのテストを実行して、ニーズに合っているかどうかを確認する必要があります。

2
johannes