MySQL 5.7 スレーブノードからマルチスレッド マスター スレーブ レプリケーションを構成する方法の詳細な説明

MySQL 5.7 スレーブノードからマルチスレッド マスター スレーブ レプリケーションを構成する方法の詳細な説明

序文

MySQL は MySQL 5.6 からマルチスレッド レプリケーションをサポートしていますが、バージョン 5.6 には欠陥があります。マルチスレッドをサポートしているにもかかわらず、各データベースは 1 つのスレッドしか持つことができません。つまり、データベースが 1 つしかない場合、マスター スレーブ レプリケーション中に動作するスレッドは 1 つだけです。以前のシングルスレッドと同等です。 MySQL 5.7 以降では、同じデータベースでの並列マスター スレーブ レプリケーションがサポートされます。ただし、デフォルトでは、単一のデータベースと単一のスレッドのままです。マルチスレッドを使用する必要がある場合は、スレーブ ノードで構成する必要があります。

MySQL 5.7 では、次の 2 つのタイプの新しいマスター スレーブ レプリケーションが追加されました。

  • データベースライブラリベースの並列レプリケーション、各データベースはレプリケーションスレッドに対応
  • LOGICAL_CLOCK グループ送信に基づく並列レプリケーション。同じデータベースに複数のスレッドが存在できます。

スレーブ ノードでは次の手順が設定されます。

現在の構成を表示する

設定を開始する前に、現在の設定におけるマスター-スレーブ レプリケーション プロセスの数を確認しましょう。

mysql> プロセスリストを表示します。
+----+--------------+-----------+--------+--------+--------+--------------------------------------------------------+------------------+
| ID | ユーザー | ホスト | db | コマンド | 時間 | 状態 | 情報 |
+----+--------------+-----------+--------+--------+--------+--------------------------------------------------------+------------------+
| 1 | システム ユーザー | | NULL | 接続 | 91749 | マスターがイベントを送信するのを待機中 | NULL |
| 2 | システム ユーザー | | NULL | 接続 | 208 | スレーブはすべてのリレー ログを読み取りました。さらに更新を待機しています | NULL |
| 37 | root | localhost | NULL | クエリ | 0 | 開始 | プロセスリストを表示 |
+----+--------------+-----------+--------+--------+--------+--------------------------------------------------------+------------------+
セット内の 3 行 (0.00 秒)

上記から、同期を待機しているメイン プロセスは 1 つだけであることがわかります。

下記のレプリケーションタイプと並列数の構成を確認してください

mysql> 'slave_parallel_type' のような変数を表示します。
+---------------------+----------+
| 変数名 | 値 |
+---------------------+----------+
| スレーブ並列型 | データベース |
+---------------------+----------+
セット内の 1 行 (0.00 秒)

現在のレプリケーション タイプは DATABASE です。つまり、統合データベースではレプリケーション用のスレッドが 1 つしか存在せず、並列レプリケーションは不可能です。

mysql> 'slave_parallel_workers' のような変数を表示します。
+------------------------+-------+
| 変数名 | 値 |
+------------------------+-------+
| スレーブ並列ワーカー | 0 |
+------------------------+-------+
セット内の1行(0.01秒)

現在並列作業中のプロセス数は 0 です

マルチスレッドの設定

1. ノードからのレプリケーションを停止する

mysql> スレーブを停止します。
クエリは正常、影響を受けた行は 0 行 (0.01 秒)

2. レプリケーションタイプをLOGICAL_CLOCKに設定する

mysql> グローバルslave_parallel_typeを'logical_clock'に設定します。
クエリは正常、影響を受けた行は 0 行 (0.00 秒)
mysql> 'slave_parallel_type' のような変数を表示します。
+---------------------+---------------+
| 変数名 | 値 |
+---------------------+---------------+
| スレーブ並列タイプ | LOGICAL_CLOCK |
+---------------------+---------------+
セット内の1行(0.01秒)

3. 並列処理の数を4に設定する

mysql> グローバルslave_parallel_workersを4に設定します。
クエリは正常、影響を受けた行は 0 行 (0.00 秒)
mysql> 'slave_parallel_workers' のような変数を表示します。
+------------------------+-------+
| 変数名 | 値 |
+------------------------+-------+
| スレーブ並列ワーカー | 4 |
+------------------------+-------+
セット内の 1 行 (0.00 秒)

4. ノードからレプリケーションを開始する

mysql> スレーブを起動します。
クエリは正常、影響を受けた行は 0 行 (0.02 秒)

5. 現在動作しているスレッドの数を確認する

mysql> プロセスリストを表示します。
+----+--------------+-----------+-------+-------+------+--------------------------------------------------------+------------------+
| ID | ユーザー | ホスト | db | コマンド | 時間 | 状態 | 情報 |
+----+--------------+-----------+-------+-------+------+--------------------------------------------------------+------------------+
| 37 | root | localhost | NULL | クエリ | 0 | 開始 | プロセスリストを表示 |
| 38 | システム ユーザー | | NULL | 接続 | 8 | マスターがイベントを送信するのを待機中 | NULL |
| 39 | システム ユーザー | | NULL | 接続 | 7 | スレーブはすべてのリレー ログを読み取りました。さらに更新を待機しています | NULL |
| 40 | システム ユーザー | | NULL | 接続 | 8 | コーディネーターからのイベントを待機中 | NULL |
| 41 | システム ユーザー | | NULL | 接続 | 8 | コーディネーターからのイベントを待機中 | NULL |
| 42 | システム ユーザー | | NULL | 接続 | 8 | コーディネーターからのイベントを待機中 | NULL |
| 43 | システム ユーザー | | NULL | 接続 | 8 | コーディネーターからのイベントを待機中 | NULL |
+----+--------------+-----------+-------+-------+------+--------------------------------------------------------+------------------+
セット内の行数は 7 です (0.00 秒)

最後に、マルチスレッドレプリケーションがなぜ必要なのかについてお話ししましょう。マスターとスレーブ間の同期には遅延が発生するため、マルチスレッドの目的はこの遅延を最小限に抑えることです。マスターとスレーブの関係を最適化する方法はシステム機能であり、シナリオによって必要なソリューションは異なりますが、マルチスレッド化により、少なくとも基本的な観点からレイテンシを削減できます。また、データベースの実際の状況を踏まえて、本当に遅延を軽減できるのか、スレッド数をいくつに構成すればいいのかなど、繰り返しテストして自分に合ったデータを取得する必要があります。

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に少しでもお役に立てれば幸いです。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM をご愛顧いただき、ありがとうございます。

以下もご興味があるかもしれません:
  • MySQL マスタースレーブレプリケーションの原理からインストールと設定までを包括的に解説します。
  • Windows で MySQL マスター スレーブ レプリケーションを構成する方法
  • MySQL 構成 SSL マスタースレーブ レプリケーション
  • MySQL マスタースレーブレプリケーション 読み書き分離の設定方法の詳細説明
  • MySQL (マスター/スレーブ) マスタースレーブレプリケーションの原理と構成の図解による詳細な説明
  • MySQL5.6 マスタースレーブレプリケーション同期詳細設定(画像とテキスト)
  • 半同期および非同期のMySQLマスタースレーブレプリケーション構成の詳細な分析
  • MySQL マスタースレーブレプリケーション構成のハートビート機能の紹介
  • MySQL マスタースレーブレプリケーションの原理と設定方法(詳細)
  • MySQL マスタースレーブレプリケーション構成プロセス

<<:  JavaScript WeakMap の使い方の詳しい説明

>>:  CentOS の Nginx 公式 Yum ソースの設定を詳しく解説

推薦する

Docker に nginx をインストールし、https 経由でアクセスを構成する方法

1. 最新のnginx dockerイメージをダウンロードする $ docker pull ngin...

antd ツリーと親子コンポーネント間の値転送問題について (React のまとめ)

プロジェクト要件: 製品ツリー ノードをクリックすると、そのノードのすべての親ノードが取得され、表に...

初心者向けMySQLシリーズチュートリアル

目次1. 基本概念と基本コマンド1) 基本的な概念2) 基本コマンド2. SQL文の記述順序と実行順...

7つの便利なTypeScriptの新機能

目次1. オプションの連鎖2. NULL値の結合3. 再帰型エイリアス4. アサーション署名5. P...

広告を閉じるための JavaScript カウントダウン

広告を閉じるまでのカウントダウンを実装するために JavaScript を使用するまだフロントエンド...

Sublime Text - ブラウザのショートカットキーを設定するための推奨方法

コード効果を異なるブラウザで表示することはよくあることなので、異なるショートカットキーを使用して対応...

Linux CDの意味と使い方

Linux CD とはどういう意味ですか? Linux では、cd はディレクトリの変更を意味します...

Linux の一般的なハードディスク管理コマンドの紹介

目次1. dfコマンド2. duコマンド3. fsckファイルシステム修復コマンド4. ディスクステ...

Nodejs でタイムドクローラーを実装する完全な例

目次事件の原因Node Scheduleを使用してスケジュールされたタスクを実装する1. node-...

Linuxにpipパッケージをインストールする方法

1. システムの Python バージョンに応じて、pip インストール パッケージをダウンロードし...

Vue モバイル開発で better-scroll を使用するときにクリック イベントが失敗する問題の解決策

最近、モバイル プロジェクトの開発方法を学ぶために vue を使用し、スクロールには better-...

docker compose を使用して consul クラスタ環境を構築する例

領事の基本概念サーバーモードとクライアントモードサーバー モードとクライアント モードは、consu...

MYSQLパターンマッチングREGEXPの使用に関する一般的な話など

のようにLIKE ではデータ全体が一致する必要がありますが、REGEXP では部分的な一致のみが必要...

Web ページの HTML コードの説明: 順序付きリストと順序なしリスト

このセクションでは、HTML のリスト要素について学習します。リストは、Web サイトのデザインにお...

MySQL DMLステートメントの使用に関する詳細な説明

序文:前回の記事では、注意深い学生であれば発見できたかもしれない DDL ステートメントの使用法を中...