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はブラウザ適応機能を実装します

推薦する

要素シャトルフレームのパフォーマンス最適化の実装

目次背景解決新しい質問高度な背景シャトル ボックスが大量のデータを処理すると、レンダリングされる D...

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

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

初心者向けのMySQLデータベースとテーブルDDLの作成と操作の学習

目次1. データベースを操作する1.1 データベースを作成する1.2 データベースをクエリする1.3...

Vue Element UIの使用時に遭遇した問題をまとめる

目次1. DateTimePickerの日付選択範囲は現在時刻とそれ以前です2. DateTimeP...

HTML 再利用テクニック

HTML の再利用は、あまり話題に上らない言葉です。今日は、この問題を次のようにまとめたいと思います...

html.cssオーバーフローの包括的な理解

html.cssオーバーフローの包括的な理解XML/HTML コードコンテンツをクリップボードにコピ...

Nginx キャッシュ ファイルと動的ファイルの自動バランス設定スクリプト

nginx Nginx (エンジン x) は、高性能な HTTP およびリバース プロキシ サーバー...

MySQLオンラインDDLの使用に関する詳細な説明

目次文章LOCKパラメータアルゴリズムパラメータCOPY TABLE プロセスIN-PLACEプロセ...

MySQL にテーブルが存在するかどうかを確認し、それを一括で削除する方法

1. インターネットで長時間検索しましたが、判定表が存在するかどうかがわからなかったので、漠然と削除...

Vueライフサイクル機能の詳細な説明

目次ライフサイクル関数一般的なライフサイクルフックVue のインスタンス破棄について:要約するライフ...

Linux のインスタンスにパブリック IP アドレスを割り当てる方法

説明するこのインターフェースを呼び出すときは、次の点に注意する必要があります。パブリック IP アド...

Linux でファイル権限を変更する chmod コマンドの詳細な分析

Linux chmodコマンドを使用して、ターゲット ファイルにアクセス、読み取り、書き込み、または...

デザイン理論:人間中心のグリーンデザイン

「人間中心」と「グリーンデザイン」という2つの視点から考える——デザイン業界の同僚とも議論する2つの...

MySQL MGR 構築時の一般的な問題と解決策

目次01 よくある故障 1 02 よくある欠陥 2 03 よくある欠陥 3 04 よくある欠陥 4 ...

ウェブデザインを改善するための 8 つの CSS ツールを共有する

ウェブサイトのデザインを編集または変更する必要がある場合、CSS が重要な役割を果たします。 CSS...