MySQL スレーブ ライブラリ Seconds_Behind_Master 遅延の概要1. 遅延分類レイテンシは次の 2 つのカテゴリに分類できます。 1. 最初のカテゴリ(サーバーの負荷が高い)このタイプの遅延により、サーバーの負荷が高まり、CPU/IO 負荷が発生する可能性があります。スレーブライブラリは実際にイベントを実行するため、サーバーの負荷が高い場合は、これらの状況を考慮する必要があります。スレッドの負荷を表示する方法については、セクション 29 を参照してください。 大規模なトランザクションによって発生する遅延は 0 から始まるのではなく、メイン データベースの実行時間から直接始まります。たとえば、メイン データベースがこのトランザクションを実行するのに 20 秒かかる場合、遅延は 20 から始まり、注意深く観察すると簡単にわかります。これは、クエリイベントには正確な実行時間がないからです。これは前のセクションの計算式で詳しく説明されています。セクション8と27を参照してください。 クエリ イベントは正確な実行時間を記録するため、大規模なテーブル DDL によって発生する遅延は 0 から増加します。これについては、前のセクションの計算式で詳しく説明しました。セクション8と27を参照してください。 テーブルが主キーまたは一意キーを適切に使用していないため、遅延が発生します。この場合、slave_rows_search_algorithms パラメータを INDEX_SCAN、HASH_SCAN に設定することで問題が完全に解決できると考えないでください。理由はセクション 24 で説明します。 これは、sync_relay_log、sync_master_info、sync_relay_log_info などの不合理なパラメータによって発生します。特に、sync_relay_log はスレーブ ライブラリのパフォーマンスに大きな影響を与えます。理由はセクション 26 で説明しましたが、sync_relay_log を 1 に設定すると、リレー ログのディスク フラッシュ操作が大量に発生するためです。 スレーブ データベースでバイナリ ログ機能が有効になっているかどうか、つまり log_slave_updates パラメータが有効になっているかどうかを確認します。必要ない場合は、無効にすることができます。私は何度もこのような状況に遭遇しました。 2. 2番目のカテゴリ(サーバーに高い負荷をかけません)このタイプの遅延は通常、サーバーに大きな負荷をかけることはありません。これらは、実際にはイベントを実行しないか、特別な操作によって発生します。
2. 関連テスト上記の遅延状況の多くについては、すでにテストして説明しているからです。次に、ロックによって発生する遅延をテストします。 1. InnoDBレイヤーでの行ロックによる遅延これは簡単にテストできます。スレーブ データベースでトランザクションを作成し、SQL スレッドと同じデータを変更するだけです。テストは次のとおりです。 ライブラリから: mysql> 開始します。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) mysql> tmpk から削除します。 クエリは正常、4 行が影響を受けました (0.00 秒) 同じステートメントをメイン データベースに送信しないでください: mysql> delete from tmpk; クエリは正常、4 行が影響を受けました (0.30 秒) この時点で、次の遅延が観察されます。 sys.innodb_lock_waits を確認すると、次の結果が表示されます。 もちろん、INNODB_TRX をチェックすれば、トランザクションの存在も確認できます。ここではスクリーンショットは撮りませんので、ご自身で試してみてください。 2. MySQL層でのMDLロックによる遅延この状況もテストは非常に簡単です。トランザクションを開いて選択するだけで、メイン データベースが同じテーブルに対して DDL を実行し、次の結果が表示されます。 ライブラリから: mysql> 開始します。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) マイSQL> マイSQL> mysql> tkkk 制限 1 から * を選択します。 +------+------+------+ | a | b | c | +------+------+------+ | 3 | 3 | 100 | +------+------+------+ セット内の 1 行 (0.00 秒) コミットしないでください。テーブルの MDL LOCK は解放されません。メイン データベースは次のステートメントを実行します。 mysql> テーブル tmpk を変更して、testc int を追加します。 クエリは正常、影響を受けた行は 0 行 (1.14 秒) レコード: 0 重複: 0 警告: 0 この時点で、次の情報が表示されます。 この状態から、これは MDL ロックの取得を待つことによって生じた遅延であることがわかります。MDL ロックの詳細については、次の記事を参照してください。 https://www.jb51.net/article/221412.htm 結論シリーズ全体を通して、Seconds_Behind_Master の計算方法について明確にしておく必要があります。同時に、遅延がある場合は、まずスレーブライブラリに負荷があるかどうかを確認し、負荷があるかどうかによって異なる扱いをします。ここでの負荷は、io/sql/ワーカースレッドの負荷を表示するには このスクリーンショットから、全体の負荷は 1 をわずかに上回る程度で高くないにもかかわらず、Lwp 番号 20092 のスレッドがすでに完全にロードされていることがわかります。この https://www.jb51.net/article/221396.htm CPU 負荷を確認するには top -H を使用し、IO 負荷を確認するには iotop、iostat などのツールを使用します。 MySQL の負荷を調べるときは、スレッドの観点から調べる必要があることを強調する必要があります。 上記は、MySQLスレーブライブラリSeconds_Behind_Master遅延サマリーの詳細です。スレーブライブラリSeconds_Behind_Master遅延サマリーの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: マウスオーバーボタンアニメーションを実現する純粋な CSS3 パート 2
>>: フォーム要素の垂直方向の中央揃えに最適なソリューション
MYSQL 5.6 スレーブレプリケーションの展開と監視MYSQL 5.6 のインストールと展開 #...
昨日、a:visited を使用して「Guess You Like」の右側にある訪問済みテキストの色...
1. 一般的なMySQLの設定以下のすべての構成パラメータは、32G のメモリを搭載したサーバーに基...
目次過去1週間の時間を取得する過去1か月の時間を取得する過去3か月分を取得新しい Date() と ...
序文実際には、次のような問題に遭遇する可能性があります。特定のレコードの ID がわかっていて、その...
序文この記事では主にMySQLのカスタム関数とストアドプロシージャに関する関連コンテンツを紹介し、皆...
それは何ですか? GNU Parallel は、1 台以上のコンピュータでコンピューティング タスク...
序文Mac システムのターミナルでファイルの権限を変更するには、Linux の chmod コマンド...
最近、「フットボール ナビゲーション」Web サイトに取り組んでいるときに、上部の固定ナビゲーション...
CSS でテキストアイコンを実装する方法 /*アイコンスタイル*/ .nav-icon-norma...
序文通常、大量のデータを扱う MySQL クエリには「ページング」戦略が採用されます。ただし、ページ...
前提条件: Percona 5.6 バージョン、トランザクション分離レベルは RR mysql>...
最近、ポップアップ広告に取り組んでいました。デフォルト ページには z-index が設定されていな...
Linuxでyumを入力すると、プロンプトが表示されます: -bash: /usr/bin/yum:...
目次1 バージョンと計画1.1 バージョン情報: 1.2 クラスター計画2. 展開1. ファイアウォ...