マスター/スレーブレプリケーションの代わりにGalera Clusterを使用することの欠点は何ですか?


13

通常のマスター/スレーブレプリケーションの代わりにGalera Clusterを使用することの欠点は何ですか?Galeraの0スレーブラグタイム、同期レプリケーション、および単一障害点がないことは非常に魅力的であるように思われますが、なぜGaleraクラスターは一般的ではないのですか?

回答:


16

他の最適化と同様に、すべてのワークロードに適合するわけではありません。

Galeraは、高いレートのトランザクション、またはトランザクションが多数の行を更新するときに圧倒される可能性があります。また、クラスターが同期されると、アプリケーションでCOMMITの遅延が発生する可能性があります。

Galeraは他のノードも同期的に更新しません。ワークセットを同期的に送信するだけです。この方法では、準同期モードでの標準的なレプリケーションに少し似ています。したがって、別のクラスターノードから古いデータを読み取る可能性はまだわずかです。ワークセットのキューがデータベースを更新するまでSELECTを強制的に待機させるオプションを設定できますが、これはSELECTに遅延があることを意味します。SELECTでデッドロックが発生する可能性もありますが、これは直感に反しているようです。

Galeraは素晴らしいですが、万能のテクノロジーではありません。非同期レプリケーションを使用する理由はまだあります。


ビル、ありがとうございます。しばらくの間、Perconaのプレゼンテーションを読んでいます。
サム

3
もう1つの欠点は、ドナーノードをそれ自体から切り離し、クラスターに導入されたノードに(xtrabackup、rsync、mysqldumpを介して)コピーするために使用されることです。クラスター内の残りのノードは、新しいノードが同期するまで重い負荷をかけます。小規模または中規模のDBにとっては、それほどの欠点ではありません。
RolandoMySQLDBA

1
xtrabackupのような@RolandoMySQLDBA SSTメソッドは、ドナーのロックを正確に回避します。いずれにしても、データベースが大きい場合、ドナーのパフォーマンスが低下することは事実です。
jynus

3
@jynus、この問題はドナーノードでロックされていませんが、SSTの進行中は受信ノードがオフラインであり、クエリに対して使用できません。そのため、クエリの負荷分散にクラスタを使用している場合、受信ノードに送信されるクエリは、SSTが完了するまで他のノードに送信する必要があります。
ビルカーウィン

2
他の誰かが探している場合、Billが参照しているオプションは、すべての書き込みセットが完了するまで待機する選択を取得するためwsrep_causal_readsにONにSET GLOBAL wsrep_causal_reads = 'ON';設定されます。
ルークカズンズ

2

ガレラのいくつかの欠点は次のとおりです。

  • ストレージエンジンのサポート:InnoDB / XtraDBに限定(さらにMyISAMの実験的サポート)
  • OSサポート:Linux / Unix-like Osesのみ

注意すべきいくつかの制限もありますが、おそらく回避することができます:

  • デフォルト(Total Order Isolation)では、DDL操作は完了するまでクラスター全体をブロックします
  • すべてのテーブルには、単一列または複数列の明示的な主キーが必要です。
  • ロック:いくつかのタイプの明示的なロックはサポートされていません。

詳細については、Codership(およびDDLのブロックに関するこちら)、MariaDB、およびPerconaの詳細を参照してください。

編集:また、ネットワーク層の固有の信頼性に起因する問題のために、Galeraなどの密結合データベースクラスターは地理的に分散したノードを持つべきではないと主張する人もいます。代わりに、これらの場合には非同期ソリューションを使用する必要があります。参照:ガレラベースのレプリケーション誤用と地理ノード分布:MySQLの高可用性をしない方法。それでも、Galeraブログには次のように記載されています(2015):

地理的に分散したデータベースクラスターを構築する場合は強力です。複製に対するGaleraのアプローチと製品の特定の機能により、複数のデータセンターにまたがるGaleraクラスターの構築が実用的になり、複数のユーザーがそのようなクラスターを既に運用しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.