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.js ルーターのネストされたルートの実例

目次序文Vue CLI での設定基本コードVueルーターの登場ネストされたルートの設定要約する序文V...

Windows システムの MySQL が中国語を入力および表示できない問題の解決方法

ステップ 1: メモ帳を使用して、MySQL インストール ディレクトリの「my.ini」ファイルを...

JSはプログレスバーのスムーズバージョンの詳細な計画を実装します

進捗バーがスムーズではないフロントエンドを学ぶ学生のほとんどは、オーディオプレーヤーやビデオプレーヤ...

RocketMQ の Docker インストールとインストール中に発生した問題の解決策

目次rocketmqイメージを取得する名前rvを作成する単一のブローカーノードを作成するrocket...

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

メインライブラリの構成1. MySQLを設定する vim /etc/my.cn # ファイルに次の内...

vueプロジェクトのマルチ環境設定(.env)の実装

目次マルチ環境構成とは何ですか? また、なぜそれが必要なのですか? .env ファイルはどこで設定さ...

Vueダイナミックフォームの詳細な応用

概要バックグラウンド管理システムには多くのフォーム要件があります。データをjson 形式で書き込み、...

Linux で Scala 環境を構築し、簡単な Scala プログラムを書く

Linux に Scala 環境をインストールするのは非常に簡単です。Ubuntu 環境であれば、さ...

VMwareのCentosシステムでNavicatがMySQLサーバーに接続できない問題を解決します

ホスト 'xxxx' はこの MySQL サーバーに接続できませんエラー: 1130...

Vue におけるキープアライブ マルチレベル ルーティング キャッシュの問題

目次1. 問題の説明2. 原因分析3. 解決策4. 処理1. 問題の説明調整センターでは、最後の 2...

VMware での Ubuntu 16.04 イメージの完全インストール チュートリアル

この記事では、VMware 12でのUbuntu 16.04イメージのインストールチュートリアルを参...

MYSQL ストアドプロシージャと関数の簡単な記述

ストアドプロシージャとは簡単に言えば、これは強力で、JAVA 言語のメソッドに似た比較的複雑な論理関...

CSS トランジションを使用した円形ホバー効果のサンプルコード

この記事では ソースコードのオンラインプレビューとダウンロード今日のチュートリアルでは、円のホバー効...

MySQLはデータベースのN+1クエリ問題を解決します

導入HibernateやMyBatisなどのORMフレームワークでは、部門に関連付けられたユーザーオ...

Ubuntu 18.04 に mysql5.7.23 をインストールするチュートリアル

この記事では、Ubuntu18.04にmysql5.7.23をインストールする具体的な方法を参考まで...