MySQL マスタースレーブレプリケーションの原理からインストールと設定までを包括的に解説します。

MySQL マスタースレーブレプリケーションの原理からインストールと設定までを包括的に解説します。

マスタースレーブレプリケーションがなぜ必要なのでしょうか?

1. 複雑な業務システムでは、SQL 文でテーブルをロックする必要があり、その結果、読み取りサービスが一時的に使用できなくなり、業務の実行に大きな影響を与えるシナリオがあります。マスター スレーブ レプリケーションを使用して、マスター データベースが書き込みを担当し、スレーブ データベースが読み取りを担当するようにします。このようにして、マスター データベースがテーブルをロックした場合でも、スレーブ データベースからの読み取りによって業務の正常な動作を保証できます。

2. データのホットバックアップを実行する

3. 建築の拡張。業務量が増えると、I/O アクセス頻度が高くなりすぎて、1 台のマシンでは対応できなくなります。このような場合、複数のデータベースを使用してデータを保存し、ディスク I/O アクセス頻度を減らして、1 台のマシンの I/O パフォーマンスを向上させます。

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

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

MySQL レプリケーションの原理

原理:

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

(2)スレーブサーバは、一定時間間隔でマスターバイナリログが変更されたかどうかを検出し、変更があった場合はI/Oスレッドを開始してマスターバイナリイベントを要求します。

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

つまり:

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

知らせ:

1 - マスターは操作ステートメントを binlog ログに記録し、スレーブにリモート接続権限を付与します (マスターは binlog バイナリ ログ機能を有効にする必要があります。通常、データ セキュリティを考慮して、スレーブも binlog 機能を有効にします)。

2--スレーブは IO スレッドと SQL スレッドの 2 つのスレッドを開始します。そのうち、IO スレッドはマスターのバイナリログの内容をリレー ログに読み込む役割を担い、SQL スレッドはリレー ログからバイナリログの内容を読み取り、スレーブのデータベースに更新して、スレーブ データがマスター データと一致するようにする役割を担います。

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

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

5--マスターノードとスレーブノード間の時間を同期する必要がある

具体的な手順:

1. スレーブデータベースは、接続されたユーザーのすべての条件(ユーザー、パスワード、ポート、IP)を提供し、スレーブデータベースにバイナリログの開始位置(ファイル名の位置番号)を知らせて、手動でマスターデータベースへの変更ステートメントを実行してマスターデータベースに接続します。

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

3. スレーブ IO スレッドは、change master to ステートメントによって提供されたファイル名と位置番号に基づいて、マスターへの binlog 要求を開始します。

4. マスター データベース ダンプ スレッドは、スレーブ データベースの要求に基づいて、ローカル バイナリ ログをイベントの形式でスレーブ データベース IO スレッドに送信します。

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

6. データベースの SQL スレッドからリレー ログを適用し、適用されたレコードをリレー ログ.info に保存します。デフォルトでは、適用されたリレーは自動的に削除されます。

MySQL マスタースレーブレプリケーションのインストールと構成

1. 基本的なセットアップの準備

オペレーティング·システム:

セントロス6.5

MySQLバージョン:

5.7

2 つの仮想マシン:

ノード1:192.168.85.11 (プライマリ)

ノード2:192.168.85.12 (スレーブ)

2. MySQLデータベースをインストールする

詳細なインストールおよびアンインストール手順については、対応するドキュメントを参照してください。

3. 2つのデータベースにデータベースを作成する

--両方のマシンが実行する必要があることに注意してください

データベース msb を作成します。

4. プライマリ (ノード 1) サーバーで次の設定を行います。

設定ファイルを変更し、次のコマンドを実行してMySQL設定ファイルを開きます。

vi /etc/my.cnf

mysqldモジュールに次の設定情報を追加します

log-bin=master-bin #バイナリファイル名

binlog-format=ROW #バイナリログ形式。行、ステートメント、混合の3つの形式があります。行は、スレーブサーバーでコマンドを実行する代わりに、変更された内容をコピーすることを意味します。ステートメントは、マスターサーバーで実行されたSQLステートメントを実行し、同じステートメントをスレーブサーバーで実行することを意味します。 MySQL はデフォルトでステートメントベースのレプリケーションを使用するため、より効率的です。混合とは、ステートメントベースのレプリケーションがデフォルトで使用されることを意味します。ステートメントベースのレプリケーションを正確にレプリケートできないことが判明すると、行ベースのレプリケーションが使用されます。

server-id=1 #各サーバーのIDが異なる必要があります

binlog-do-db=msb #同期されたデータベース名

5. サーバーからマスターサーバーにログインするためのアカウント認証を構成する

--認証操作

グローバルvalidate_password_policyを0に設定します。

グローバルvalidate_password_lengthを1に設定します。

'123456' で識別される 'root'@'%' に *.* 上のレプリケーション スレーブを付与します。

--権限を更新

権限をフラッシュします。

6. スレーブサーバーの構成

設定ファイルを変更し、次のコマンドを実行してMySQL設定ファイルを開きます。

vi /etc/my.cnf

mysqldモジュールに次の設定情報を追加します

log-bin=master-bin #バイナリファイル名 binlog-format=ROW #バイナリファイルの形式 server-id=2 #サーバーID

7. プライマリサーバーのmysqldサービスを再起動します。

MySQLサービスを再起動する

サービスmysqldを再起動

MySQLデータベースにログインする

mysql -uroot -p

マスターのステータスを確認する

マスターステータスを表示します。

8. スレーブサーバーを再起動し、関連する設定を行う

MySQLサービスを再起動する

サービスmysqldを再起動

mysqlにログイン

mysql -uroot -p

メインサーバーに接続する

マスターをmaster_host='192.168.150.11'、master_user='root'、master_password='123456'、master_port=3306、master_log_file='master-bin.000001'、master_log_pos=334に変更します。

スレーブを起動

スレーブを開始

スレーブステータスを確認する

スレーブステータスを表示\G (セミコロンがないことに注意してください)

9. この時点で、マスター サーバーで関連データを追加および削除したり、スレーブ サーバーで関連ステータスを表示したりできます。

データベースに関する知識やその他の Java 関連の知識は、私のコード クラウドにアップロードされています。必要な場合は取得できます。

個人コードクラウドアドレス

上記は、MySQL マスタースレーブ レプリケーションの原理からインストールと構成の詳細まで、包括的な解説です。MySQL マスタースレーブ レプリケーションの詳細については、123WORDPRESS.COM の他の関連記事をご覧ください。

以下もご興味があるかもしれません:
  • MySQL マスタースレーブレプリケーションにおける重複キーの問題を修正する方法
  • MySql マスタースレーブレプリケーションメカニズムの包括的な分析
  • MySQL マスタースレーブレプリケーションと読み取り書き込み分離の詳細な説明
  • MYSQL データベース GTID はマスタースレーブレプリケーションを実現します (超便利)
  • MySql マスタースレーブレプリケーションの実装原理と構成
  • MySQL マスタースレーブレプリケーションの原理と注意点
  • MySQL マスタースレーブレプリケーションでエラーをスキップする方法
  • MySQL マスタースレーブレプリケーション構成プロセス
  • MySQL マスタースレーブレプリケーションのいくつかのレプリケーション方法の概要
  • MySQL マスタースレーブレプリケーション切断の一般的な修復方法

<<:  Zabbixは複数のmysqlプロセスの監視を実装します

>>:  vue で wangEditor を使用する方法と、データをエコーし​​てフォーカスを取得する方法

推薦する

HTML の順序付きリスト、順序なしリスト、定義リストに関する簡単な説明

順序付きリストXML/HTML コードコンテンツをクリップボードにコピー<オルタイプ= &qu...

MySQL グローバルロックとテーブルレベルロックの具体的な使用法

目次序文グローバルロックテーブルロックテーブルロックメタデータ ロック (MDL ロック)要約する参...

MySQL を暗号化および復号化するいくつかの方法 (要約)

目次前面に書かれた双方向暗号化エンコード/デコードAES_ENCRYPT/AES_DECRYPT D...

タブ切り替え機能を実装するJavaScriptカスタムプラグイン

この記事では、タブ切り替え機能を実装するためのJavaScriptの具体的なコードを参考までに共有し...

XHTMLコードの一般的なアプリケーション問題をまとめる

<br />しばらくの間、多くの人が XHTML の使い方を知らないことに気付きました。...

mysql データ型変換の実装

1. 問題下図のような表があり、結果値がreference_high値より大きいデータを見つける必要...

ウェブデザインの教育または学習プログラム

セクションコース内容営業時間1 ウェブデザインの概要2 2 HTML 基本タグとフォーマットタグ 2...

Pengyou.com モバイル クライアントのダウンロード ページのデザイン共有 (画像とテキスト)

まずは簡単なデータを見てみましょう。 Googleが発表したレポートによると、 ①中国の都市の97%...

Nginx は rtmp ライブ サーバーの実装コードを構築します

1. nginxソースディレクトリに新しいrtmpディレクトリを作成し、git clone http...

MySQL 8.0.11 圧縮バージョンを Windows 10 にインストールするための詳細なチュートリアル

最近コンピュータを再インストールした後、最新バージョンのみをインストールするという強迫観念に基づいて...

フレックスレイアウトにおける画像変形の解決策の詳細な説明

フレックス レイアウトは現在よく使用されるレイアウト方法ですが、場合によっては小さな問題が発生するこ...

MySQL でのワイルドカードを使用したファジークエリの実装に関する簡単な説明

MySQL データベースでは、あいまいクエリが必要な場合にワイルドカードを使用します。まず、演算子と...

CSSを使用して3Dフォトウォール効果を作成する

CSS を使用して 3D フォト ウォールを作成します。具体的なコードは次のとおりです。 <!...

MySQLユーザーと権限管理の詳細な説明

この記事では、例を使用して MySQL ユーザーと権限の管理について説明します。ご参考までに、詳細は...