2010-12-01 3 views
1

マスターマスターセットアップがあり、スレーブが一度に1つのクエリを読み込み、追いつくのに多くの時間がかかる間に、アクティブマスターが同時に複数のクエリを処理できることに気付きました。スレーブラグを追跡する

1)これには解決策はありますか?

2)なぜスレーブは0秒を "seconds_behind_maser"と表示しますか?遅れている正しい秒数が表示されることがあります。しかし、私の場合は、ログから読み込み中に0秒間表示されています。

3)1人のマスターが「リカバリ待ち」状態になると思っている間に、両方のマスターがオンラインであることがmmm_controlによって示されるのはなぜですか?

答えて

0

マスターのために、どのような順序の同時更新/ロールバック/タイムアウトなどが起こるかは関係ありません。それが紛争を解決するために何をしたとしても、クライアントは正しいフィードバックを与えられます。

しかし、スレーブはマスタとまったく同じ順序で更新を実行する必要があります。これを達成する唯一の方法は、マスタがコミットした順に更新を順次実行することです。したがって、単一のスレッドでなければならないだけでなく、マスターがコミットした後でのみ作業を開始できます。通常、これは、コミットログレコードがディスクにフラッシュされたときに、実際の物理IOが待機することを意味します。

+0

高可用性を確保するにはどうすればよいですか?複製には価値がありますか? – shantanuo

0

Re:1)アクティブなマスタで複数のステートメントを同時に実行できますが、レプリケーション実行プロセスはシングルスレッドであり、サーバー間のデータの一貫性を保証します。

これまで使ったことはありませんが、更新を高速化するために、Maatkit'smk-slave-prefetchを調べて、スレーブをウォームアップしたい場合があります。

Re:2)スレーブはまだフェッチスレッドから何も実行されていない場合、0秒後にマスターを表示します。これは、ネットワーク実行時間が長い環境(実行スレッドと比較して)で頻繁に発生します。