web-dev-qa-db-ja.com

自動フェイルオーバーを備えたMySQL H.A

MySQLにはさまざまな高可用性ソリューションがあります。現在のすべての実装の違いを教えてください。現在最新の実装を次に示します。

  • MySQLグループレプリケーション(Oracleによる)
  • MySQL NDBクラスター(Oracleによる)
  • Galera Cluster(Galeraによる)
  • XtraDBクラスター(Perconaによる)
  • MySQLファブリッククラスタ(Oracleによる)
  • MySQL Orchestrator(Githubによる)

自動フェイルオーバーを備えた高可用性セットアップで推奨されるオプション(またはその他のオプション)は何ですか? (同期レプリケーションを使用したSQL Server DBミラーリングと同等のもの)

3
Kedare

Galera == PXC == MariaDB w/Galera-これらはほぼ同じです。 HAの場合、3つのデータセンターのそれぞれに1つ(またはそれ以上)のノードが必要です。 (地震、竜巻、洪水、さらにはデータセンターの停止などを考えてください-do発生します。)

オラクルのグループレプリケーションは非常に新しいものですが、多くの可能性があります。

オラクルの「ファブリック」はおそらく捨てられています。 (おそらく、解決が困難な単一障害点が原因です。)

Orchestratorは、多数の(何百もの)スレーブの任意のツリー(リレーサーバーと考えてください)のフェールオーバーに非常に優れています。 マスターフェイルオーバーについては不明です。 (Booking.comの講義をご覧ください。)

MHAは非常に優れています-しかし、「スプリットブレイン」の状況を発見した場合は、手動による介入が必要です。

MySQL Clusterの「エンジン」には、さまざまなものが含まれています。つまり、これは、残りすべてがサポートするInnoDBの「ドロップイン」置換ではありません。 1つは、「結果整合性」を採用しているため、競合を解決する方法を指定する必要があることです。

Galeraベースのソリューションとグループレプリケーションだけが、障害が発生したサーバーが復旧したときに自動的に修復するものだと思います。 (私はここで間違っている可能性があります。)

今日の私の好み:パーコナのPXCまたはGaleraを備えたMariaDB-それぞれがGaleraを組み込み、サポートしています。しかし、私はグループ複製に注意を向けています。

4
Rick James

他の回答に対するいくつかの単語(コメントが適切にフォーマットされていない):

  • Orchestrator-HAテクノロジーではなく、トポロジを視覚化して問題を解決するためのツールですが、他のテクノロジーの下層に基づいています
  • GaleraとNDB、主な(私の見解では)サポートされるエンジンの違い- NDBとInnoDB
  • グループ複製は新しく、私はそれを使用しません

ちょうど同じように:

  • それらの両方(GaleraとNDB)に留意してください-ドキュメントに「ある場合には...」、「できるはず...」などが大量にあります。すべて適切に作成できますが、レガシーアプリケーションをクラスターに転送しようとする場合は、事前に適切なテストを行ってください。私はプロジェクトでいくつかのケースに遭遇します。悪いアプリケーションがまだ単一のノード(マスタースレーブ)で動作していて、たとえばGaleraで死ぬときです。間違った設計の問題ですが、クライアントは簡単なテストの後にライブアプリケーションを「最新の」テクノロジーに移行します。

特に最後の理由で、ビジネスニーズに応じて、データセンターあたり1ノードについては非常に懐疑的です。数秒でマスターの背後でスレーブを遅らせるか、変更ごとにスローダウンするかを選択できます。非常に小さなトランザクションには影響せず、より複雑なトランザクションではキラーになる可能性があります。

1
a_vlad

検討する必要のある簡単なソリューションは、DRBDを使用したアクティブ/パッシブPacemaker/Corosyncセットアップです。最大の欠点は、フェイルオーバーにクラッシュリカバリーが含まれることですが、ib_logfilesが大きくなく、障害が発生した場合に少しの間待機することができます(ただし、クラッシュリカバリーには数秒かかる場合があります)。 REDOログからリプレイする必要がある量に応じてはるかに長く)、それはあなたの人生を簡素化することができます。

DRBDを使用すると、データレプリケーションはMySQLの外部でブロックレベルで行われるため、複数のマスター間で重複するキーやデータの整合性に関する問題を回避できます。これは、ペアのアクティブサーバーから読み取るMySQLレプリケーションスレーブと組み合わせることもできます。

すべてのケースに最適なHAソリューションは1つではなく、意見の対立も数多くあります。これは「どこでも書き込める」解決策ではないので、それがあなたが探しているものであれば、おそらくリストから削り取ることができます。

1
user118129