新しいWebサイトの場合、MySQLマスターマスターセットアップに接続する必要があります。これはNHibernateを使用する.NETWebサイトですが、Javaやその他の言語にも同じことが当てはまります。この設定を選択したのは、データベースがダウンした場合でもサイトが機能し続けるようにするためです。ダウンタイムは好きではありません。
マスターマスターセットアップが(MySQLで)どのように機能するかについて完全に誤解しているかもしれませんが、私の見方では、通常どおりにデータベースに接続しますが、舞台裏では、MySQLは2つの間でデータを複製しますデータベース。書き込みを行うと、マスター1またはマスター2のいずれかに移動できますが、通常はわかりません(自動インクリメントIDが異なる値を返すことを除いて)。マスターAが何らかの理由で失敗した場合でも、マスターBは機能するため、ダウンタイムは発生しません。マスターAは、再びアップしてデータが複製されるまで無視され、問題がなければ、マスターAは再びフィールドに戻ります。
これが正しければ、上記のとりとめが間違っていたら訂正してください。1人のマスターがダウンした場合に備えて、何か特別なことをする必要がありますか?192.168.1.50(マスターA)に接続した場合、マスターAがダウンするとどうなりますか?MySQLはどういうわけか自動的に192.168.1.51(マスターB)に接続するので、私のサイトは引き続き機能しますか?
私が正しくなかった場合、MySQLマスターマスターレプリケーションはどのように機能しますか?どのマスターで実行する必要があるかを各クエリに指示する必要がありますか?マスターAがダウンした場合でも、マスターAに対するすべてのクエリは失敗し、マスターマスターのセットアップはまったく役に立ちません。
つまり、基本的に、私の質問は実際には次のとおりだと思います。
まだ単一のMySQLホストに接続しますか(NHibernateを使用していますが、それは実際には問題ではありません)、単一の接続文字列を指定しますか?MySQLは2つのマスターがあることを認識しますか、またはコードがそのように変更されますか両方のマスターの接続文字列を指定する必要があること(どのように?)、2つのサーバー間のクエリのバランスをとるために特別な魔法を実行するなど。
私は他に何かが欠けていますか?ありがとう!