Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon パフォーマンスの問題を引き起こすことなく、MySQLレプリケーションのセットアップに奴隷を追加するにはどうすればよいですか


パフォーマンスの問題を引き起こすことなく、MySQLレプリケーションのセットアップに奴隷を追加するにはどうすればよいですか


パフォーマンスの問題を引き起こすことなくMySQLレプリケーションのセットアップに奴隷を追加するには、すべての奴隷をプライマリソースに直接接続するのではなく、多層的な複製アーキテクチャを採用することを検討してください。多くの奴隷が単一のソースに直接接続すると、各スレーブが接続を維持し、ソースがバイナリログデータをそれぞれに送信する必要があるため、そのソースの負荷が増加し、ネットワークとパフォーマンスのボトルネックになります。代わりに、一次ソースを1つまたは数の中間レプリカに複製することにより、階層的に複製を構成し、残りの奴隷に複製します。この方法は、プライマリへの直接接続の数を減らし、サーバー全体で複製負荷をより均等に分散させます。

中間レプリカは、バイナリアップデート自体をログにするように構成する必要があります(「log_slave_updates」を使用して)。このセットアップは、複製チェーンまたはツリーを効果的に作成し、パフォーマンスとスケーラビリティを大幅に改善できます。

さらに、複製モードは、パフォーマンスとデータの一貫性において重要な役割を果たします。 MySQLは、非同期および半同期の複製モードをサポートしています。非同期複製により、プライマリサーバーは奴隷を待たずにトランザクションを進めることができ、書き込みスループットを改善しますが、おそらく複製の遅れを引き起こす可能性があります。半同期の複製により、少なくとも1人の奴隷がプライマリがコミットする前にトランザクションを認め、レイテンシまでわずかなコストでデータの一貫性を強化することが保証されます。これらの設定は、アプリケーションの一貫性とレイテンシの要件に従って調整します。

さらに最適化するには、奴隷の複製スレッドを調整します。 MySQL 5.6以降、マルチスレッドレプリケーションがサポートされているため、複数のSQLスレッドがリレーログイベントを並行して適用できます。これにより、特にワークロードに複数のスレッドで個別に処理できる多くの異なるデータベースまたはテーブルが含まれる場合、レプリケーションラグを減らすことができます。

ディスクI/O構成も重要です。別の物理ドライブにリレーログとデータベースファイルを配置して、I/Oの競合を最小限に抑えます。これは、奴隷が複製ストリームをより効率的に追いつくのに役立ちます。

大規模な環境では、さまざまなデータベースまたはテーブルを異なるレプリカに委任して、負荷のバランスをとり、単一のレプリカの競合を防ぐことにより、責任を分割することを検討してください。

新しい奴隷を追加するとき、それを正しくプロビジョニングすることが重要です。

- 競合を避けるために、一意の `server_id`を割り当てます。
- プライマリのデータのスナップショットまたはバックアップでスレーブを初期化して、一貫したポイントから複製を開始します。
- ソースの接続の詳細と複製設定でスレーブを構成します。
- 初期化中に ` - skip-slave-start`などのオプションを使用して、レプリケーションが早期に開始されないようにします。
- セットアップが完了したら複製を開始し、ラグやエラーを監視します。

新しい奴隷のデータをバックアップして復元することは、サイズとダウンタイムの許容度に応じて、「mysqldump」、percona xtrabackup、mysqlクローンプラグインなどのツールを使用して実行できます。 Xtrabackupユーティリティは、ソースデータベースをロックせずにホットバックアップを作成し、ダウンタイムを最小限に抑えることができます。

同期と初期負荷分散のために、PT-Table-Syncなどのツールは、修復後のマスターとスレーブ間のデータの一貫性を確保するのに役立ちます。

要約すると、パフォーマンスの劣化なしに奴隷を追加する重要な戦略は次のとおりです。

- 中間レプリカを使用して階層レプリケーショントポロジを使用します。
- 中間レプリカで `log_slave_updates`を有効にします。
- 一貫性とレイテンシーのニーズに基づいて、非同期および半同期の複製モードから選択します。
- 奴隷にマルチスレッドレプリケーションを使用します。
- リレーログとデータファイルを物理的に分離して、I/Oを最適化します。
- データベースまたはテーブルの分離ごとに複製ワークロードを配布します。
- 新しい奴隷を一意のサーバーIDと一貫したスナップショットで慎重に提供します。
- 最初のセットアップには、適切なバックアップおよび同期ツールを使用します。
- レプリケーションの遅れとパフォーマンスメトリックを継続的に監視します。

このアプローチは、奴隷の数が増えるにつれてスケーラブルでパフォーマンスのある複製アーキテクチャを維持し、主要なソースでのボトルネックを避け、効率的な複製スループットを確保するのに役立ちます。

これを設定して管理するための詳細な実用的な手順は、公式のMySQLドキュメントと、高可用性と複製アーキテクチャを専門とする経験豊富なMySQLサービスプロバイダーから見つけることができます。