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 バッチ挿入ループの詳細なサンプルコード

背景数日前、MySql でページングを行っていたときに、ページングに制限 0,10 を使用するとデー...

UTF-8 および GB2312 ウェブエンコーディング

最近、多くの学生から Web ページのエンコーディングについて質問を受けています。gb2312 と ...

HTML チュートリアル: 画像のサイズ、配置、間隔、境界線の属性を変更する方法

画像タグ: <img> ページに画像を挿入するには、「src」属性を持つ「img」タグを...

ネイティブ js はフォームの定期的な検証を実装します (検証後にのみ送信)

以下の機能が実装されています。 1. ユーザー名: onfouc は msg ルールを表示します。o...

Linux で top コマンドを使用する際のヒント

まず、top のいくつかのフィールドの意味を紹介します。 VIRT:仮想メモリ使用量1. プロセスが...

Unix/Linuxフォークの隠れたオーバーヘッド

目次1. フォークの起源2. 初期のUNIXオーバーレイ技術3. UNIXに導入される前のフォークの...

SQL文のANDとORの実行順序で発生する問題

質問昨日、データベースSQLを書いているときに問題が発生しました。問題の根本は、SQL ステートメン...

MySQL のバックアップとリカバリの設計アイデア

背景まず、背景を説明します。ある制約により、当社の現在のバックアップ戦略では、1 日おきにフル バッ...

MySQL 8.0.12 のインストールと環境変数の設定チュートリアル (Win10 の場合)

Windows 10 プラットフォームでの MySQL のインストール、構成、起動、ログイン、環境...

MySQL インデックスの使用方法 (単一列インデックスと複数列インデックス)

1. 単一列インデックスどの列にインデックスを作成するかを選択することは、パフォーマンス最適化プロ...

MySQL データ型の選択原則

目次小さいけれど美しいシンプルにNULL値を避けるデータタイプを選択する手順データ型の紹介1. 文字...

MySQL sql_mode の使用に関する詳細な説明

目次序文sql_mode の説明最も重要なオプションすべてのオプション要約する序文前回の記事「MyS...

MySQL インポートおよびエクスポートのバックアップの詳細

目次1. MySQLのバックアップタイプの詳細な説明1. バックアップがデータベースに与える影響に基...

JSON.stringify のさまざまな用途のまとめ

序文json を使用したことがある人なら、オブジェクトを文字列化してからバックエンドに送信するのが一...