tencent cloud

フィードバック

自動読み取り/書き込み分離の概要

最終更新日:2023-01-11 14:51:13

    ここでは主に、TencentDB for MySQLデータベースプロキシサービスの自動読み取り/書き込み分離、機能上のメリット、読み取り/書き込み分離ルートのルールについてご紹介します。

    自動読み取り/書き込み分離

    現在、多くのライブネットワークユーザーのビジネスシナリオには、読み取りの増加と書き込みの減少、予測できない業務の負荷といったシナリオがあります。ただし、読み取りリクエスト数が多いアプリケーションシナリオでは、単一のインスタンスが読み取りのプレッシャーに耐えられない場合があり、業務に影響を与える可能性もあります。読み取り機能のフレキシブルな拡張を実現し、データベースのプレッシャーを分担するために、1つまたは複数の読み取り専用インスタンスを作成し、読み取り専用インスタンスを利用して多数のデータベース読み取り要件を満たすことができます。ただし、このタイプのソリューションでは、業務側が読み取り/書き込み分離の変換をサポートする必要があります。そのコードのロバストネスによって、ビジネスの読み取り/書き込み分離の品質が決まるため、顧客に対する技術的要件が高く、柔軟性とスケーラビリティが低くなります。

    読み取り専用インスタンスの作成後、データベースプロキシを購入することでアクセスアドレスポリシーを構成することができます。データベースプロキシアドレスをアプリケーションで設定することによって、書き込みリクエストをマスターインスタンスに、読み取りリクエストを各読み取り専用インスタンスに自動的に転送できます。さらに、次のように、他の業務上の問題点に自然なソリューションを提供することもできます:

    • 予測不可能または不規則な変動による負荷/負荷の「急増」現象が明確なケース
      インターネットビジネスシーンにおける作業負荷とアクセス負荷は、多くの場合に予測ができず、不安定で、頻繁に変動と「急増」が発生しやすくなります。ビジネス側でデータベースへの短時間のアクセスを大量に実施した場合、これらのケースでは大量の新規接続が発生しやすくなります。すなわち、データベースとアプリケーション間の接続数が、ビジネスアクセスの負荷の頻繁な変更によって、変動しやすくなります。また、このケースは多くの場合に事前に予測することが困難です。
      データベース専用プロキシの接続管理により、お客様がデータベース接続を効果的に再利用できるようにして、予測できないワークロードを処理するアプリケーションを適切に拡張することができます。まず、データベース接続を複数のアプリケーション接続で共有することによって、データベースリソースを効果的に利用することができます。次に、開かれているデータベース接続の数を調整することにより、お客様が予測可能なデータベースパフォーマンスを維持できるようにします。第三に、利用できないアプリケーションリクエストを削除して、アプリケーションの全体的なパフォーマンスと可用性を維持します。

    • アプリケーションとデータベースが頻繁に接続の確立と切断を繰り返すケース
      サーバーレス、PHPまたはRuby on Railsなどの技術をベースとして構築されたアプリケーションは、データベース接続を頻繁にオン・オフすることで、アプリケーションのリクエストに応じることがあります。
      データベース専用プロキシは、お客様がデータベース接続プールを維持して、データベースの計算と新しい接続の確立のために使用されるメモリに不必要なプレッシャーを与えないようにするのに役立ちます。

    • データベースのアクセスと接続が長時間アイドル状態で、リリースされないケース
      SaaSまたはeコマース業界における従来のアプリケーションは、お客様が再接続するときの応答時間を最小限に抑えるために、データベース接続をアイドル状態に保つ場合があります。お客様は専用のデータベースプロキシを使用して、アイドル状態の接続を維持します。多くのアイドル接続をサポートするためのしきい値の過剰な調整や、より高度な構成のデータベース提供などをすることなく、必要な場合にのみデータベース接続を確立することができます。

    • データベースのPaaSサービスがフェイルオーバーしたケースにおけるスムーズさと安定性を向上
      ユーザーはデータベース専用プロキシを使用すると、複雑なフェイルオーバーコードを記述せずに、データベースのフェイルオーバー(アクティブ/パッシブ)を透過的に許容できるアプリケーションを構築することができます。データベース専用プロキシは、読み取りトラフィックを新しいデータベースインスタンスに自動的にルートしながら、アプリケーション接続を維持します。

    機能のメリット

    • セルフサービスの読み取り/書き込み分離、アクセスアドレスの統合。
    • ネイティブリンクのサポートにより、パフォーマンスが向上し、メンテナンスコストが削減されます。
    • ユーザーが柔軟に選択できるように、重みとしきい値を設定できます。
    • フェイルオーバー機能を備えており、データベースプロキシがリクエストに失敗した場合でも、メインデータベースに正常にアクセスできます。
    • マスターインスタンスの切り替え、構成の変更、読み取り専用インスタンスの増減といった状況が発生すると、データベースプロキシは、ネットワークを中断したり再起動したりすることなく、設定を動的にホットリロードできます。

    読み取り/書き込み分離ルートルール

    マスターインスタンスに送信

    • CREATE、ALTER、DROP、RENAMEなど、DDLステートメント。
    • INSERT、UPDATE、DELETEなど、DMLステートメント。
    • SELECT FOR UPDATEステートメント。
    • 一時テーブルに関連するステートメント。
    • 一部のシステム関数の呼び出し(last_insert_id()など)およびすべてのカスタム関数の呼び出し。
    • LOCKに関連するステートメント。
    • トランザクションを有効にした後のステートメント(set autocommit=0を含む)。
    • ストアドプロシージャ。
    • 「;」で接続された複数のステートメント。
    • KILL(SQLステートメントのKILL、コマンドKILLではありません)。
    • すべてのユーザー変数のクエリーと変更。

    読み取り専用インスタンスに送信

    • トランザクション外の読み取り(SELECT)ステートメント。

    すべてのインスタンスに送信

    • show processlistステートメント。
    • すべてのシステム変数の変更(SETコマンド)。
    • USEコマンド。
    お問い合わせ

    カスタマーサービスをご提供できるため、ぜひお気軽にお問い合わせくださいませ。

    テクニカルサポート

    さらにサポートが必要な場合は、サポートチケットを送信して弊社サポートチームにお問い合わせください。24時間365日のサポートをご提供します。

    電話サポート(24 時間365日対応)