MySQL データベースのマスター・スレーブ レプリケーションと読み取り/書き込み分離

MySQL データベースのマスター・スレーブ レプリケーションと読み取り/書き込み分離

1. マスタースレーブレプリケーション

マスタースレーブレプリケーション: 実際の運用では、MySQL の単一障害点を解決し、MySQL の全体的なサービスパフォーマンスを向上させるために、マスタースレーブレプリケーションが一般的に使用されます。つまり、データベース内のデータとステートメントをバックアップします。

ここに画像の説明を挿入

マスタースレーブレプリケーション3スレッド

MySQL のマスター スレーブ レプリケーションには、マスター (バイナリ ログ ダンプ スレッド)、スレーブ (I/O スレッド、SQL スレッド)、マスターに 1 つのスレッド、スレーブに 2 つのスレッドという 3 つのメイン スレッドがあります。

マスタースレーブレプリケーションプロセス

マスタースレーブレプリケーションのプロセス:

マスターの主な役割は、マスター ライブラリでデータの更新があった場合に、更新されたイベント タイプを binlog 形式でマスター ライブラリの binlog ファイルに書き込むことです。マスターはログ ダンプ スレッドを作成し、メイン データベースにデータ更新があることをスレーブに通知します。

I/O スレッドはスレーブで作成され、マスターに要求するために使用されます。マスターは、バイナリログの名前、現在のデータ更新の場所、およびバイナリログ ファイルの場所のコピーを返します。次に、バイナリログはリレーログに保存され、データの更新に関する情報も記録されます。

SQL スレッドはスレーブにも作成されます。スレーブはリレー ログが更新されたことを検出すると、更新された内容をスレーブ データベースに同期し、マスターとスレーブのデータの同期を確実にします。

マスタースレーブレプリケーション戦略

マスタースレーブレプリケーション戦略:

同期戦略: マスターはコミットする前にすべてのスレーブが応答するのを待機します。これは、マスターとスレーブの同期のパフォーマンスに重大な影響を及ぼします。

半同期戦略: マスターはコミットする前に少なくとも 1 つのスレーブが応答するのを待ちます。

非同期戦略: マスターはスレーブの応答を待たずに送信できます。

遅延戦略: スレーブはマスターによって指定された時間より遅れる必要があります。
ビジネス ニーズに応じてさまざまな戦略がありますが、一般的には最終的な一貫性が採用され、強い一貫性はパフォーマンスに重大な影響を与えるため、強い一貫性は必要ありません。

マスタースレーブレプリケーションにおける高レイテンシ

マスタースレーブレプリケーションにおける高レイテンシの理由

マスターサーバーは同時実行性が高く、多数のトランザクションが発生する

ネットワーク遅延

マスターおよびスレーブ ハードウェア デバイス (CPU メイン周波数、メモリ IO、ハード ディスク IO) によって発生します。

これは同期レプリケーションではなく、非同期レプリケーションです。

マスタースレーブレプリケーションの高レイテンシに対するソリューション

データベースからMysqlパラメータを最適化します。たとえば、innodb_buffer_pool_sizeを増やすと、より多くの操作がmysqlメモリ内で完了し、ディスク操作が削減されます。

データベースから高性能ホスト(高性能CPU、大容量メモリ)を使用し、仮想クラウドホストの使用を避け、物理ホストを使用してI/Oスループットを向上させる

ライブラリのSSDディスクを使用する

コンピュータルーム間の同期を回避するためのネットワーク最適化

2. 読み取りと書き込みの分離

ここに画像の説明を挿入

読み取りと書き込みの分離の概念

読み取り/書き込みの分離: 読み取り/書き込みの分離により、プライマリ データベースはトランザクションの追加、削除、および変更操作 (INSERT、UPDATE、DELETE) を処理し、セカンダリ データベースはクエリ (SELECT) 操作を処理できます。データベース レプリケーションは、トランザクション操作によって発生した変更をクラスター内のスレーブ データベースに同期するために使用されます。

読み取りと書き込みを分離する理由とシナリオ

読み取りと書き込みを分離する理由: 読み取りと書き込みの量が多い。データベースの読み取りと書き込みのパフォーマンスを向上させるために、読み取りと書き込みを分離します。複数のコンピュータ ルームで読み取りが書き込みよりも多い場合、データの一貫性を考慮して、1 つのマスター データベースのみがすべてのデータ書き込みを保存し、ローカル スレーブ データベースが読み取りを提供して、複数のコンピュータ ルーム間の直接読み取りによって発生する遅延を減らします。

読み取り/書き込み分離の使用シナリオ: プログラムがデータベースをより頻繁に使用するが、更新は少なく、クエリは多い場合に考慮されます。データベースのマスター/スレーブ同期と読み取り/書き込み分離を使用することで、データベースの負荷を分散し、パフォーマンスを向上させることができます。

要約する

これで、MySQL データベースのマスター スレーブ レプリケーションと読み取り/書き込み分離に関するこの記事は終了です。MySQL マスター スレーブ レプリケーションと読み取り/書き込み分離の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL マスタースレーブレプリケーション遅延問題の詳細な説明
  • MySQL マスタースレーブレプリケーションにおける重複キーの問題を修正する方法
  • MySQLのマスタースレーブレプリケーションと読み取り書き込み分離を理解するための記事
  • MySQLデータベースのマスタースレーブレプリケーションと読み取り書き込み分離に関する詳細なチュートリアル
  • MySQL マスタースレーブレプリケーションの GTID モードの詳細な紹介
  • MySQL マスターとスレーブのレプリケーション間のデータの不一致に対する解決策
  • MySQL マスタースレーブレプリケーションの問題の概要とトラブルシューティング

<<:  JavaScriptタイマーとボタン効果設定の詳細な説明

>>:  HTML ページに SVG を挿入する複数の方法

推薦する

MySQL innodb_autoinc_lock_mode について

innodb_autoinc_lock_mode パラメータは、auto_increment 列を持...

jsでの位置計算を徹底的に理解するのに役立つ記事

目次導入スクロール要素.スクロール()要素.scrollHeight/scrollWidth要素.s...

Ant Design Pro ログイン機能にグラフィック検証コード コンポーネントを統合する方法

序文:この記事では、Ant Design Proログイン機能にグラフィック検証コードコンポーネントを...

Dockerデータを完全にクリーンアップする方法

目次定期的に剪定するミラーエビクションコンテナのクリーンアップネットワークソート体積の蒸発完全にクリ...

VueでEchartsチャートの幅と高さの適応を実現する実践

目次1. インストールとインポート2. 手ぶれ補正機能を定義する3. チャートコードを描くinit ...

JavaScript でよく使われる 3 つの Web エフェクトの詳細な説明

目次1要素オフセットシリーズ1.1 オフセットの概要1.2 オフセットとスタイルの違い視覚領域クライ...

Vue双方向バインディングの詳細な説明

目次1. 双方向バインディング2. 他のタグを選択した場合にも同じ結果になりますか? 答えはもちろん...

MySQLで判定文を書く方法のまとめ

MySQL で判断文を書く方法:方法1. CASE関数case関数の構文: CASE条件 値1の場合...

ウェブサイトのデザインでは色の階層感覚に注意を払う必要があります

最近、私はデザインには階層感覚が必要だと言っています。この階層感覚には、色の重ね合わせや要素の重ね合...

CSS3 を使用して色付きのプログレスバーアニメーションを実装する例

簡単なチュートリアルこれは CSS3 カラー プログレス バー アニメーション効果です。 CSS3 ...

HTML入門チュートリアル HTMLタグ記号をすぐにマスター

補足<br />HTML について何も知らず、HTML の始め方がまだわからない場合は、...

MySQL でよく使用されるデータベースとテーブル シャーディング ソリューションの概要

目次1. データベースのボトルネック2. サブライブラリとサブテーブル2. 横長テーブル3. 垂直サ...

MySQL Binlog ログ処理ツールの比較分析

目次運河マクスウェルデータバスAlibaba Cloud のデータ転送サービス (DTS)運河ポジシ...

Linux での stat 関数と stat コマンドの使用法の詳細な説明

stat 関数と stat コマンドLinux ファイル内の [inode = インデックス ノード...

JPQLに基づく純粋なSQL文方式の詳細な説明

JPQL は Java Persistence Query Language の略です。 Java ...