すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:データベースプロキシ機能に関するFAQ

最終更新日:Jan 18, 2024

このトピックでは、ApsaraDB RDS for MySQLのデータベースプロキシ機能に関するよくある質問に対する回答を提供します。 データベースプロキシ機能を使用するときに問題が発生した場合は、このトピックを参照してください。

Contents

データベースプロキシとは

データベースプロキシは、データベースシステムとアプリケーションの間に存在し、アプリケーションからのすべての要求を転送するネットワークプロキシとして機能します。 データベースプロキシは、自動読み取り /書き込み分割、トランザクション分割、接続プーリング、および永続的接続などの高度な機能を提供します。 データベースプロキシは使いやすく、保守も簡単で、高可用性と高性能を実現します。

汎用データベースプロキシと専用データベースプロキシの違いは何ですか?

  • 汎用: このタイプのデータベースプロキシは物理CPUリソースを共有し、無料で提供されます。 このデータベースプロキシタイプの最高仕様は、8つのデータベースプロキシによって提供される16 CPUコアです。

  • 専用: このタイプのデータベースプロキシは、割り当てられた物理CPUリソースのみを占有し、従量課金に基づいて課金されます。 このタイプのデータベースプロキシは安定したパフォーマンスを提供し、このデータベースプロキシの最高仕様は、16のデータベースプロキシによって提供される32のCPUコアです。

詳細については、データベースプロキシの種類データベースプロキシの種類と数の変更データベースプロキシ機能の課金ルールをご参照ください。

データベースプロキシは、プライマリRDSインスタンスのQPSまたはTPSを消費しますか。

いいえ。データベースプロキシは、プライマリRDSインスタンスの1秒あたりのクエリ (QPS) または1秒あたりのトランザクション (TPS) を消費しません。

データベースプロキシエンドポイントは通常のエンドポイントと同じですか?

いいえ、データベースプロキシエンドポイントは通常のエンドポイントとは異なります。

  • 通常のエンドポイントは、RDSインスタンスにのみ送信されるすべてのリクエストを転送します。

  • データベースプロキシエンドポイントは、実行されるSQL文に基づいて、書き込み要求をプライマリRDSインスタンスに、読み取り要求を読み取り専用RDSインスタンスに自動的に転送します。 これにより、プライマリRDSインスタンスの負荷を軽減できます。

データベースプロキシ機能を有効にした後、システムはプライマリRDSインスタンスとその読み取り専用RDSインスタンスの元のエンドポイントを再利用しますか。

いいえ。データベースプロキシ機能を有効にした後、システムはデータベースシステム内のプライマリRDSインスタンスとその読み取り専用RDSインスタンスの元のエンドポイントを再利用しません。

データベースプロキシの内部ネットワークタイプは、プライマリRDSインスタンスの内部ネットワークタイプと同じですか。

はい。データベースプロキシとそのプライマリRDSインスタンスの内部ネットワークタイプは、仮想プライベートクラウド (VPC) です。

データベースプロキシはどのアーキテクチャを使用しますか? このアーキテクチャはフェールオーバーメカニズムを提供しますか?

データベースプロキシは、2つのプライマリノードを持つ高可用性アーキテクチャを使用します。 接続は、1:1の比率で2つのノードに分配される。 1つのノードに障害が発生した場合、他のノードが障害ノードを引き継ぎ、システムは自動的に障害ノードの復元タスクをトリガーして、データベースサービスの高可用性を確保します。

データベースプロキシの数とデータベースプロキシの仕様との関係は?

次の計算は、データベースプロキシの仕様とデータベースプロキシの数との間の関係を記述する: データベースプロキシの仕様=データベースプロキシのユニット仕様 × データベースプロキシの数。 この計算では、データベースプロキシのユニット仕様は2つのCPUコアとして固定されています。

たとえば、データベースプロキシの数が3の場合、データベースプロキシの仕様は6 CPUコアです。 この値は、以下の計算に基づいて得られる: 2 × 3 = 6。

詳細については、「データベースプロキシの種類と数の変更」をご参照ください。

データベースプロキシエンドポイントの数はデータベースプロキシの数に依存しますか?

いいえ、データベースプロキシエンドポイントの数はデータベースプロキシの数に依存しません。

データベースプロキシ機能が有効になっている各RDSインスタンスは、最大7つのデータベースプロキシエンドポイントをサポートします。 各データベースプロキシエンドポイントに対して1つの内部エンドポイントと1つのパブリックエンドポイントを申請できます。 詳細については、「データベースプロキシエンドポイントの作成」をご参照ください。

データベースプロキシエンドポイントの数を増やすと、データベースプロキシのパフォーマンスが向上しますか?

いいえ、データベースプロキシエンドポイントの数を増やしても、データベースプロキシ機能のパフォーマンスは向上しません。

RDSインスタンスがRDS High-availability Editionを実行している場合、RDSインスタンスのデータベースプロキシ機能のパフォーマンスは、読み取り専用RDSインスタンスの数、データベースプロキシの数、およびデータベースプロキシの仕様に関連しています。 RDSインスタンスがRDS Cluster Editionを実行している場合、RDSクラスターのデータベースプロキシのパフォーマンスは、セカンダリノードの数、データベースプロキシの数、およびデータベースプロキシの仕様に関連しています。 RDS Cluster Editionを実行するRDSインスタンスは、RDSクラスターと呼ばれます。

  • RDS High-availability Editionを実行するRDSインスタンスの読み取り専用RDSインスタンスの数、またはRDSクラスターのセカンダリノードの数を増やすと、データベースプロキシはより多くの読み取り要求を処理できます。

  • データベースプロキシの数を増やすか、データベースプロキシの仕様を追加すると、データベースプロキシのパフォーマンスが向上します。

  • 説明
    • データベースプロキシの推奨仕様は、次の式を使用して計算されます。

      • 推奨データベースプロキシ仕様= 推奨データベースプロキシ数 × データベースプロキシのユニット仕様データベースプロキシのユニット仕様は、2 CPUコアに固定されています。

      • 汎用データベースプロキシの最高仕様は、16 CPUコアです。 専用データベースプロキシの最高仕様は32 CPUコアです。 次の表に、推奨されるデータベースプロキシ数の計算方法を示します。

    プロキシタイプ

    RDS High-availability Editionを実行するRDSインスタンス

    RDS Cluster Editionを実行するRDSインスタンス

    汎用データベースプロキシの推奨数

    (プライマリRDSインスタンスのCPUコア数 + プライマリRDSインスタンスに属するすべての読み取り専用RDSインスタンスのCPUコア数)/4 結果は切り上げられます。

    (プライマリノードのCPUコア数 + プライマリノードに属するすべてのセカンダリノードのCPUコア数)/4 結果は切り上げられます。

    専用データベースプロキシの推奨数

    (プライマリRDSインスタンスのCPUコア数 + プライマリRDSインスタンスに属するすべての読み取り専用RDSインスタンスのCPUコア数)/8 結果は切り上げられます。

    (プライマリノードのCPUコア数 + プライマリノードに属するすべてのセカンダリノードのCPUコア数)/8 結果は切り上げられます。

    たとえば、RDS High-availability Editionを実行するプライマリRDSインスタンスのCPUコアが8つ、読み取り専用RDSインスタンスのCPUコアが4つの場合、推奨されるデータベースプロキシの数は2です。 この数は、(8 + 4)/8 = 1.5の計算に基づいて得られる。 結果1.5は2に切り上げられます。 データベースプロキシの推奨仕様は4 CPUコアです。 この数は、2 × 2 = 4の計算に基づいて得られる。

データベースプロキシへの接続数は制限されていますか?

データベースプロキシに対して確立できる接続の最大数は無制限です。 接続の最大数は、データベースシステムのプライマリRDSインスタンスと読み取り専用RDSインスタンスの仕様によって異なります。

データベースプロキシエンドポイントを使用してRDSインスタンスに接続するときにタイムアウトエラーが発生した場合はどうすればよいですか?

wait_timeoutパラメーターの値を増やして再試行することを推奨します。 インスタンスパラメーターの変更方法の詳細については、「インスタンスパラメーターの変更」をご参照ください。

データベースプロキシエンドポイントまたは読み書き分離エンドポイントを変更できますか?

はい。データベースプロキシエンドポイントまたは読み書き分離エンドポイントを変更できます。

詳細については、「ApsaraDB RDS For MySQLインスタンスのデータベースプロキシエンドポイントの管理」をご参照ください。

プライマリRDSインスタンスが少数の書き込みリクエストを処理する場合、読み取りリクエストをプライマリRDSインスタンスにも送信できますか。

はい、

プライマリRDSインスタンスが少数の書き込みリクエストを処理する場合、読み取りリクエストをプライマリRDSインスタンスに送信することもできます。 プライマリRDSインスタンスに適切な読み取り重みを指定するだけです。 詳細については、「データベースプロキシ機能の有効化」をご参照ください。

読み書き分離はヒントをサポートしていますか?

はい、読み書き分離はヒントをサポートしています。 ヒントを使用して、プライマリRDSインスタンスにリクエストを転送できます。 サポートされているヒント形式の詳細については、「システムによる読み取り重み割り当ての規則」をご参照ください。

プライマリRDSインスタンスと読み取り専用RDSインスタンスの読み取り重みを変更しても、新しい読み取り重みは有効になりません。 これはなぜですか。

新しい読み取り重みは、新しい接続にのみ有効です。 既存の接続は再確立されないため、新しい読み取り重みは既存の接続には影響しません。

プライマリRDSインスタンスと読み取り専用RDSインスタンスの負荷が、インスタンスの読み取り重みに準拠しないのはなぜですか。

この問題は、次のシナリオで発生する可能性があります。

  • 要求はトランザクションを含む。 トランザクションを含むすべてのリクエストは、プライマリRDSインスタンスにのみ転送されます。 プライマリRDSインスタンスからのリクエストをオフロードするには、トランザクション分割を有効にします。 詳細については、「トランザクション分割機能の使用」をご参照ください。

  • プライマリRDSインスタンスと読み取り専用RDSインスタンスのエンドポイントは、データベースシステムへの接続に使用されます。 その結果、インスタンスの読み取り重みに基づいて、リクエストはプライマリRDSインスタンスと読み取り専用RDSインスタンスに転送されません。 この場合、データベースプロキシエンドポイントを使用して、データベースシステムに接続できます。

RDSインスタンスのデータベースプロキシ機能を無効にした場合、読み取り専用RDSインスタンスに読み取り重みを割り当てることはできますか。

いいえ。RDSインスタンスのデータベースプロキシ機能を無効にした場合、読み取り専用RDSインスタンスに読み取り重みを割り当てることはできません。 プライマリRDSインスタンスとその読み取り専用RDSインスタンスのエンドポイントを異なるアプリケーションに設定して、読み書き分離と負荷分散を実装できます。

読み取り専用RDSインスタンスに障害が発生した場合、他の正常な読み取り専用RDSインスタンスに対してのみ新しい接続が確立されます。 この場合、障害のある読み取り専用RDSインスタンスへの現在の接続は、別の正常な読み取り専用RDSインスタンスにフェールオーバーしますか。

いいえ。障害のある読み取り専用RDSインスタンスへの現在の接続は、別の正常な読み取り専用RDSインスタンスにフェールオーバーしません。 現在の接続がタイムアウトするまで待つ必要があります。 次に、別の正常な読み取り専用RDSインスタンスへの新しい接続が確立されます。

RDSインスタンスのデータベースプロキシ機能を有効にした後、読み書き分離を確認する方法を教えてください。

詳細については、「ApsaraDB RDS For MySQLインスタンスでの読み書き分離の検証」をご参照ください。

読み取り専用RDSインスタンスを購入して読み書き分離を実装した後、プライマリRDSインスタンスの履歴データは読み取り専用RDSインスタンスに自動的に同期されますか。

はい。データベースプロキシ機能を有効にして読み書き分離の設定を完了すると、プライマリRDSインスタンスの履歴データが自動的に読み取り専用RDSインスタンスに同期されます。

データベースプロキシの接続プールとアプリケーションの接続プールの違いは何ですか? 接続プールを一緒に使用するにはどうすればよいですか?

ApsaraDB RDS for MySQLのデータベースプロキシの接続プール機能は、クライアントの接続プール機能には影響しません。 クライアントが接続プールを提供する場合は、データベースプロキシの接続プール機能を無効にできます。 ApsaraDB RDS For MySQLのデータベースプロキシの接続プール機能の詳細については、「ApsaraDB RDS for MySQLインスタンスの接続プールタイプの設定」をご参照ください。

データをクエリするときに文字化け文字が返されるのはなぜですか?

プライマリRDSインスタンスで使用される文字セットは、読み取り専用RDSインスタンスで使用される文字セットとは異なる場合があります。 次のステートメントを実行して、プライマリRDSインスタンスと読み取り専用RDSインスタンスが同じ文字セットを使用しているかどうかを確認できます。

select
@ @ global.character_set_results、@ @ global.character_set_client、@ @ global.character_set_connection、@ @ global.character_set_server; 

プライマリRDSインスタンスと読み取り専用RDSインスタンスが異なる文字セットを使用する場合、プライマリRDSインスタンスまたは読み取り専用RDSインスタンスの文字セットを変更して、これらのインスタンスが同じ文字セットを使用するようにすることができます。 RDSインスタンスの文字セットを変更する方法の詳細については、「ApsaraDB RDS For MySQLの文字セットの説明」をご参照ください。

DDL操作は、プライマリRDSインスタンスからセカンダリRDSインスタンスに自動的に同期されますか。

データベースとテーブルの作成と削除、テーブルスキーマの変更、権限の変更などのすべてのDDL操作は、プライマリRDSインスタンスからセカンダリRDSインスタンスに自動的に同期されます。

VPCタイプの内部エンドポイントのVPC IDおよびvSwitch IDパラメーターを表示する方法を教えてください。

[データベースプロキシ] ページの [接続情報] セクションで、[ポート] の右側のアイコンの上にポインターを移動します。

image.png