MYSQL マスタースレーブ レプリケーションの知識ポイントの概要

MYSQL マスタースレーブ レプリケーションの知識ポイントの概要

単一の MYSQL サーバーが現在の Web サイトのトラフィックに対応できない場合の最適化ソリューション。 MySQL クラスタ テクノロジーを構築する必要があります。

1. 機能:

マスター サーバーでデータを挿入、変更、または削除すると、データは自動的にスレーブ サーバーに同期されます。

注意: マスタースレーブレプリケーションは一方向で、マスターからスレーブへのみ

2 つのタイプがあります: 送信タイプ (マスター 1 台とスレーブ複数台): 一般的に、バックアップや読み取り/書き込み分離に使用されます。

リング(マルチマスターとマルチスレーブ):一般的な用途:メインサーバーに大きな負荷がかかっている場合、地域をまたいだウェブサイトでデータの同期を実現できます。

リング構造では、3 つのサーバー上の同じテーブルに同時にレコードが挿入されると、「ID 競合問題」が発生します。

解決策: 3 つのサーバーで異なる ID を生成できるようにします。

最初のもの: 1、4、7...

2 番目のチャネル: 2、5、8...

チャンネル3: 3、6、9...

これは MYSQL 構成ファイルで設定できます:

2. マスタースレーブの原理(bin logを使用)

MySQLにはbin log(バイナリログ)と呼ばれるログがあります。このログには、データベースを変更するすべての SQL ステートメント (挿入、更新、削除、ALTER TABLE、許可など) が記録されます。マスタースレーブレプリケーションの原理は、実際にはマスターサーバー上の BIN ログをスレーブサーバーにコピーして再度実行し、スレーブサーバーのデータがマスターサーバーのデータと同じになるようにすることです。

拡張子: mysql のログ:

クエリログ エラーログ Binログ

スロー ログ: 0.5 秒などの時間しきい値を設定すると、実行時間がこの値を超えるすべての SQL ステートメントが将来記録されます。このようにして、遅い SQL ステートメントを記録し、それらを個別に最適化することができます。

目的: ウェブサイトのパフォーマンスを低下させている SQL をすばやく見つけ、インデックスを作成してこの SQL の結果をキャッシュすることで最適化できます。

3. 実際の構成

Windows システムの MYSQL をマスター サーバーとして使用し、LINUX の MYSQL をスレーブ サーバーとして使用します。

プライマリサーバー:

1. ビンログを有効にする

mysql 構成ファイル my.ini を変更します:

サーバーにサーバーIDを割り当てます(マスターサーバーとスレーブサーバーのID値は重複できません)

リングサーバーの場合は、次の項目を追加する必要があります。

log-slave-updates = on // リングマルチサーバーの場合はこの項目を設定する必要があります。

スレーブサーバーがデータを同期するためのアカウントをマスターサーバー上に作成する

MYSQLにログイン

SQL を実行します。

REPLICATION SLAVE 権限のみを持つアカウントを作成しました: ユーザー名: slave パスワード: 1234

プライマリサーバーでSQLを実行して、プライマリサーバーの現在のbinログのステータスを表示します。

注意:これら 2 つの値はデータを変更するたびに変更されるため、これら 2 つの値を確認した後は、マスター サーバーを操作せず、スレーブ サーバーの構成に直接進んでください。そうしないと、値が一致せず、同期が失敗します。

サーバーから (Linux):

ビンログを有効にする

設定ファイル /etc/my.cnf を変更します。

サーバー ID を設定します:

3. リングサーバーの場合は、次の項目を追加する必要があります。

log-slave-updates = on // リングマルチサーバーの場合はこの項目を設定する必要があります。

4. スレーブ サーバーで SQL ステートメントを実行して、マスター サーバーのアドレスを構成します。

MYSQLにログインします:

スレーブサーバーをセットアップしてレプリケーションを開始する

5. スレーブ サーバーのステータスが正常に構成されているかどうかを照会する SQL を実行します。

2 つの「はい」の場合、コードは成功です。仕上げる!

注意: 構成が成功するまで、マスター サーバー上のデータはスレーブ サーバーに自動的に転送されません。そのため、設定前にマスター サーバー上のすべてのデータをスレーブ サーバーに手動でインポートし、マスターとスレーブを設定した後にデータを同期する必要があります。

用途:

スレーブ サーバーはデータのバックアップ サーバーとして機能します。サーバーに大きな負荷がかかっている場合は、マスター/スレーブ サーバーを使用して読み取りトラフィックと書き込みトラフィックを分離し、サーバーの負荷を軽減できます。地域をまたいだウェブサイトの最適化

さまざまな地域に最適化された建築のアイデアを考慮して、メッセージボード機能を作成するにはどうすればよいでしょうか?

以上がMYSQLマスタースレーブレプリケーションの原理に関する知識ポイントのすべてです。123WORDPRESS.COMを学習してサポートしていただき、ありがとうございます。

以下もご興味があるかもしれません:
  • MySQL マスタースレーブレプリケーションの遅延の原因と解決策
  • MySQL マスタースレーブレプリケーション構成プロセス
  • MySQL マスタースレーブレプリケーションの原理からインストールと設定までを包括的に解説します。
  • MySQL マスタースレーブレプリケーションの原理と実践の詳細な説明
  • MySQL のマスタースレーブレプリケーションと読み取り書き込み分離の原理と使用法の詳細な説明
  • MySQL マスタースレーブレプリケーションの役割と動作原理の詳細な説明
  • MYSQL フルバックアップ、マスタースレーブレプリケーション、カスケードレプリケーション、および半同期の概要
  • MySQL マスタースレーブレプリケーションスレッドの状態遷移に関する詳細な理解
  • MySQL マスタースレーブレプリケーションでエラーをスキップする方法

<<:  Linux jdk のインストールと環境変数の設定チュートリアル (jdk-8u144-linux-x64.tar.gz)

>>:  シンプルなフロントエンドのページング効果を実現する js

推薦する

Tomcatの各ポートの機能の詳細な説明

tomcat 設定ファイルから、tomcat の起動時にデフォルトで 8080 (8443)、800...

Dockerfile テキストファイルの使用例の分析

Dockerfile は、イメージをビルドするために使用されるテキスト ファイルです。テキスト コン...

MySQL における一般的な高度な SQL ステートメント

MySQL 高度な SQL ステートメント kgc を使用します。 テーブルlocation(Reg...

Dockerで同じIDを持つ2つのイメージを削除する

今日 Docker コンテナを作成したとき、誤ってイメージの名前を間違って入力しました。その結果、コ...

MySQL テーブル フィールドの時間設定のデフォルト値

アプリケーションシナリオデータ テーブルでは、アプリケーションは各データがいつ作成されたかを記録する...

Logrotate は 2 時間ごとに Catalina.out ログローテーションを実装します

1. Logrotateツールの紹介Logrotate はログファイル管理ツールです。Linux に...

MySQL (InnoDB) がデッドロックを処理する方法の詳細な説明

1. デッドロックとは何ですか?正式な定義は次のとおりです: 2 つのトランザクションが相手側で必要...

CSS3 で翻訳効果 (transfrom: translate) を実装する例

移動を実現するためにtranslateパラメータを使用しますtranslateX: X 軸に沿って移...

Docker で onlyoffice をインストールして展開する詳細なプロセス

0. システム要件CPU I5-10400F以上メモリ 16 GB、32 GBのメモリが最適ハードド...

HTMLタグオーバーフロー処理アプリケーション

CSSを使用してスクロールバーを変更する1.コンテンツがオーバーフローした場合のオーバーフロー設定水...

スライダー効果を実装するミニプログラム

この記事の例では、スライディングブロック効果を実現するための小さなプログラムの具体的なコードを参考ま...

HTML の div、td、p およびその他のコンテナーでの強制改行と非改行の実装

1. 改行を強制せず、省略記号で終了します。コードをコピーコードは次のとおりです。 <div ...

暗号化における https の Apache 展開の概要

目次目的実験環境実験原理実験手順1. 独立したCAを生成する2. サーバーの秘密鍵と署名要求ファイル...

RedHat 6.5/CentOS 6.5 に MySQL 5.7.20 をインストールするための詳細なチュートリアル

rpmインストールパッケージをダウンロードするMySQL公式サイト: https://dev.mys...

Nginx で Angular プロジェクトを展開する際の落とし穴

コンパイル後にAngularプロジェクトをNginxにデプロイする方法をオンラインで検索すると、ほと...