MySQL クラスタの詳細な説明: 1 つのマスターと複数のスレーブのアーキテクチャ実装

MySQL クラスタの詳細な説明: 1 つのマスターと複数のスレーブのアーキテクチャ実装

実験環境:

1. CentOS 7 サーバー 3 台

2. mysql5.7.26 (3台のマシンはすべてyum経由でインストールされています)

サーバーリスト

7.100.222.111マスター
47.103.211.5奴隷1
47.103.98.221奴隷2

MySQLをまだインストールしていない場合は、インストールチュートリアルをご覧ください: MySQLのインストール

1. 概要:

アーキテクチャ図:

この種のアーキテクチャはスタートアップ企業でよく使用され、その後の拡張にも便利です。

特徴:

1. 読書のプレッシャーを軽減できます。

2. 低コスト、迅速、便利な導入

3. 読み取りと書き込みの分離

4. スレーブを時間内に追加することで、データベースの読み取り負荷を軽減することもできます。

5. メインデータベースの単一障害点

6. データの一貫性の問題(同期の遅延が原因)

7. ホストがダウンすると書き込み操作は実行できなくなります

2. クラスターの構築

1. 設定ファイルを変更する

次のコマンドを使用して、3 つのサーバー上の構成ファイルをそれぞれ変更します。

$ vim /etc/my.cnf

3 つのサーバーの /etc/my.cnf MySQL 構成ファイルにそれぞれ次の内容を追加します。

マセター奴隷1奴隷2

サーバーID=1

#メインデータベースのbinlogログを開く

ログ bin = /var/lib/mysql/mysql-bin

サーバーID=2サーバーID=3

2. マスターデータベースにレプリケーションユーザーを作成する

mysqlコマンドの下に次のコマンドを入力して、スレーブライブラリ(スレーブ)のユーザーを作成し、マスターライブラリ(マスター)をコピーします。

mysql> '123456' で識別される 'test'@'%' に *.* 上のレプリケーション スレーブを許可します。
クエリは正常、影響を受けた行は 0 行 (0.00 秒)
 
mysql> 権限をフラッシュします。
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

3. スレーブデータベースをマスターデータベースに関連付ける

マスターライブラリのステータスを表示するには、次のコマンドを使用します。

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

以下の情報を出力します。もちろん、あなたの情報は私のものとは異なる場合があります。

mysql> マスターステータスを表示します。
+------------------+----------+--------------+------------------+------------------+
| ファイル | 位置 | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+------------------+
| mysql-bin.000002 | 5141037 | | | |
+------------------+----------+--------------+------------------+------------------+
セット内の 1 行 (0.00 秒)

上記の結果からわかるように、ここではファイルと位置のみを確認する必要があります。他の 2 つはホワイトリストとブラックリストで、どのデータベースが同期され、どのデータベースが同期されないかを意味します。これらは必要に応じて設定できます。上記の最初の 2 つのフィールドを記録した後 ()。

2 つのスレーブで次のコマンドを実行します。

mysql> マスターを、master_host='47.100.222.111'、master_port=3306、master_user='test'、master_password='123456'、master_log_file='mysql-bin.000002'、master_log_pos=5141037 に変更します。
 
mysql> 権限をフラッシュします。
 
mysql> スレーブを起動します。

実行が完了したら、スレーブ ライブラリで次のステートメントの実行を続行します。

mysql> スレーブステータスを表示します\G;

以下の情報が出力されます。

************************** 1. 行 ****************************
Slave_IO_State: マスターがイベントを送信するのを待機中
マスターホスト: 47.100.225.121
Master_User: ヘルパー
マスターポート: 3306
接続再試行: 60
マスターログファイル:mysql-bin.000002
読み取りマスターログ位置: 5141037
リレーログファイル: slave1-relay-bin.000003
リレーログ位置: 5140628
リレーマスターログファイル: mysql-bin.000002
スレーブIO実行中: はい
スレーブSQL実行中: はい
レプリケート_Do_DB:
レプリケート_無視_DB:
----------以下省略

Slave_IO_Running: と Slave_SQL_Running: の両方が YES の場合、構成は成功します。

この時点で、マスター 1 台とスレーブ 2 台の構築は完了しており、マスター 1 台とスレーブ複数台のインストールも同様です。マスター データベース上にデータベースまたはテーブルを作成すると、スレーブ データベースがそれを複製します。

上記は、編集者が紹介したMySQLクラスタの1マスター複数スレーブアーキテクチャの詳細な説明と統合です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。編集者がすぐに返信します。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • MySQL 構成マスタースレーブサーバー (マスター 1 台とスレーブ複数台)
  • Mysql 1マスターと複数スレーブの導入の実装手順

<<:  HTMLからReactを実装する方法を教えます

>>:  Centos 用の rpm パッケージのカスタマイズと yum リポジトリの構築に関するチュートリアル

推薦する

mysql8.0.11 winx64 手動インストールと設定チュートリアル

まず、私の日常生活についてお話しします。MySQLの急速なアップデートにより、MySQLはバージョン...

Linux の非常に詳細な gcc アップグレード プロセス

目次序文1. 現在のgccバージョン2. gccをインストールする3.gmpのインストール4.MPF...

MySQL のロックの仕組みと使用法の分析

この記事では、例を使用して MySQL のロック メカニズムと使用方法を説明します。ご参考までに、詳...

要素の幅(高さ)の適応を実現するCSSおよびCSS3の柔軟なボックスモデル

1. CSSは左の固定幅と右の適応幅を実現します1. ポジショニング <!DOCTYPE ht...

HTML マウス CSS コントロール

一般的に、マウスは上向きの斜め矢印として表示され、テキストの上に移動すると垂直線になり、ハイパーリン...

Vue+Elementバックグラウンド管理フレームワークの統合実践

目次Vue+ElementUI バックグラウンド管理フレームワークでは、ElementUI とは何で...

MySQLはイベントを使用してスケジュールされたタスクを完了します

イベントでは、SQL コードを 1 回または一定の間隔で実行することを指定できます。通常、複雑な S...

Vue3+スクリプト設定+ts+Vite+Volarプロジェクト

目次Viteを使用してvue + tsプロジェクトを作成するVue 3の3つの構文オプションAPIコ...

Vue+SpringBoot+Shiroのクロスドメイン問題を解決する

目次1. Vueフロントエンドを構成する1. クロスドメイン構成を開発する2. 本番環境のクロスドメ...

Vue+echarts でプログレスバーのヒストグラムを実現

この記事では、プログレスバーヒストグラムを実現するためのvue+echartsの具体的なコードを参考...

MYSQL の 10 の典型的な最適化ケースとシナリオ

目次1. SQL最適化の一般的な手順1. SQL実行計画の分析を説明する2. プロフィール分析を表示...

ウェブサイトのテキストはまだデザインする必要がありますか?

多くの人が、ウェブサイト上のテキストはデザインする必要があるのか​​と疑問に思うかもしれません。多く...

JS は VUE コンポーネントに基づいて都市リスト効果を実装します

この記事の例では、VUEコンポーネントに基づいて都市リストエフェクトを実装するための具体的なコードを...

Dockerコンテナでユーザーを切り替えるときに権限が不足する問題を解決する方法

Docker コンテナでユーザーを切り替えると、権限が不十分であるというメッセージが表示されます。解...