sql >> データベース >  >> RDS >> Mysql

MySQL高可用性フレームワークの説明–パートI:はじめに

    この3部構成のブログシリーズでは、MySQL準同期レプリケーションとCorosync plus Pacemakerスタックを使用したMySQLホスティングの高可用性(HA)フレームワークの詳細と機能について説明します。パートIでは、HAフレームワークのコンポーネントである高可用性の基本について説明し、次にMySQL用のHAフレームワークを紹介します。

    高可用性とは何ですか?

    コンピュータシステムの可用性は、そのサービスが一定期間稼働している時間の割合です。通常、一連の9として表されます。たとえば、次の表は、可用性と、1年間に測定された対応するダウンタイムを示しています。

    可用性% 年間のダウンタイム
    90%(“ one 9 「) 36。53日
    99%("2つの9 「) 3。65日
    99.9%(“3つの9 「) 8.77時間
    99.99%("4つの9 「) 52.60分
    99.999%(“ 5 9 「) 5.26分
    99.9999%(“ six 9s 「) 31.56秒

    高可用性の意味は、アプリケーションとビジネスの要件によって異なります。たとえば、サービスで年間数分を超えるダウンタイムを許容できない場合、サービスには99.999%の高可用性が必要であると言えます。

    HAフレームワークのコンポーネント

    高可用性の本質は、システムの任意の部分で発生する可能性のある障害から即座に回復する機能です。 HAフレームワークには、この回復可能性を実現するために自動化された方法で連携する必要がある4つの非常に重要なコンポーネントがあります。これらのコンポーネントについて詳しく見ていきましょう:

    1。インフラストラクチャとデータの冗長性

    サービスの可用性を高めるには、インフラストラクチャホスティングに冗長性があり、最新の冗長性があることを確認する必要がありますサービスが使用または提供するデータのコピー。これは、プライマリが障害の影響を受けた場合に引き継ぐ準備ができているスタンバイサービスとして機能します。

    2。障害の検出と修正のメカニズム

    プライマリシステムの可用性に影響を与える可能性のある障害を即座に検出することは非常に重要です。これにより、フレームワークが同じプライマリシステムで修正アクションを実行するか、サービスをスタンバイシステムにフェイルオーバーできるようになります。

    3。フェイルオーバーメカニズム

    このコンポーネントは、サービスをスタンバイインフラストラクチャにフェイルオーバーする責任を処理します。利用可能な冗長システムが複数ある場合、このフェイルオーバーメカニズムコンポーネントは、それらの中から最も適切なシステムを識別し、それをプライマリサービスとして昇格させる必要があることに注意してください。

    4。アプリケーション/ユーザーリダイレクトメカニズム

    スタンバイシステムがプライマリとして引き継がれると、このコンポーネントにより、すべてのアプリケーションとユーザーの接続が新しいプライマリに対して行われるようになります。

    MySQL高可用性フレームワークの説明-パートIClickでツイート

    MySQL用のHAフレームワーク

    上記のモデルに基づいて、ScaleGridでのMySQLホスティングに次のHAフレームワークを使用します。

    • MySQL準同期レプリケーションを使用してインフラストラクチャとデータの冗長性を提供する3ノードのマスタースレーブセットアップ。
    • CorosyncとPacemakerスタックは、障害の検出、修正、およびフェイルオーバーのメカニズムを提供します。
    • アプリケーションとユーザーのリダイレクトメカニズムを提供するDNSマッピングまたは仮想IPコンポーネント。

    このアーキテクチャのソフトウェアスタックを視覚化するには、次の図を確認してください。

    このフレームワークのいくつかの主要コンポーネントの機能を確認しましょう。

    1. Corosync

      Corosyncは、ノード間で信頼性の高いメッセージパッシングを行うための通信フレームワークをノードに提供します。ノードのクラスターリングを形成し、クラスターメンバーシップを通じてクラスターに参加およびクラスターから離脱するノードを追跡します。 CorosyncはPacemakerと緊密に連携してノードの可用性について通信し、Pacemakerが適切な決定を下せるようにします。

    2. ペースメーカー

      Cluster Resource Manager(CRM)とも呼ばれるPacemakerは、クラスター上で実行されているMySQLの高可用性を確保し、Corosyncとのインターフェースによってノードレベルの障害を検出して処理します。また、Resource Agent(RA)とのインターフェースにより、MySQLの障害を検出して処理します。 Pacemakerは、操作の開始、停止、監視、昇格、および降格を通じてMySQLリソースを構成および管理します。

    3. リソースエージェント

      リソースエージェントは、MySQLとPacemaker間のインターフェイスとして機能します。 Pacemakerによって呼び出される操作の開始、停止、昇格、降格、および監視を実装します。 Perconaによって実装されたMySQL用のPerconaReplicationManager(PRM)と呼ばれる完全に機能するリソースエージェントがあります。これはScaleGridによって拡張されており、GitHubページで入手できます。

    4. DNSマッピングコンポーネント

      リソースエージェントは、フェイルオーバーが正常に完了すると、このコンポーネントを呼び出して、マスターMySQLサーバーのDNSレコードを新しいマスターのIPアドレスで更新します。クライアントは常にマスターDNS名を使用してMySQLサーバーに接続し、このDNS名から現在のマスターのIPアドレスへのマッピングを管理することで、クライアントが接続文字列やプロパティを変更する必要がないようにすることができます。フェイルオーバーがあります。

    このブログシリーズのパートIIでは、MySQL準同期レプリケーションを使用して実現される重要なデータ冗長性コンポーネントについて学習します。また、高可用性サポートを実現するために使用する準同期レプリケーションの詳細と構成について詳しく説明し、最後に、パートIIIのさまざまな障害シナリオと、フレームワークがこれらの状態に応答して回復する方法を確認します。


    1. 一時テーブルのpostgresqlスレッドセーフ

    2. Entity FrameworkのOperatorのように?

    3. Postgresで再帰的なJSONキーを収集する

    4. エスケープされたUnicode文字をPostgreSQLで実際の文字に変換します