Mysqlマスタースレーブ同期の実装原理

Mysqlマスタースレーブ同期の実装原理

1. MySQL マスター/スレーブ同期とは何ですか?

マスター データベースのデータが変更されると、その変更はスレーブ データベースにリアルタイムで同期されます。

2. マスタースレーブ同期の利点は何ですか?

  • データベースの負荷容量を水平方向に拡張します。
  • フォールトトレランスと高可用性。フェイルオーバー/高可用性
  • データのバックアップ。

3. マスタースレーブ同期の原理は何ですか?

まず、マスタースレーブアーキテクチャを理解しましょう。

以下のように表示されます。

削除、更新、挿入、関数やストアド プロシージャの作成など、すべての操作はマスター上で実行されます。マスターに操作がある場合、スレーブはすぐにこれらの操作を受信して​​同期します。

しかし、このメカニズムはどのように実装されるのでしょうか?

マスター マシンでは、マスター スレーブ同期イベントが特別なログ ファイル (バイナリ ログ) に書き込まれ、スレーブ マシンでは、スレーブがマスター スレーブ同期イベントを読み取り、読み取ったイベントの変更に基づいてスレーブ ライブラリに対応する変更を加えます。

このようにして、マスタースレーブ同期が実現されます。

以下で詳しく見てみましょう。

3.1 マスタースレーブ同期イベントとは何ですか?

上記に述べられています:

マスター マシンでは、マスター スレーブ同期イベントが特別なログ ファイル (バイナリ ログ) に書き込まれます。

マスター スレーブ同期イベントには、ステートメント、行、混合の 3 つの形式があります。

  1. ステートメント: データベース操作の SQL ステートメントが binlog に書き込まれます。
  2. 行: 各データの変更は binlog に書き込まれます。
  3. 混合: ステートメントと行の混合。 Mysql は、ステートメント形式を書き込むタイミングと行形式 binlog を書き込むタイミングを決定します。

3.2 マスターマシンでの操作

マスター上のデータが変更されると、イベント (挿入、更新、削除) の変更が順番に binlog に書き込まれます。

binlog ダンプ スレッド

スレーブがマスターに接続すると、マスター マシンはスレーブの binlog ダンプ スレッドを開始します。マスターのバイナリログが変更されると、バイナリログ ダンプ スレッドはスレーブに通知し、対応するバイナリログの内容をスレーブに送信します。

3.3 スレーブマシンでの操作

マスター-スレーブ同期をオンにすると、スレーブ上に 2 つのスレッドが作成されます。

  • I/O スレッド。このスレッドはマスター マシンに接続されており、マスター マシン上の binlog ダンプ スレッドは binlog の内容を I/O スレッドに送信します。バイナリログの内容を受け取った後、I/O スレッドはその内容をローカル リレー ログに書き込みます。
  • SQL スレッド。このスレッドは、I/O スレッドによって書き込まれたリレー ログを読み取ります。リレーログの内容に応じて、スレーブデータベースに対して対応する操作を実行します。

3.4 上記のスレッドをマスターとスレーブで表示するにはどうすればよいでしょうか?

SHOW PROCESSLIST コマンドを使用して表示できます。

図に示すように、マスター マシン上の binlog ダンプ スレッドを表示します。

図に示すように、スレーブ マシン上の I/O スレッドと SQL スレッドを確認します。

4. ここまで述べてきたことを、写真でまとめてみましょう

5. 実戦について

実戦については、私の別の記事を参照してください:MySQLマスタースレーブ同期実戦

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

以下もご興味があるかもしれません:
  • MySQL マスタースレーブ同期の原理と応用
  • Mysql データベースのマスタースレーブ同期構成
  • この記事では、MySQLのマスタースレーブ同期の原理を説明します。
  • MySQL マスタースレーブ同期メカニズムと同期遅延問題追跡プロセス
  • Mysql マスタースレーブ同期構成の実践の詳細な説明
  • MYSQLデータベースでマスタースレーブ同期を設定する方法

<<:  Linux のスケジュールタスク Crontab コマンドの使用に関する詳細な説明と概要

>>:  Vant+postcss-pxtoremはブラウザ適応機能を実装します

推薦する

ドラッグアンドドロップでVueユーザーインターフェースを生成する方法

目次序文1. 技術原理1.1 レイアウト1.2 コンポーネント1.3 ステータス1.4 イベント1....

ウェブテーブルフレームを作成するためのヒント

<br />Web テーブル フレームを作成するためのヒント。 ------------...

IdeaはリモートDockerをデプロイし、ファイルを構成する

1. LinuxサーバーのDocker構成ファイルを変更する vim /usr/lib/system...

Rancher のデプロイメントと K8S クラスターのインポートに関する問題

Rancher のデプロイメントには、次の 3 つのアーキテクチャがあります。高可用性 Kubern...

Linux whatisコマンドの使い方

01. コマンドの概要whatis コマンドは、システム コマンドの簡単な説明を含むいくつかの特別な...

node.js チュートリアルの Util モジュールの例の詳細な説明

目次タイプ判定から始める厳格な平等エラーファーストと約束デバッグと出力タイプ判定から始めるJavaS...

Docker クリーンアップ環境操作

丁寧に掃除を始めましょう!未使用ボリュームの一覧docker ボリューム ls -qf dangli...

HTML テーブル境界コントロールの詳細な説明

上の境界線のみを表示する <table frame=above>下の境界線のみを表示する...

Msyql トランザクション分離について知っておくべきこと

トランザクションとは何ですか?トランザクションは、データベース管理システムの実行プロセスにおける論理...

Linux nohup はプログラムをバックグラウンドで実行し、表示します (nohup と &)

1. バックグラウンド実行一般的に、Linux 上のプログラムは .sh ファイル (./sh フ...

CentOS 7.5 に Python 3.6.6 を最初からインストールするための詳細なチュートリアル

ps: 環境はタイトル通りです依存関係をインストールする yum インストール openssl-de...

MySQL 8.0.11 Mac 用インストール ガイド

MACはmysql8.0をインストールします。具体的な内容は次のとおりです。 1. ダウンロードアド...

Linux マルチスレッドにおけるフォークとミューテックス ロック プロセスの例

目次質問: 1. 最初の試み2. 合理的な分析3. 問題解決(1) pthread_join()の使...

mysql5.7.14 解凍版インストールと設定方法 グラフィックチュートリアル (win10)

Win10はmysql5.7の解凍版をインストールします。参考までに、具体的な内容は次のとおりです...

タグ li はブロックレベル要素ですか?

なぜ高さを設定できるのでしょうか。<h1 /> などの要素とは異なり、「セミインライン」...