1


1

分散マルチマスターデータベースが必要な場合、どのような選択肢がありますか?

単一障害点を減らしたいシステムを構築し、データベースが必要です。 マルチマスターセットアップを適切に処理できる(無料の)リレーショナルデータベースシステムはありますか(つまり、ノードの追加と削除が簡単な場合)、またはNoSQLデータベースを使用する方が良いですか?

私が理解したように、キーバリューストアはこれをより良く処理します。 マルチマスター(クラスター)セットアップには、どのデータベースシステムをお勧めしますか?

3 Answer


3


MysqlのNDB Clusterはこれを行います。 しかし、セットアップは決して簡単ではなく、多くの落とし穴があります。

また、そのパフォーマンスは一般的にかなり下劣で、データをメモリに保持します(はい、矛盾しているように聞こえます)。

基本的に、更新はクラスター全体(または少なくともこれらのテーブルが保持されているストレージノードグループ)で分散ロックを取得する必要があります。

管理は簡単ではありませんが、ある程度のホットアドを実行できます。

非常に迅速なフェイルオーバーと一貫性が必要な場合を除き、これに反対することをお勧めします。

マルチマスターを無視し、代わりにHA MySQLを使用することをお勧めします(たとえば、 InnoDB)はセットアップが簡単で、一般的な30秒未満のフェイルオーバー時間で非常にうまく機能します。 これは、スレーブが読み取りすらできないマスタースレーブシステムです(ただし、完全に最新である必要がない場合は、レプリケーションで読み取りスレーブを追加できます)。


1


キー値ストアは必ずしもフォールトトレラントではありません。 これらは主にパフォーマンスツールです。 データが複数のサーバーに保存されている場合にのみ、何らかの形式のフォールトトレランスがあります。 単一の障害点を減らすだけの安全な場合、最も簡単な解決策は、おそらくミラーリングソリューションをセットアップすることです。そこでは、マスターデータベースを追跡するだけのミラーがあります。 マスターが何らかの理由で失敗すると、すぐに切り替えます(できれば自動的に)。

通常の操作中に一貫性管理が必要ないため、この複雑さははるかに低くなります。 ミラーは読み取り専用で、マスターデータベースを追跡するだけです。 マスターに障害が発生すると、ミラーがマスターに切り替えられ、リンクが切断されます。 マスターがバックアップした後、それらの間の状態に一貫性がないため、現在マスターとして機能しているミラーから元のマスターを更新する必要があります。 ほとんどのデータベースシステムはこのシナリオを処理できますが、異常なアップタイム要件や非常に高い負荷がない場合は、最も実用的なソリューションです。


0


オラクルはこのコンセプトを打ち出したと思います。 ただし、スイスの銀行口座を持たない人間である場合は、http://en.wikipedia.org/wiki/MySQL_Cluster [MySQL’s NDB Cluster]を調べる必要があります。