この記事では主に Mysqlマスターとスレーブの同期の実装原理を紹介しますが、編集者はそれが非常に優れていると考えたので、参考として共有します。エディターをフォローして一緒に見てみましょう
1. mysqlのマスター/スレーブ同期とは何ですか?
マスター(メイン)ライブラリーのデータが変更されると、その変更はスレーブ(スレーブ)ライブラリーにリアルタイムで同期されます。
2. マスター/スレーブ同期の利点は何ですか?
データベースの負荷容量を水平方向に拡張します。
耐障害性、高可用性。フェイルオーバー/高可用性
データのバックアップ。
3. マスターとスレーブの同期の原理は何ですか?
まず、マスター/スレーブのアーキテクチャを理解しましょう。
以下に示すように:
削除、更新、挿入、関数、ストアドプロシージャの作成のいずれであっても、すべての操作はマスター上で行われます。マスターが操作を行うと、スレーブはこれらの操作をすぐに受け取り、同期を実行します。
しかし、このメカニズムはどのように実装されているのでしょうか?
マスター マシンでは、マスターとスレーブの同期イベントが特別なログ ファイル (バイナリ ログ) に書き込まれ、スレーブはマスターとスレーブの同期イベントを読み取り、読み取りイベント、スレーブはライブラリに対応する変更を加えます。
このようにして、マスターとスレーブの同期が達成されます。
以下で詳しく学びましょう。
3.1 マスター/スレーブ同期イベントとは何ですか?
上で説明したように:
マスター マシンでは、マスター/スレーブ同期イベントは特別なログ ファイル (バイナリ ログ) に書き込まれます。
マスターとスレーブの同期 イベントには、ステートメント、行、混合の 3 つの形式があります。
ステートメント: データベース操作の SQL ステートメントは binlog に書き込まれます。
行: 各データ変更はバイナリログに書き込まれます。
mixed: ステートメントと行の混合。 Mysql は、いつステートメント形式で書き込み、いつバイナリログを行形式で書き込むかを決定します。
3.2 マスターマシンでの操作
マスター上のデータが変更されると、イベント (挿入、更新、削除) の変更が順番にバイナリログに書き込まれます。
バイログ ダンプ スレッド
スレーブがマスターに接続されると、マスター マシンはスレーブのバイナリ ダンプ スレッドを開きます。マスターのバイナリログが変更されると、バイナリログダンプスレッドはスレーブに通知し、対応するバイナリログコンテンツをスレーブに送信します。
3.3 スレーブマシンでの操作
マスター/スレーブ同期がオンになると、スレーブ上に 2 つのスレッドが作成されます。
I/O スレッド。このスレッドはマスター マシンに接続されており、マスター マシン上のバイナリ ログ ダンプ スレッドはバイナリ ログの内容を I/O スレッドに送信します。バイナリログの内容を受信した後、I/O スレッドはその内容をローカルリレーログに書き込みます。
SQL スレッド。このスレッドは、I/O スレッドによって書き込まれたリレー ログを読み取ります。そして、リレーログの内容に従って、スレーブデータベースに対して対応する操作を実行します。
3.4 マスターとスレーブで上記のスレッドを表示するにはどうすればよいですか?
表示するには SHOW PROCESSLIST コマンドを使用します。
図に示すように、マスター マシンでバイナリ ダンプ スレッドを表示します。
図に示すように、スレーブ マシンの I/O スレッドと SQL スレッドを確認します。
4. ここまで言いましたが、1枚の写真にまとめられます
以上がMysql のマスター/スレーブ同期原理の実装の詳細な紹介 (画像とテキスト)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。