MySQL マスタースレーブレプリケーションの役割と動作原理の詳細な説明

MySQL マスタースレーブレプリケーションの役割と動作原理の詳細な説明

1. マスタースレーブレプリケーションとは何ですか?

マスタースレーブレプリケーションは、スレーブデータベースと呼ばれる、マスターデータベースとまったく同じデータベース環境を確立するために使用されます。マスターデータベースは、通常、準リアルタイムのビジネスデータベースです。最も一般的に使用される MySQL データベースでは、単一項目の非同期割り当てがサポートされています。移行プロセス中、1 台のサーバーがマスター サーバーとして機能し、もう 1 台のサーバーがスレーブ サーバーとして機能します。マスター サーバーは更新情報を特別なバイナリ ファイルに書き込みます。

ログ サイクルを追跡するためにファイルのインデックスが維持されます。このログは更新を記録し、スレーブ サーバーに送信できます。スレーブ サーバーがマスター サーバーに接続すると、スレーブ サーバーはマスター サーバーに通知し、スレーブ サーバーのログ ファイルにある最後の正常な更新の場所を読み込みます。スレーブは、その時点から発生するすべての更新を受信し、マスターから新しい更新が通知されるまでロックして待機します。

2. マスタースレーブレプリケーションの役割

1 つ目は、データのセキュリティを確保することです。バックアップ データベースとしてデータのホット バックアップを実行します。メイン データベース サーバーに障害が発生した場合、スレーブ データベースに切り替えて作業を続行し、データの損失を回避できます。

2 つ目は、I/O パフォーマンスの向上です。日常の生産における業務量が増加するにつれて、I/O アクセスの頻度はますます高くなり、単一のマシンでは対応できなくなります。このとき、マルチライブラリ ストレージは、ディスク I/O アクセスの頻度を効果的に減らし、単一デバイスの I/O パフォーマンスを向上させることができます。

3 つ目は、読み取りと書き込みを分離することです。これにより、データベースはより高い同時実行性をサポートできるようになります。これはレポート作成において特に重要です。一部のレポート SQL ステートメントは非常に遅いため、テーブルがロックされ、フロントエンド サービスに影響を及ぼします。フロントデスクがマスターを使用し、レポートがスレーブを使用する場合、レポート SQL によってフロントデスクがロックされることはなく、フロントデスクの速度が確保されます。

3. マスタースレーブレプリケーションの原理

マスタースレーブレプリケーションに関係するファイル

メインライブラリ: binlog

ライブラリから:

  • リレーログ リレーログ
  • master.info マスターデータベース情報ファイル
  • relaylog.info リレーログアプリケーション情報

マスタースレーブレプリケーションに関与する3つのスレッド

メインライブラリ:

Binlog_Dump スレッド:

ライブラリから:

スレーブ_IO_スレッド

スレーブSQLスレッド

具体的な原理は図に示されています。

1. データベース(マスターデータベースの接続情報 + レプリケーションの開始点)からchange master toコマンドを実行します。
2. 上記の情報はデータベースからmaster.infoファイルに記録されます。
3. データベースからスレーブ開始コマンドを実行して、2つのスレッドSLAVE_IO_THREADとSLAVE_SQL_THREADを直ちに開始します。

4. データベースSLAVE_SQL_THREADからmaster.infoファイルの情報を読み取り、IP、PORT、User、Pass、およびbinlogの場所の情報を取得します。

5. スレーブ データベース SLAVE_IO_THREAD は、マスター データベースへの接続を要求します。マスター データベースは、SLAVE_SQL_THREAD と対話するための SLAVE_IO_THREAD を提供します。

6.SLAVE_IO_THREADは、binlogの位置情報に基づいてマスターデータベースの新しいbinlogを要求します。

7. マスターデータベースはBinlog_DUMP_Threadを使用して、最新のバイナリログをネットワークTP経由でスレーブデータベースのSALVE_IO_THREADに送信します。

8.SLAVE_IO_THREADは新しいbinlogを受信し、それをTCP/IPキャッシュに保存し、すぐにマスターにACKを返し、master.infoを更新します。

9. SLAVE_IO_THREAD は TCP/IP キャッシュ内のデータをディスク リレーログにダンプします。

10.SLAVE_SQL_THREADはrelay.infoの情報を読み取り、前回適用されたrelaylogの位置情報を取得します。

11.SLAVE_SQL_THREADは最後の位置に従って最新のリレーログを再生し、relay.info情報を再度更新します。

12. データベースは定期的なクリーンアップのためにアプリケーションリレーを自動的に消去します。

マスター スレーブ レプリケーションが正常に確立されると、マスター データベースの新しい変更は、slave_dump_THREAD を介して SLAVE_IO_THREAD に送信され、マスター スレーブ レプリケーションのリアルタイム性が強化されます。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQL マスタースレーブレプリケーションの原理と設定方法(詳細)
  • MySQL マスタースレーブレプリケーションの手順と一般的なエラーの解決方法の詳細な説明
  • MySQL マスタースレーブレプリケーション(マスタースレーブ)の実際の動作例
  • MySQL マスタースレーブレプリケーション構成のハートビート機能の紹介
  • MySQL マスタースレーブレプリケーションプロセスの詳細な説明
  • MySQL マスタースレーブレプリケーション、読み取り/書き込み分離、バックアップとリカバリの詳細な説明
  • MySQLはマスタースレーブレプリケーションプロジェクトの実践を実装します

<<:  Linux centos7 に phpMyAdmin をインストールするチュートリアル

>>:  Vueは買い物数量を変更できるショッピングカートを実装します

推薦する

OEL7.6 ソースコードから MYSQL5.7 をインストールするチュートリアル

まず、公式サイト https://dev.mysql.com/downloads/mysql/5.7...

JavaScript における var と let の違い

目次1. スコープはさまざまな方法で表現されます2. 変動昇進と非昇進の違い3. 一時的なデッドゾー...

Dockerを使用してJenkinsをインストールする方法

目次1. イメージをプルする2. ローカルデータボリュームを作成する3. コンテナを作成する4. J...

1行のコードでLinuxのプロセスを隠す方法を学ぶ

友人たちはいつも、Linux のプロセスを隠す方法を私に尋ねます。私は、どの程度隠したいのか、カーネ...

MySQL をベースにしたシンプルな検索エンジンを実装する

目次MySQL ベースの検索エンジンの実装1. ngram全文パーサー2. 全文インデックスを作成す...

レスポンシブ原則のソースコード分析のVue解釈

目次初期化初期化状態()初期化プロパティ()初期化データ()観察する()オブザーバーリアクティブを定...

VMware 仮想マシンの NAT モードを構成する方法

この記事では、VMware仮想マシンのNAT構成プロセスを詳しく説明します。具体的な内容は次のとおり...

Ubuntu 20.04 に Python 3 仮想環境をインストールする詳細なチュートリアル

以下はすべて仮想マシン上で実行されます1. pip3をインストールするsudo apt で pyth...

Google Recaptcha 認証を使用した Vue 実装例

最近のプロジェクトでは、Google ロボット認証を使用する必要があります。これには VPN が必要...

Dockerを使用してgitlabコミュニティの中国語版を構築する詳細なプロセスを教えます

1. Docker Composeを使用して起動を構成するDocker Compose を知らない場...

SQL文のパフォーマンスを分析するための標準的な要約

この記事では、explain を使用して SQL ステートメントを分析する方法を紹介します。実際、イ...

IE9 のネイティブ ページ互換性の問題に対する解決策についての簡単な説明

序文最近、クライアントのネイティブページを引き継ぎました。顧客は、ページが IE9 以降のバージョン...

CSSはマウスが画像に移動したときにマスク効果を実現します

1.マスクレイヤーのHTMLコードと画像をdivに配置する.img_div に入れました。 <...

MySQL 一時テーブルの簡単な使用法

MySQL 一時テーブルは、一時的なデータを保存する必要がある場合に非常に便利です。一時テーブルは現...

フレームセットの高さを設定する際のインターフェース変形の解決策

現在、プロジェクトを作成しました。インターフェースは次のとおりです。これはフレームセットを使用して行...