この記事では主に 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 サイトの他の関連記事を参照してください。