ホームページ  >  記事  >  データベース  >  mysqlのマスタースレーブレプリケーションの原理は何ですか?

mysqlのマスタースレーブレプリケーションの原理は何ですか?

coldplay.xixi
coldplay.xixiオリジナル
2020-10-30 11:55:5123194ブラウズ

Mysql マスター/スレーブ レプリケーションの原則: まず、マスター ライブラリが更新イベントをスレーブ ライブラリに送信し、次にスレーブ ライブラリが更新レコードを読み取り、更新レコードを実行します。最後に、スレーブ ライブラリの内容が一貫しています。マスターライブラリと一緒に。

mysqlのマスタースレーブレプリケーションの原理は何ですか?

関連する無料学習の推奨事項: mysql ビデオ チュートリアル

mysql のマスター/スレーブ レプリケーションの原則:

マスター/スレーブ レプリケーションを行う理由

  • 複雑なビジネス システムには、このようなシナリオがあります。テーブルをロックする必要がある SQL ステートメントがあり、その結果、読み取りサービスが一時的に使用できなくなります。これは、実行中の業務に大きな影響を及ぼします。マスター/スレーブ レプリケーションを使用して、マスターを許可します。データベースが書き込みを担当し、スレーブデータベースが読み取りを担当することで、マスターデータベースがテーブルをロックしても、スレーブデータベースからの読み取りにより業務の正常な動作が保証されます。

  • データのホット バックアップを実行します。メイン データベースがダウンした後、ビジネスの可用性を確保するために、適切なタイミングでメイン データベースを置き換えることができます。

  • アーキテクチャの拡張。業務量がますます増大し、I/Oアクセス頻度が高くなり、1台のマシンでは対応できなくなるため、ディスクI/Oアクセス頻度を低減するためにマルチデータベースストレージを利用しています。単一マシンの I/O パフォーマンスを向上させます。

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

mysqlのマスタースレーブレプリケーションの原理は何ですか?

メイン データベース データベースの更新イベント (更新、挿入) 、削除)が binlog に書き込まれます。

メイン ライブラリは binlog ダンプ スレッドを作成し、binlog の内容をスレーブ ライブラリに送信します。

スレーブ ライブラリが開始され、接続するための接続が開始されます。メイン ライブラリ

スレーブ ライブラリの開始後、I/O スレッドを作成し、メイン ライブラリからバイナリ ログの内容を読み取り、リレー ログに書き込みます

##スレーブ ライブラリの開始後、SQL スレッドを作成し、リレー ログ コンテンツから読み取り、Exec_Master_Log_Pos 位置から始まる更新読み取りイベントを実行し、更新されたコンテンツをスレーブの db

注: 上記のプロセスは相対的なプロセスであり、そうではありません。絶対プロセス

MySQL マスター/スレーブ レプリケーションの原理

MySQL マスター/スレーブ レプリケーションは非同期レプリケーション プロセスであり、マスター データベースは更新イベントをスレーブ データベースに送信します。 、スレーブ データベースは更新レコードを読み取り、更新レコードを実行するため、スレーブ データベースの内容はメイン ライブラリと一致します。

binlog: バイナリ ログ、すべての更新イベント ログをメイン ライブラリに保存するバイナリ ファイル。 binlog は、データベース サービスが開始された瞬間からのデータベースのすべての変更レコード (データベース構造とコンテンツ) を保存するファイルです。メイン ライブラリでは、更新イベントが発生すると、更新イベントがバイナログに順番に書き込まれ、スレーブ ライブラリからレプリケーションのデータ ソースとしてスレーブ ライブラリにプッシュされます。

バイナリログ出力スレッド: スレーブ ライブラリがメイン ライブラリに接続するたびに、メイン ライブラリはスレッドを作成し、バイナリ ログのコンテンツをスレーブ ライブラリに送信します。スレーブ ライブラリに送信されようとしている SQL イベントごとに、binlog 出力スレッドがそれをロックします。イベントがスレッドによって読み取られると、ロックは解放されます。イベントがスレーブ ライブラリに完全に送信された場合でも、ロックは解放されます。

スレーブ ライブラリでは、レプリケーションが開始されると、スレーブ ライブラリはコピー処理用にスレーブ ライブラリの I/O スレッドとスレーブ ライブラリの SQL スレッドを作成します。

スレーブ ライブラリの I/O スレッド: START SLAVE ステートメントがスレーブ ライブラリから実行を開始すると、スレーブ ライブラリは I/O スレッドを作成し、メイン ライブラリに接続し、メイン ライブラリに更新を送信するように要求します。バイナリログ内のレコードをライブラリから取得します。スレーブ ライブラリの I/O スレッドは、メイン ライブラリの binlog 出力スレッドによって送信された更新を読み取り、これらの更新をリレー ログ ファイルを含むローカル ファイルにコピーします。

ライブラリからの SQL スレッド: ライブラリから SQL スレッドを作成します。このスレッドは、ライブラリの I/O スレッドによってリレー ログに書き込まれた更新イベントを読み取り、実行します。

要約すると、次のことがわかります。

各マスター/スレーブ レプリケーション接続には 3 つのスレッドがあります。複数のスレーブ ライブラリを持つメイン ライブラリでは、メイン ライブラリに接続されているスレーブ ライブラリごとに binlog 出力スレッドが作成され、各スレーブ ライブラリには独自の I/O スレッドと SQL スレッドがあります。

2 つの独立したスレッドを作成することにより、スレーブ ライブラリはレプリケーション中のスレーブ ライブラリの読み取りと書き込みを分離します。したがって、実行を担当するスレッドの動作が遅くなったとしても、更新ステートメントの読み取りを担当するスレッドは遅くなりません。たとえば、スレーブ ライブラリがしばらく実行されていない場合、ここでスレーブ ライブラリを開始すると、SQL スレッドの実行は遅くなりますが、I/O スレッドはメイン ライブラリからすべての binlog コンテンツを迅速に読み取ることができます。このようにして、SQL スレッドがすべての読み取りステートメントの実行を完了する前にスレーブ ライブラリの実行が停止した場合でも、I/O スレッドは少なくともすべての内容を完全に読み取り、スレーブ ライブラリのローカル リレー ログにそれらを安全にバックアップします。 、次回スレーブ ライブラリが開始されたときにステートメントを実行する準備ができています。

以上がmysqlのマスタースレーブレプリケーションの原理は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。