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 リポジトリの構築に関するチュートリアル

推薦する

MySQL が外部キーを作成できない理由と解決策

2 つのテーブルを関連付けるときに、外部キーを作成できませんでした。このブログから、問題は、ポイント...

HTMLページがincludeを使用してphpファイルをインポートした後に余分な空白行があります

インターネットで見つけた方法は効果的ですinclude によって導入されたフッター ファイルとヘッダ...

JavaScript 非同期プログラミングにおける Promise の初期の使用法の詳細な説明

1. 概要Promise オブジェクトは、ES6 で提案された非同期プログラミングの仕様です。非同期...

モバイル端末の適応により、px は自動的に rem に変換されます。

まずpostcss-pxtoremをインストールします: npm install postcss-p...

CSS3で実装された水平ヘッダーメニュー

結果:実装コードhtml <nav class="dropdownmenu"...

バックエンドの権限に基づいてナビゲーション メニューを動的に生成する Vue-router のサンプル コード

目次js の1. グローバルガードを登録する2. Vuex 状態管理グローバルキャッシュルート3. ...

MySQL データテーブルのパーティション戦略と利点と欠点の分析

目次なぜパーティションが必要なのでしょうか?パーティショニング戦略パーティションの危険性なぜパーティ...

sqlite3 から mysql に移行するときに起こりうる問題のコレクション

簡単な説明適切な読者: モバイル開発sqlite3 データを mysql に移行する場合、多くの構文...

Apache での ModSecurity のインストール、有効化、および構成

ModSecurity は、Web サーバーに入るすべてのパケットをチェックする強力なパケット フィ...

MySQL で union all を使用してユニオンソートを取得する方法

プロジェクトでは、何らかの不可逆的な理由により、テーブルに保存されたデータがページの表示要件を満たす...

Zabbixで電子メールアラートを実装する方法

オンラインチュートリアルに従って実装しました。 zabbix3.4、スクリプトとsendEmailを...

CentOS7環境でDockerを使ってPHP動作環境を構築する手順を詳しく解説

関連記事: CentOS7でyumを使用してDockerをインストールするDockerを使ってWin...

MySQLのlike演算子の詳細

1. はじめに不明な値または部分的に既知の値をフィルタリングする場合は、like 演算子を使用でき...

Nginxリバースプロキシ設定でプレフィックスが削除される

nginx をリバース プロキシとして使用する場合、リクエストをそのまま次のサービスに転送するだけで...

知っておくべき 7 つのネイティブ JS エラーの種類

目次概要1. 範囲エラー2. 参照エラー3. 構文エラー4. タイプエラー5. URIエラー6. 評...