マスタースレーブレプリケーションがなぜ必要なのでしょうか? 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スレッドはスリープ状態に入り、次回起動されるまで待機します。 つまり:
知らせ: 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モジュールに次の設定情報を追加します
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 の他の関連記事をご覧ください。 以下もご興味があるかもしれません:
|
<<: Zabbixは複数のmysqlプロセスの監視を実装します
>>: vue で wangEditor を使用する方法と、データをエコーしてフォーカスを取得する方法
1. フローティングとは何ですか?フローティングは、その名の通り、浮遊することを意味します。要素がド...
第一に: CSSを導入する4つの方法CSS を導入する方法には、インライン スタイル、埋め込みスタイ...
ノードにおけるhttpの役割は何ですか? httpモジュールの役割は、サーバーの作成と記述を支援する...
MySQL を長い間使用してきた多くの人は、これら 2 つのフィールド属性の概念をまだよく理解して...
以前のブログのログインページを作成していたときに、この問題に遭遇しました。突然、透明な背景画像と不透...
この記事では、 Dockerコンテナ ( docker-composeを使用してオーケストレーション...
実験環境は以下のとおりですここでは、4 台のサーバー (1 台の nginx、負荷用の 2 台の t...
目次順序1. 集中ルーティング2. ファイルディレクトリ3. CompileRouterを作成する4...
背景クラスメートと row_id の境界問題について話し合ったので、ここで詳しく説明します。 Inn...
目次ウェブパック5公式スタート建築ガイド構築を開始する依存する準備が完了したら、プロジェクトの構築を...
MySQL への接続時に発生する 1449 および 1045 例外の解決方法 mysql 1449:...
コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...
1. vertical-align プロパティは次の効果を実現します。 vertical-alig...
1. イメージをプルするdocker pull registry.cn-hangzhou.aliyu...
汎用ロード/書き込みメソッドオプションを手動で指定するSpark SQL の DataFrame イ...