0

MySQL データベースの 2 つのインスタンスがホストされている 2 つのデータセンターがあるとします。高可用性を実現するために、これら 2 つのインスタンス間にマスター - マスター レプリケーションを実装して、両方のデータベースが常に最新の情報を保持できるようにします。しかし、マスター マスター レプリケーションには独自の問題があり、私はそれを回避しようとしています。私の場合、データの次の特性について知っています-

ユーザー テーブルにキー U1 と U2 を持つ 2 つのレコードがある場合、U1 は 1 つのインスタンスでのみ更新されます。そのため、特定のレコードの書き込みは 1 つのインスタンスでのみ行われます。あとは、このレコードを他のインスタンスにレプリケートして、後で他のインスタンスをマスターとして作成する場合に備えて、最新のレコードを持つようにするだけです。また、ある時点ではインスタンス 1 が U1 のマスターであり、別の時点ではインスタンス 2 が U1 のマスターである可能性もあります。

これは、U1 の書き込みが 2 つのデータベース インスタンスのいずれかで発生する真のマスター マスター レプリケーションよりも 1 ステップ下だと思います。

これに照らして、このシナリオのレプリケーションを実装するためのより良い方法はありますか? 将来的には 2 つ以上のデータセンターが存在する可能性があり、マルチマスター レプリケーションの実装は簡単ではないため、マスター マスター レプリケーションは避けたいと考えています。

4

3 に答える 3

1

シャーディングされたデータベースを効果的に記述しています。これは可能ですが、アプリケーションに大きな変更が含まれるため、お勧めしません。欠点は、別のStackOverflowの投稿で概説されています。

MySQL Cluster CGEソフトウェアは透過的なシャーディングを行うと言われていますが、追加のライセンス料が発生します。

于 2013-01-11T00:09:26.480 に答える
0

It sounds like you want to have a master-slave setup, then have the capability at some point to promote a slave to a master and make the other servers slaves to the new master.

This is possible and documented, see: http://dev.mysql.com/doc/refman/5.0/en/replication-solutions-switch.html

于 2013-01-11T00:04:54.230 に答える
0

MySQL 非同期マスター マスター レプリケーションが 2 ノードを超えて十分に拡張できないということであれば、それは正しいことですが、質問の残りの部分のほとんどは非常に混乱しています。

テーブルのように見えるものの、2 つのデータベース サーバー間で効果的に分割され、両方が 100% の読み取りアクセスを持ち、各ノードがデータベース内の特定の行にのみ書き込みできるようにすることは可能ですが、実際にはそれは完全に可能です。管理が難しくなります。確かに、マスターマスター非同期よりもはるかに複雑です-単純ではありません。

マルチマスター同期レプリケーションには、非同期レプリケーションとはまったく異なる一連の利点と欠点があります。私見では、複雑さの点で MMA と同等です。もっと複雑だと思う場合は、少なくとも 1 つのテクノロジを理解できていません。

おそらく、必要なのはフェデレーテッド・テーブルとビューだけです。または、ローカルのみのデータベースと共有データベースの混合。

適切な質問をする前に、まだ少し旅が必要です。ここでの回答にデータ資産の将来を賭けるよりも、質の高いコンサルタントにお金を払ったほうがよいかもしれません。

于 2013-01-11T00:26:06.093 に答える