mysql では、マスター/スレーブ レプリケーションとは、MySQL データベース サーバーのマスター ノードから 1 つ以上のスレーブ ノードにデータをコピーできることを意味します。デフォルトでは、非同期レプリケーションが使用されます。マスター/スレーブ レプリケーションを使用する利点: 1. マスター データベースが書き込みを担当し、スレーブ データベースが読み取りを担当します。マスター データベースがテーブルをロックすると、スレーブからの読み取りによってビジネスの通常の動作が保証されます。データベース; 2. データのホット バックアップを実行できます; 3. アーキテクチャを拡張すると、ディスク I/O アクセスの頻度が減り、単一マシンの I/O パフォーマンスが向上します。
このチュートリアルの動作環境: 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 はスリープ状態に入り、次回起動されるのを待ちます。
言い換えると:
#注:
##具体的な手順:
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 つのスレーブ
(2) マスター間レプリケーション
#(3) 1 つのマスターと複数のスレーブ
(4) 複数のマスターと 1 つのスレーブ
(5) カスケード レプリケーション
##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 サイトの他の関連記事を参照してください。