エンタープライズ環境では、ダウンタイムのコストが急速に増加します。ある調査では、回答者の 40% が 、わずか 1 時間のダウンタイムで組織に 100 万ドル以上の損失が生じたと回答しました。データベース サービスを継続的に利用できるようにすることは明らかに価値があります。
これにより、あらゆる形態や規模の関係者との関係は言うまでもなく、組織の多額の費用が節約されます。
では、継続的な可用性を確保するにはどうすればよいでしょうか?継続的な可用性の背後にある概念は、高可用性と呼ばれます。この記事では、高可用性の概要と、それを MySQL クラスターに実装する方法について説明します。
また、システム管理者がメンテナンス タスクを実行するために誤って高可用性に依存するという高可用性の暗い側面も指摘し、なぜそうすることで高可用性の目標が損なわれ、ビジネス運営が危険にさらされるのかについて説明します。
最初に可用性について話しましょう。ユーザーがほとんどの時間利用できないサービス (データベースなど) を実行する意味はほとんどありません。したがって、可用性について話すときは、サービスがどれだけアクセスしやすいかを意味します。
適切に実行されているサービスであれば、必要なときにいつでも利用できることが合理的に期待されますが、年に 1 ~ 2 日、または月に数時間のダウンタイムが発生することもあります。
一般に利用可能なサービスは、多くのユースケース シナリオに最適ですが、サービスが本質的に重要である場合、または多数のユーザーがサービスに依存している場合、「可用性」だけに依存するだけでは十分ではありません。の。
これが高可用性のすべてです。最も基本的な高可用性は、通常予想されるよりも高いレベルの可用性、より具体的には合意されたレベルを保証し、メンテナンス、パッチ適用、および一般的なエラーや障害を許容します。
高可用性とは何かについて合意された定義はなく、単に特定の (より高い) 可用性要件を満たすことです。通常、プロバイダーが受け入れる「可用性」を超えます。実際、組織は、高可用性のコストとダウンタイム関連の損失のコストを比較検討して、運用のニーズに基づいて必要な可用性を定義する場合があります。
必要な可用性のレベルはパーセンテージで表すことができます。たとえば、99.99% または「フォー ナイン」の可用性は、年間最大 52.06 分のダウンタイムを意味しますが、「シックス ナイン」または 99.9999% の可用性は、年間のダウンタイムが 31.56 分に制限されます。
基本的に、選択はあなた次第ですが、繰り返しになりますが、それはトレードオフです。高可用性を維持するにはコストがかかり、追加の物理リソースとソフトウェア ライセンスが必要になり、人的リソースが消耗されます。ただし、中断による波及コストや顧客の不満による収益損失のリスクを避けるためには、支払う価値があると思われるかもしれません。
高可用性インフラストラクチャの正確な性質は、ワークロードによって異なります。ただし、大まかに言えば、高可用性は、1 つのサービスまたはデバイスに障害が発生してもワークロードが中断されないフォールト トレランスがある場合に実現されます。通常、これは単一障害点がなく、すべてのサービスとデバイスがネットワーク レベルとアプリケーション レベルで完全に冗長であることを意味します。
サービスによっては、これには通常、多数のノードが関係する場合があります。たとえば、MySQL クラスターには、データが保存されるさらにいくつかのノードが含まれます。次に、複数のノードを負荷分散ツールと組み合わせて、1 つのノードに障害が発生した場合にリクエストが別のノードに転送されるようにします。パフォーマンスがわずかに低下しても、ユーザーは利用可能なサービスに引き続きアクセスできます。
もちろん、高可用性 MySQL データベースへのパスは、MySQL の実装によって異なります。一言で言えば、複数のノードを持つ何らかのタイプの MySQL クラスターを作成する必要があります。つまり、データは複数の MySQL サーバーに保存する必要があります。
次に、これらのノード上のデータを複製して、データベースに含まれるデータの正確なコピーが各ノードに確実に存在するようにするサービスが必要です。最後に、データベース リクエストがデータベース ノードに均等に送信されるようにするためのロード バランサ (負荷分散) が必要ですが、1 つのノードがオフラインになった場合でもリクエストが満たされるようにする必要があります。
たとえば、MySQL は高可用性を実現する商用製品である Te MySQL InnoDB Cluster を提供しています。これは、MySQL データベース環境で高可用性を確保する一般的な方法である MySQL グループ レプリケーションに基づいています。
もう 1 つの選択肢は、長年にわたり MySQL の高可用性を提供してきた Galera です。 MySQL の MariaDB フォークを使用している場合は、ロード バランシングに HAProxy を利用しながら、Galera クラスターで複数のノードを実行することで、高可用性を実現するために MariaDB 環境を構成できます。あるいは、MariaDB 独自の
MaxScale 製品を検討することもできます。
代わりにリアルタイムのパッチ適用を使用することにより、パッチをインストールするためにサービスを再起動する必要がなくなります。 それにもかかわらず、メンテナンス作業での高可用性への依存には憂慮すべき兆候が見られます。よく見ると、パッチ適用タスクを実行するために高可用性を利用するようにユーザーに指示するベンダーの公式ガイダンスも見つかります。ユーザーは、パッチ適用のために 1 つのノードがオフラインになっても、他のノードに問題が発生しないことを祈るだけです。
高可用性は多くのアプリケーションにとって重要であり、他の多くのアプリケーションにとっても有益です。 MySQL データベースは正しく構成されていれば、ほぼ完璧な可用性を提供できますが、それは技術チームが可用性を当然のこととみなすことができるという意味ではありません。
高可用性アーキテクチャを悪用してメンテナンスのショートカットを維持することはお勧めできません。リスクは一見したよりも大きいです。
代わりに、システム管理者は、高可用性ソリューションの機能を損なうことなくメンテナンス操作を実行するために、冗長性やライブ パッチ適用などの実証済みの代替手段を探す必要があります。
元のアドレス: https://tuxcare.com/ Understanding-mysql-high-availability-good-and-bad-reasons-to-use-it/
翻訳されたアドレス: https://learnku.com/mysql/t/71681
[関連する推奨事項: mysql ビデオ チュートリアル ]
以上がメンテナンスのために MySQL の高可用性に依存すべきではない理由について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。