MySQLをさまざまな都市に配布しますか?
-
22-10-2019 - |
質問
City AにメインのMySQLサーバーがあります。CityBにカスタマーサービススタッフの大部分があります。スタッフは、接続がサーバーに遅すぎると不満を述べています。オプションは次のとおりです。
都市間の直接リンクの代わりに、公開インターネットを介して外出してもらいます。そうすれば、pingは長くなるかもしれませんが、都市間のVoIPトラフィックと競合していません
データベースをクラスター化して、両方の都市のローカルサーバーで書き込みと読み取りが同時に発生する可能性があります。
2ははるかに好ましいですが、おそらく私の説明からわかるように、私はそれを実装する方法や「クラスタリング」であってもまったく手がかりがありません。 MySQLクラスターで見つけることができる最善の点は、NDBテーブルを使用する必要があり、データベース全体をそれに変換したくないことです。ここでの私の選択肢は何ですか?ありがとう。
解決
2つの都市はどれくらい離れていますか(ping時間)? 80ミリ秒は、米国中を経験していることです。悪くはないです。
マスターマスターの両方の頭に書き込むことは可能ですが、多くの問題点があります。
NDBクラスターはホットホットを可能にしますが、(あなたが言うように)ある程度の変換が必要です。
だから、私が唯一の実行可能な解決策として見ているものに戻って、単一の書き込み可能なマスターと、任意の数の奴隷です。
リモートマスターを苦痛にすることができることの1つは、ユーザーの「ユニット」が多くのSQLステートメントに変換されるかどうかです。 (1)コードを再考して、より少ないステートメントを使用するように解決することができます(2)ストアドプロシージャを使用して、できるだけ多くのSQLステートメントをカプセル化し、それをリモートマスターに展開します。
読み取り(「批判的な読み取り」以外)は、ロードバランサーの後ろの奴隷に行くことができます。また、一部のメカニズムは、通常、読み取りが「ローカル」であることを保証する必要があります。