レプリケーション ロジックの簡単な概要: 1. マスター データベースは、データベース インスタンスへの変更を binlog に記録します。 上記は、デフォルトの非同期レプリケーション ロジックです。半同期レプリケーションは少し異なるため、ここでは説明しません。 さらに、スレーブ ライブラリに遅延があるかどうかを判断するのは非常に簡単です。 遅延の原因と解決策〇メインデータベースへの頻繁なDMLリクエスト(tpsが大きい)つまり、メイン データベースには多数の書き込み要求があり、多数の同時挿入、削除、更新操作が実行され、短時間で大量の binlog が生成されます。 【原因分析】マスター データベースはデータを同時に書き込みますが、スレーブ データベースの 【解決】シャーディングを実行し、スケールアウトして書き込み要求を分散します。または、MySQL 5.7 以降にアップグレードし、論理クロックに基づいて並列レプリケーションを有効にすることを検討してください。 〇メインデータベースは大規模なトランザクションを実行する たとえば、大量のデータのインポート、 【原因分析】マスター データベースが大きなテーブルを更新するのにかかる時間が 200 秒で、マスター データベースとスレーブ データベースの構成が似ている場合、スレーブ データベースも大きなテーブルを更新するのにかかる時間がほぼ同じになります。この時点で、スレーブ データベースの遅延が蓄積し始め、後続のイベントを更新できなくなります。 【解決】大規模なトランザクションを分割し、時間内に送信します。 〇メインデータベースは大きなテーブルに対してDDL文を実行するこの現象は、メイン データベースで大規模なトランザクションを実行する場合と似ています。 【原因分析】 1. DDL は開始されておらず、ブロックされています。SHOW 【解決】 〇マスターライブラリとスレーブライブラリの構成が一致していません: 【原因分析】ハードウェア: マスターインスタンスサーバーは SSD を使用し、スレーブインスタンスサーバーは通常の SAS ディスクを使用しており、CPU のメイン周波数は一貫していません。構成: RAID カードの書き込み戦略が一貫していない、OS カーネルパラメータ設定が一貫していない、MySQL ディスクの配置戦略が一貫していないなど。 【解決】 DBマシンの構成(ハードウェアやオプションパラメータを含む)を統一する 〇テーブルに主キーまたは一意のインデックスがない
【原因分析】マスター データベースが 500 万のテーブルで 200,000 行のデータを更新するという極端なケースを想定してみましょう。更新ステートメントにはテーブル全体のスキャンが必要です。行形式では、200,000 の更新操作がバイナリ ログに記録されます。この場合、SQL スレッドの再生は非常に遅くなり、更新ごとにテーブル全体のスキャンが必要になる場合があります。 【解決】テーブル構造をチェックして、各テーブルに明示的な自動増分主キーがあることを確認し、適切なインデックスを作成します。 〇図書館自体からの圧力が大きすぎる【原因分析】スレーブ データベースが大量の選択要求を実行するか、ビジネスの選択要求のほとんどがスレーブ データベース インスタンスにルーティングされるか、大量の OLAP ビジネスが存在するか、スレーブ データベースがバックアップされているかなどです。 【解決】読み取り要求を分散し、既存のスレーブ インスタンスへの負荷を軽減するために、スレーブをさらに作成します。 0MyISAMストレージエンジン現時点では、スレーブライブラリ 【原因分析】 MyISAM はテーブルレベルのロックのみをサポートしており、読み取りと書き込みを同時に実行することはできません。 【解決】もちろん、私はそれを許すことを選択します。MyISAM を選択したので、精神的に準備する必要があります。 (レプリケーション構造で MyISAM を使用することが推奨されないシナリオもいくつかあります。) 要約:スレーブ ライブラリの現在のステータスを表示するには 上記の理由のいずれにも当てはまらない場合は、DBA の専門家に支援を求めてください。 もちろん、 全文は以上です。 上記は、MySQL マスタースレーブレプリケーション遅延の原因と解決策の詳細な内容です。MySQL マスタースレーブレプリケーション遅延の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
>>: js キャンバスは検証コードを実装し、検証コード機能を取得します
フォーラムでは、ネットユーザーから「HTML ファイル内の別の HTML ファイルの内容を読み取るこ...
目次1. スクリプトタグを使用してファイルをインポートする1. ローカルファイルをインポートする2....
はじめに: すべてのデータを 1 つのテーブルに保存することのデメリット表の構成構造は複雑で不明瞭で...
数日前、同僚からMySQLのインデックスについて質問を受けました。大体わかっているのですが、まだ練習...
開発を行う際に、次のような状況に遭遇することがよくあります。 a.swf が Web ページに追加さ...
HTML を使用して動的な Web クロックを作成します。コードは次のとおりです。 <!DOC...
使用シナリオ:プロジェクトのページでは、頻繁に変更されず、個別のカスタマイズも伴わない大量のデータを...
Vue ファースト スクリーン パフォーマンス最適化コンポーネントVue ファースト スクリーン パ...
目次1. コンポーネントの肥大化2. 状態を直接変更する3. プロパティは数値を渡す必要があるが文字...
序文Vuex を使用すると、ストア内に「ゲッター」を定義できます (これはストアの計算されたプロパテ...
LocalStorageはブール値を保存します今日、ブール値データを保存するために localsto...
sed は Unix の文字ストリーム エディタ、つまりストリーム エディタです。行指向であり、行単...
1. 要件:データベースのバックアップは、実稼働環境にとって特に重要です。データベースのバックアップ...
目次父から息子へ: 1. 親コンポーネントのサブコンポーネントタグに、サブコンポーネントに渡されるデ...
説明: テキストエリアの値の改行を新しい行に変更しますコードをコピーコードは次のとおりです。 <...