2017-05-06 16 views
1

MariaDB Galeraクラスタの評価中です。私は、クラスタが行レベルと文レベルのレプリケーションをサポートしていることを理解しています。私たちは行レベルの複製に傾いています。私たちのデータモデルには、互いに関連する複数のエンティティがあります。私たちは、エンティティ間で外部キーの関係を持つつもりです。MariaDB Galeraクラスタの参照整合性制約

クラスタが次のシナリオをどのように処理するかを行ベースのレプリケーションにする場合は、理解したいと思います。

1>クラスタは、クラスや学生などのエンティティがあります> 3つのノード

2を有しています。これで私たちは外部キーの学生を持っている - >クラス

3>私たちは二つのノード(N1 & N2)は、2つの異なるトランザクション

Aから二つの別々の更新を取得取得)時刻t1において:ノードN1を取得特定のクラスc1とc2の学生(s1とs2)の挿入。時刻t2において

B):クラスC1は、時刻t3においてノードN2

C)から削除される:変化(学生S1の添加とs2)
N2 にN1から押し出されます

学生の追加を含む取引全体がロールバックされますか?

答えて

2

RBR

COMMITの時点では、のエラーを確認する必要があります。これは、他のノードと競合がチェックされる時刻です。

つまり、1つのノードで競合が発生していない可能性があります(COMMIT)。そのノードで正常に見えるものが他のノードで同時に発生していたものと衝突することがあります。一般的にGalera tips

より、あなたは「デッドロック」を取得するたびに、単にトランザクション全体を再実行します。これはおそらく2回目に動作します(または、リモートトランザクションによって現在のノードになったので、他のエラーが発生した可能性があります)。

関連する問題