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

推薦する

MySQL の重複データの処理方法 (防止と削除)

一部の MySQL テーブルには重複レコードが含まれている場合があります。重複データが存在することを...

JavaScript を使用して div の位置をドラッグして入れ替える例

1 実施原則これは、DOM 要素の dragstart/ondragover/ondrop イベント...

1 つ以上の Linux インスタンスから SSH キー ペアのバインドを解除します。

キーペアの分離1 つ以上の Linux インスタンスから SSH キー ペアのバインドを解除します。...

ウェブデザインのためのオンライン開発ツール10選の紹介

1. オンラインテキストジェネレーターBlindTextGenerator: デザイナーにとって、こ...

nginx がアップストリーム アドレスにジャンプしない問題の解決方法

序文今日、nginx で非常に奇妙な問題に遭遇しました。フロントエンドの tomcat がページにジ...

7つの基本的なXHTMLコーディングルールの概要

1. すべてのタグには対応する終了タグが必要です以前の HTML では、<p> や &l...

CocosCreatorゲームにおける魚群アルゴリズムの詳細な説明

序文最近CocosCreatorを学びたいと思ったので、エディターをダウンロードして起動しました。誰...

MySQL 8.0.13 で日付を 0000-00-00 00:00:00 に設定すると発生する問題を解決する

データベース操作を学び始めたばかりです。今日、データを保存していたところ、エラーが発生していることに...

mysql 行列変換サンプルコード

1. 需要3 つのテーブルがあります。一定期間にわたるさまざまな抗生物質感受性の結果、つまり rep...

Linux で完全な Samba サーバーを構築する方法 (CentOS バージョン)

序文smb は、クライアントとサーバー間の Web 接続および情報通信に使用できるプロトコルの名前で...

vueの実践的な応用におけるvuexの永続性の詳細な説明

目次vuex 永続性要約するvuex 永続性vuex: ブラウザを更新すると、vuexの状態は初期状...

Vue フロントエンドで PDF を生成してダウンロードする方法

目次1. インストールと導入2. PDFファイルをパッケージ化してエクスポートする方法構成の詳細PD...

Vue3 手動カプセル化ポップアップ ボックス コンポーネント メッセージ メソッド

この記事では、ポップアップボックスコンポーネントメッセージのVue3手動カプセル化の具体的なコードを...

CSS で要素フローティングとクリアフローティングを実装する方法

フローティングの基礎標準ドキュメント フローでは、要素は塊級元素と行內元素の 2 種類に分けられます...

ネイティブ JS 音楽プレーヤー

この記事の例では、音楽プレーヤーを実装するためのJSの具体的なコードを参考までに共有しています。具体...