TDSQL-C for MySQLのデータベースプロキシ機能について紹介します。従来のデータベースにおける複数ROグループシナリオと比較して、TDSQL-C for MySQLの主な優位性はマスターインスタンスの負荷軽減にあります。
複数の独立したデータベースプロキシ接続アドレスのサポート
従来のデータベースでは、1つのデータベースにつき最大2つの読み取り専用インスタンスROグループしか作成できず、より多くの業務負荷シナリオに対応できません。一方、TDSQL-C for MySQLのデータベースプロキシ機能では、ノード数に応じてそれだけのデータベースプロキシ接続アドレスを作成できます(現在のバージョンでは最大4ノードまで対応)。
マスターインスタンス(読み書き属性)のマウント対応
従来のデータベースでは、読み取り専用インスタンスROグループ内には読み取り専用インスタンスのみ接続可能で、マスターインスタンスは接続できません。一方、TDSQL-C for MySQLでは、各データベースプロキシアドレスの下にマスターインスタンスを接続可能です。データベースプロキシアドレスを通じて、マスターインスタンスと読み取り専用インスタンスへのトラフィック振り分けアクセスを実現できます。
トランザクション分割サポート
TDSQL-C for MySQLのデータベースプロキシはトランザクション分割機能を提供し、一つのトランザクション内の読み取り操作と書き込み操作を異なるインスタンスに分割して実行することができます。読み取りリクエストを読み取り専用インスタンスに転送することで、プライマリインスタンスの負荷を軽減します。
セッションレベルコネクションプールのサポート
TDSQL-C for MySQLのデータベースプロキシはコネクションプール機能をサポートしています。現在サポートされているデータベースプロキシのコネクションプール機能はセッションレベルのコネクションプールであり、ショートコネクションのビジネスが頻繁に新しい接続を確立することによって引き起こされるインスタンスの負荷過剰の問題を効果的に解決できます。クライアント接続が切断された場合、システムは現在の接続がアイドル接続かどうかを判断し、アイドル接続である場合は、その接続をプロキシのコネクションプールに移し、一定時間(システムデフォルトは5秒、接続保留閾値の設定をサポート)保持します。 CLBの再調整をサポート
データベースプロキシを有効化した後、プロキシノードリストの接続数を確認するか、各プロキシノードのパフォーマンス監視を確認することで、各ノードでアクセス不均衡が発生していないか判断できます。ビジネスに大量のロングコネクションが存在する場合、データベースプロキシノードを追加しても新しいノードの負荷不均衡が発生する可能性があります。各プロキシノードの接続数に不均衡が見られる場合は、再CLBを実行し接続を分散させることが可能です。
コンシステンシーレベルの設定をサポート
TDSQL-C for MySQLの読み書きインスタンスでデータが更新されると、関連する更新内容は読み取り専用インスタンスに適用されます。データ同期の遅延時間は書き込み負荷に依存します。TDSQL-C for MySQLは、ビジネスアクセスにおけるデータベースデータの整合性要件を保証するため、次の3種類の整合性レベルを提供します:
最終整合性:データは最終的に整合性を実現し、読み取り専用インスタンスが変更された書き込みデータを読み取ることを保証します。更新されたデータは最終的に取得可能ですが、即時取得を完全に保証するものではありません。更新されたデータはマスタースレーブレプリケーションの遅延により、異なるノードからクエリした結果が異なる場合があります。
セッション整合性:セッション整合性により、同一セッション内において、読み取りリクエスト実行前に更新済みのデータをクエリできることを保証し、データの単調性を確保します。
グローバル整合性:同一セッション内で読み取りリクエスト実行前に更新されたデータをクエリできるだけでなく、異なる接続を介して送信されたリクエストのクエリ結果が一致することも保証します。
アクセスモード設定のサポート
接続モードの設定により、アプリケーションまたはクライアントとデータベースプロキシ間の接続リンクを制御できます。均等分散と近接接続の2つのモードがあります。均等分散モードではトラフィックを均等に分散でき、単一ノードの負荷過多が発生しません。近接接続モードでは、アプリケーションは同一アベイラビリティーゾーンまたはアクセスパスが最短のデータベースプロキシノードに接続します。データベースプロキシに複数のアベイラビリティーゾーンノードが存在する場合でも、アプリケーションはアクセスパスが最短のデータベースプロキシノードを選択して接続するため、アクセス遅延が低く高速であるというメリットがあります。