Mysql5.7 スレーブ ノードでマルチスレッドのマスター/スレーブ レプリケーションを構成する方法の詳細な紹介

黄舟
リリース: 2017-03-16 13:49:08
オリジナル
1030 人が閲覧しました

この記事では主に Mysql 5.7 スレーブノード構成のマルチスレッドマスター/スレーブレプリケーションの関連情報を紹介します。記事内の紹介は非常に詳細であり、必要な方は以下を参照してください。

はじめに

Mysql はレプリケーションにマルチスレッドを使用します。これは Mysql 5.6 からサポートされていますが、マルチスレッドはサポートされていますが、各データベースは 1 つのスレッドしか持てません。つまり、データベースが 1 つだけあり、マスター/スレーブ レプリケーション中に 1 つのスレッドだけが動作している場合です。前の単一スレッドに相当します。 Mysql 5.7 以降、同じデータベースでの並列マスター/スレーブ レプリケーションがサポートされています。ただし、デフォルトでは、依然として単一のデータベースと単一のスレッドです。複数のスレッドを使用する必要がある場合は、スレーブ ノードで構成する必要があります。

Mysql 5.7 ではマスター/スレーブ レプリケーションのタイプが追加されており、次の 2 つのタイプがあります:

  • DATABASE ライブラリベースの並列レプリケーション、各データベースはレプリケーション スレッドに対応します

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

次の手順はスレーブ ノードで構成されます。

現在の構成を表示する

構成を開始する前に、まず現在の構成でのマスター/スレーブ レプリケーション プロセスの数を見てみましょう。


mysql> show processlist;
+----+-------------+-----------+------+---------+-------+--------------------------------------------------------+------------------+
| Id | User  | Host  | db | Command | Time | State             | Info    |
+----+-------------+-----------+------+---------+-------+--------------------------------------------------------+------------------+
| 1 | system user |   | NULL | Connect | 91749 | Waiting for master to send event      | NULL    |
| 2 | system user |   | NULL | Connect | 208 | Slave has read all relay log; waiting for more updates | NULL    |
| 37 | root  | localhost | NULL | Query |  0 | starting            | show processlist |
+----+-------------+-----------+------+---------+-------+--------------------------------------------------------+------------------+
3 rows in set (0.00 sec)
ログイン後にコピー

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

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


mysql> show variables like 'slave_parallel_type';
+---------------------+----------+
| Variable_name  | Value |
+---------------------+----------+
| slave_parallel_type | DATABASE |
+---------------------+----------+
1 row in set (0.00 sec)
ログイン後にコピー

現在のレプリケーション タイプは DATABASE です。つまり、統合データベースではレプリケーション用のスレッドが 1 つだけあり、並列レプリケーションはできません。


mysql> show variables like 'slave_parallel_workers';
+------------------------+-------+
| Variable_name   | Value |
+------------------------+-------+
| slave_parallel_workers | 0  |
+------------------------+-------+
1 row in set (0.01 sec)
ログイン後にコピー

現在並行して動作しているプロセスの数は0です

マルチスレッドを設定します

1。スレーブノードからのレプリケーションを停止します


mysql> stop slave;
Query OK, 0 rows affected (0.01 sec)
ログイン後にコピー

2。


mysql> set global slave_parallel_type='logical_clock';
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'slave_parallel_type';
+---------------------+---------------+
| Variable_name  | Value   |
+---------------------+---------------+
| slave_parallel_type | LOGICAL_CLOCK |
+---------------------+---------------+
1 row in set (0.01 sec)
ログイン後にコピー

3. 並列数を 4 に設定します


mysql> set global slave_parallel_workers=4;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'slave_parallel_workers';
+------------------------+-------+
| Variable_name   | Value |
+------------------------+-------+
| slave_parallel_workers | 4  |
+------------------------+-------+
1 row in set (0.00 sec)
ログイン後にコピー

4. スレーブノードのレプリケーションを開始します


mysql> start slave;
Query OK, 0 rows affected (0.02 sec)
ログイン後にコピー

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


概要

以上がMysql5.7 スレーブ ノードでマルチスレッドのマスター/スレーブ レプリケーションを構成する方法の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!