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

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

青灯夜游
青灯夜游オリジナル
2022-06-27 15:37:045118ブラウズ

mysql では、マスター/スレーブ レプリケーションとは、MySQL データベース サーバーのマスター ノードから 1 つ以上のスレーブ ノードにデータをコピーできることを意味します。デフォルトでは、非同期レプリケーションが使用されます。マスター/スレーブ レプリケーションを使用する利点: 1. マスター データベースが書き込みを担当し、スレーブ データベースが読み取りを担当します。マスター データベースがテーブルをロックすると、スレーブからの読み取りによってビジネスの通常の動作が保証されます。データベース; 2. データのホット バックアップを実行できます; 3. アーキテクチャを拡張すると、ディスク I/O アクセスの頻度が減り、単一マシンの I/O パフォーマンスが向上します。

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

このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。

mysql マスター/スレーブ レプリケーションとは何ですか?

MySQL マスター/スレーブ レプリケーションとは、MySQL データベース サーバーのマスター ノードから 1 つ以上のスレーブ ノードにデータをコピーできることを意味します。 MySQL はデフォルトで非同期レプリケーションを使用するため、スレーブ ノードは自身のデータを更新するために常にマスター サーバーにアクセスする必要はありません。データの更新はリモート接続で実行できます。スレーブ ノードはすべてのデータベースまたは特定のデータベースをコピーできます。マスター データベースまたは特定のテーブル。

マスター/スレーブ レプリケーションが必要な理由は何ですか?

1. 複雑なビジネスを行うシステムでは、SQL ステートメントでテーブルをロックする必要がある状況があり、その結果、読み取りサービスが一時的に使用できなくなり、大きな影響が生じます。実行中のビジネス。マスター/スレーブ レプリケーションを使用し、メイン ライブラリが書き込みを担当し、スレーブ ライブラリが読み取りを担当します。この方法では、メイン ライブラリがテーブルをロックしている場合でも、ビジネスの通常の動作を維持できます。スレーブライブラリから読み込むことで保証されます。

2. データのホット バックアップ

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

mysql レプリケーションの原則

原則:

(1) マスター サーバーは、 data バイナリ バイナリ ログを記録します。マスター上のデータが変更されると、変更はバイナリ ログに書き込まれます。

(2) スレーブ サーバーは、一定時間内にマスター バイナリ ログで変更が発生したかどうかを検出します。変更が発生した場合は、I/OThread を開始してマスター バイナリ イベントを要求します

(3) 同時に、マスター ノードはバイナリを送信するために各 I/O スレッドのダンプ スレッドを開始します。スレーブ ノードのローカル リレー ログに対して、スレーブ ノードは SQL スレッドを開始してリレー ログからバイナリ ログを読み取り、それをローカルで再生して、データとマスター ノードのデータの一貫性を確保します。最後に、I/OThread と SQLThread はスリープ状態に入り、次回起動されるのを待ちます。

言い換えると:

  • スレーブ ライブラリは 2 つのスレッド、1 つの I/O スレッドと 1 つの SQL スレッドを生成します;
  • I /O スレッドはメイン ライブラリの binlog を要求し、取得した binlog をローカルのリレー ログ (リレー ログ) ファイルに書き込みます。
  • メイン ライブラリはログ ダンプ スレッドを生成してスレーブに提供します。ライブラリ I/O スレッドは binlog を渡します;
  • SQL スレッドはリレー ログ ファイル内のログを読み取り、それを SQL ステートメントに解析して 1 つずつ実行します;

#注:

  • – マスターは操作ステートメントを binlog ログに記録し、スレーブにリモート接続許可を付与します (マスターは binlog バイナリ ログ機能を有効にする必要があります。通常はデータ セキュリティのため)そのため、スレーブもバイナリログ機能をオンにします)。

  • –スレーブは、IO スレッドと SQL スレッドの 2 つのスレッドを開きます。その中には、IO スレッドはマスターのバイナリ ログ コンテンツをリレー ログに読み取る責任があり、SQL スレッドはバイナリ ログ コンテンツをリレー ログから読み取り、それをスレーブ データベースに更新して、スレーブが確実にデータとマスターデータの一貫性が維持されます。

  • –Mysql レプリケーションには、少なくとも 2 つの Mysql サービスが必要です。もちろん、Mysql サービスは異なるサーバーに分散することも、1 つのサーバーで複数のサービスを開始することもできます。

  • -Mysql レプリケーションは、マスター サーバーとスレーブ サーバーの Mysql バージョンが同じであることを確認するのに最適です (バージョンが一貫していない場合は、マスター ノードのバージョンが同じであることを確認してください)スレーブ ノードのバージョンよりも低い)

  • –マスター ノードとスレーブ ノード間の時間を同期する必要があります

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

##具体的な手順:

1. スレーブ ライブラリは、接続するユーザー (ユーザー、ユーザー、パスワード、ポート、IP)、バイナリ ログの開始点をスレーブ ライブラリに知らせます。Position (ファイル名位置番号); start smile

2. スレーブ ライブラリの IO スレッドとスレーブ ライブラリ間の接続を確立します。メインライブラリのダンプスレッド。

3.change master to ステートメントによって指定されたファイル名と位置番号に基づいて、スレーブ ライブラリは IO スレッドからマスター ライブラリへのバイナリ リクエストを開始します。

4. メイン ライブラリのダンプ スレッドは、スレーブ ライブラリの要求に従って、イベントの形式でローカル バイナリ ログをスレーブ ライブラリ IO スレッドに送信します。

5. ライブラリ IO スレッドから binlog イベントを受信し、ローカルのリレーログに保存します。送信された情報は master.info

に記録されます。

6. データベース SQL スレッドからリレーログを適用し、適用された情報をリレーログ.info に記録します。デフォルトでは、適用されたリレーは自動的にクリーンアップされます。

mysql マスター/スレーブ形式

(1) 1 つのマスターと 1 つのスレーブ

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

(2) マスター間レプリケーション

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

#(3) 1 つのマスターと複数のスレーブ

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

(4) 複数のマスターと 1 つのスレーブ

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

(5) カスケード レプリケーション

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

##mysql マスター/スレーブ同期遅延分析Mysql のマスター/スレーブ レプリケーションはシングルスレッド操作であり、メイン ライブラリすべての DDL を処理します および DML によって生成されたログは binlog に書き込まれます。binlog は順次書き込まれるため、非常に効率的です。スレーブの SQL スレッド スレッドは、スレーブ内のメイン ライブラリの DDL および DML 操作イベントを再生します。 DML と DDL の IO 操作はシーケンシャルではなくランダムであるため、コストが非常に高くなりますが、一方で、SQL スレッドもシングルスレッドであるため、メイン ライブラリの同時実行性が高いと、生成される DML の数が増加します。スレーブの SQL スレッドの処理速度を超えている場合、またはスレーブにロック待機を引き起こす大規模なクエリ ステートメントがある場合、遅延が発生します。

解決策:

1. ビジネス永続層の実装にはサブデータベース アーキテクチャが採用されており、mysql サービスを並行して拡張して圧力を分散できます。

2. 圧力を分散するために、単一のライブラリ、1 つのマスターと複数のスレーブ、マスターが書き込み、スレーブが読み取りで読み取りと書き込みを分離します。このようにして、スレーブ ライブラリの圧力はメイン ライブラリの圧力よりも高く、メイン ライブラリを保護します。

3. サービス インフラストラクチャは、ビジネスと mysql の間に memcache または redis キャッシュ層を追加します。 mysql の読み取り圧力を軽減します。

4. さまざまなビジネスの MySQL は、圧力を分散するために物理的にさまざまなマシンに配置されます。

5. メイン データベースよりも優れたハードウェア デバイスをスレーブとして使用すると、Mysql の負荷が軽減され、遅延も自然に小さくなります。

6. より強力なハードウェア機器を使用する

[関連する推奨事項:

mysql ビデオ チュートリアル

]

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

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