MySQL マスタースレーブレプリケーションと読み取り書き込み分離の詳細な説明

MySQL マスタースレーブレプリケーションと読み取り書き込み分離の詳細な説明

記事マインドマップ

ここに画像の説明を挿入

マスター/スレーブ レプリケーションと読み取り/書き込み分離を使用する理由は何ですか?

通常、マスター/スレーブ レプリケーションと読み取り/書き込み分離は一緒に使用されます。目的は単純で、データベースの同時パフォーマンスを向上させることです。
単一のマシンで、読み取りと書き込みの両方を 1 つの MySQL で実行する場合、パフォーマンスは確実に高くならないことが想像できます。
MySQL サーバーが 3 台あり、1 つのマスターが書き込み操作のみを担当し、2 つのスレーブが読み取り操作のみを担当する場合、パフォーマンスは大幅に向上するのではないでしょうか。
したがって、マスター/スレーブ レプリケーションと読み取り/書き込み分離は、データベースがより高い同時実行性をサポートできるように設計されています。
業務量が拡大するにつれて、MySQL を単一のマシンに導入すると、I/O 頻度が高くなりすぎます。
マスター/スレーブ レプリケーションと読み取り/書き込み分離を使用すると、データベースの可用性が向上します。

マスタースレーブ複製の原理

①マスターノードが挿入、更新、削除操作を実行すると、順番にバイナリログに書き込まれます。
②スレーブデータベースはマスターメインデータベースに接続し、マスターによって作成されるバイナリログダンプスレッドの数はスレーブの数と同じです。
③マスターノードのバイナリログが変更されると、バイナリログダンプスレッドがすべてのスレーブノードに通知します。
対応するバイナリログの内容をスレーブノードにプッシュします。
④バイナリログの内容を受け取った後、I/Oスレッドはその内容をローカルのリレーログに書き込みます。
⑤SQLスレッドはI/Oスレッドによって書き込まれたリレーログを読み取り、リレーログの内容に基づいてスレーブデータベースに対して対応する操作を実行します。

ここに画像の説明を挿入

マスタースレーブレプリケーションの実装方法

** 環境表示、デモ用に2台の仮想マシンを使用、IPはマスター(135)と136(スレーブ)

より直感的にわかるように、次の図は 3 台のマシンの効果 (データの変更: 挿入、更新、削除など) を示しています。

マスター構成

**コマンドラインを使用してmysqlを入力します:

> mysql -uroot -p //パスワードを入力> //192.168.190.136はスレーブマシンのIPアドレスです
> 'rootroot' によって識別される 'root'@'192.168.190.136' に *.* のレプリケーション スレーブ権限を付与します。 
// システム権限テーブルを更新します。更新されていない場合は、システムを再起動して有効にします。 
> 権限をフラッシュします。

スレーブマシンを構成する際には、上記で構成したユーザーが必要になります。

次に、mysql 設定ファイル /etc/my.cnf に設定を追加します。

vim /etc/my.cnf // [mysqld] の下に # データベース ID 番号を追加します。 1 の場合はマスターを意味します。マスターとスレーブの master_id が一致しません。
サーバーID=1
# バイナリログを有効にする
ログ bin = mysql bin
#同期する必要があるデータベース。設定されていない場合は、すべてのデータベースが同期されます binlog-do-db=test
#binlog ログが保持される日数。10 日以上経過したログはクリアされます。
#ファイルが多すぎて大きくなりすぎてディスク容量が不足するのを防ぎます。
ログ有効期限日数=10

設定が完了したら、mysqlを再起動します。

systemctl で mariadb を再起動します。

次にmysqlに入り、現在のbinlogログ情報を確認し、記録します。

mysql -uroot -p

show master status\G //\G は機能的にセミコロン ";" と同等なので、ここでセミコロンを書く必要はありません。

ここに画像の説明を挿入
**

スレーブ構成

スレーブ構成はよりシンプルです。スレーブ マシンは /etc/my.cnf に server-id を追加できます。

# 他の MySQL サービス ID と重複しないでください server-id=111

次に、mysql コマンドラインにログインします。次のSQLを入力してください

マスターを変更 
MASTER_HOST='192.168.190.135', //ホストIP
MASTER_USER='root', // 以前に作成したユーザーアカウント MASTER_PASSWORD='rootroot', // 以前に作成したユーザーパスワード MASTER_LOG_FILE='mysql-bin.000002', // マスターホストの binlog ログ名 MASTER_LOG_POS=245, // binlog ログオフセット位置
master_port=3306;//ポート

操作が成功したら、スレーブサービスを開始します

スレーブを起動します。

次に、起動が成功したかどうかを確認します。

スレーブステータスを表示\G

次の情報が表示されます: (出力は長いため、一部のみが傍受されます)

ここに画像の説明を挿入

次にマスタースレーブレプリケーションをテストします

マスターホストで SQL を実行します。

テーブル「goods_brand」を作成します(
	`id` BIGINT (20) UNSIGNED NOT NULL auto_increment,
	`brand_name` VARCHAR (50) NOT NULL COMMENT 'ブランド名',
	`gmt_create` TIMESTAMP NOT NULL デフォルト CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP、
	`gmt_update` タイムスタンプ NULL ではない デフォルト '0000-00-00 00:00:00',
	主キー (`id`)
) ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT = 'Brand table';

実行が完了したら、ライブラリテーブルを更新して確認してみましょう。

ここに画像の説明を挿入

マスター マシンで実行しており、スレーブが直接それに同期していることがわかります。この時点で、mysql のマスター スレーブ同期は完了です。

読み書き分離に関しては、利用可能なソリューションと監視については次の章で記述し、リンクを補足します。

**注: この章の内容の一部は @Alibaba Cloud Developer から提供されています**

要約する

これで、MySQL マスター スレーブ レプリケーションと読み取り/書き込み分離についての写真とテキストによる説明は終了です。MySQL マスター スレーブ レプリケーションと読み取り/書き込み分離に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL マスタースレーブレプリケーション、読み取り/書き込み分離、バックアップとリカバリの詳細な説明
  • MySQL マスタースレーブレプリケーション 読み書き分離の設定方法の詳細説明
  • MySQL5.6 レプリケーション マスタースレーブレプリケーション(読み書き分離)構成 完全版
  • MySQL マスタースレーブレプリケーションの読み書き分離構造の詳細な説明
  • CentOS サーバー プラットフォームで MySQL マスター スレーブ レプリケーションと読み取り書き込み分離を構築する方法
  • MySQL のマスタースレーブレプリケーションと読み取り書き込み分離の原理と使用法の詳細な説明
  • MySQL マスタースレーブレプリケーションと読み取り書き込み分離の詳細な説明
  • MySQLのマスタースレーブレプリケーションと読み取り書き込み分離を理解するための記事

<<:  CSS3 で King of Glory マッチング人員読み込みページを実装する方法

>>:  XHTML の珍しいが便利なタグ

推薦する

MySQL マルチバージョン同時実行制御 MVCC の基本原理の分析

目次1 トランザクションの同時実行で発生する問題1.1 ダーティリード1.2 繰り返し不可能な読み取...

CSSスタイルシートを効率的に使用するためのヒント: スタイルシートの力を最大限に活用する

インターネット経済の継続的な発展に伴い、インターネット上の専門ウェブサイト、公共サービスウェブサイト...

ServerManager の起動時にデータベースに接続できないエラーを解決する方法

Servermanager 起動時の接続データベース エラーmgrstart.batを実行しますエラ...

VUEトークンの無効化プロセスの詳細な説明

目次ターゲット思考分析コード着陸要約するターゲットトークンの有効期限切れシナリオの処理トークンは、ユ...

CentOS 7.x のマスターおよびスレーブ DNS サーバーの展開

1. 準備例: 2 台のマシン: 192.168.219.146 (マスター)、192.168.21...

Win10でのJDKのインストールと環境変数の設定に関する詳細なチュートリアル

目次序文1. 準備2. インストール3. 環境変数を設定する1. 「新規」をクリックすると、ポップア...

タブ効果を実現する js 開発プラグイン

この記事の例では、タブ効果を実現するためのjsプラグインの具体的なコードを参考までに共有しています。...

本番環境でのMySQLパラメータsql_safe_updatesの使用に関する詳細な説明

序文アプリケーションのバグや DBA の誤操作が発生した場合、テーブル全体が更新される可能性がありま...

MySQL での実行計画の詳細分析

序文効率的なSQL文の書き方は、Explain実行計画の分析と切り離せません。実行計画とは何か、効率...

CentOS 7.5 が Varnish キャッシュサーバー機能を導入

1. ワニスの紹介Varnish は、高性能なオープンソースのリバースプロキシサーバーおよび HTT...

MySQL 4 の一般的なマスタースレーブレプリケーションアーキテクチャ

目次1つのマスターと複数のスレーブのレプリケーションアーキテクチャマルチレベルレプリケーションアーキ...

WeChatアプレットタブの左右スライドスイッチ機能実装コード

効果画像: 1. はじめに独自のアプレットでこのような機能を実装する必要がある1. 核となる考え方ス...

パーティクルダイナミックボタン効果を実現するCSS

オリジナルリンクhttps://github.com/XboxYan/no…ボタンは、おそらく We...

私のCSSアーキテクチャのコンセプト - それは人によって異なり、ベストなものはなく、適切なものだけがある

はじめに<br />私はフロントエンド分野でかなり長い間働いており、CSS分野でも長い間...

Javascript 文字列メソッドの詳細な説明

目次文字列の長さ: 長さcharAt() charCodeAt()文字列に値が含まれているかどうかを...