ホームページ >システムチュートリアル >Linux >mysqlのマスタースレーブ遅延を解決する方法
MySQL の組み込みレプリケーション機能は、大規模で高性能なアプリケーションを構築するための基盤です。 MySQL データを複数のシステムに分散するこの分散メカニズムは、特定の MySQL ホストのデータを他のホスト スレーブにコピーし、再実行することで実現されます。
レプリケーション中、1 つのサーバーがマスターとして機能し、1 つ以上の他のサーバーがスレーブとして機能します。マスターはバイナリ ログ ファイルに更新を書き込み、ログ ローテーションを追跡するためにファイルのインデックスを維持します。これらのログは、スレーブ サーバーに送信された更新を記録します。スレーブはマスターに接続すると、スレーブがログから読み取った最後に成功した更新の場所をマスターに通知します。スレーブ サーバーは、それ以降に発生した更新を受信し、ブロックしてマスター サーバーから更新が通知されるのを待ちます。
Mysql マスター/スレーブ レプリケーションの問題:
回答: スレーブ同期遅延を軽減する最も簡単な解決策は、アーキテクチャを最適化し、メイン ライブラリの DDL を高速に実行するように努めることです。メイン ライブラリが sync_binlog=1、innodb_flush_log_at_trx_commit = 1 などの高いデータ セキュリティを備えて記述されているという事実もありますが、スレーブにはそのような高いデータ セキュリティは必要ありません。sync_binlog を 0 またはSQL の実行効率を向上させるために、innodb_flushlog を 0 に設定することもできます。もう 1 つは、メイン ライブラリよりも優れたハードウェア デバイスをスレーブとして使用することです。
1.ネットワーク遅延
2.マスターロード
3. スレーブロード
一般的なアプローチは、複数のスレーブを使用して読み取りリクエストを分散し、これらのスレーブの専用サーバーをバックアップのみに使用し、他の操作は行わないことで、「リアルタイム」要件を最大限に達成できます。
–slave-net-timeout=秒
パラメータの意味: スレーブがメイン データベースからのログ データの読み取りに失敗した場合、接続を再確立してデータを取得するまでの待ち時間
smile_net_timeout の単位は秒で、デフォルト設定は 3600 秒です。
| スレーブネットタイムアウト | 3600
–マスター接続再試行=秒
パラメータの意味: マスターとスレーブの接続を再確立するときに、接続の確立に失敗した場合、再試行にかかる時間。
master-connect-retry の単位は秒で、デフォルト設定は 60 秒です。
通常、上記の 2 つのパラメータを設定すると、ネットワークの問題によるマスターとスレーブのデータ同期の遅延を軽減できます
以上がmysqlのマスタースレーブ遅延を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。