このトピックでは、ApsaraDB RDS for MySQLのデータベースプロキシ機能に関するよくある質問に対する回答を提供します。 データベースプロキシ機能を使用するときに問題が発生した場合は、このトピックを参照してください。
Contents
データベースプロキシ機能を有効にした後、システムはプライマリRDSインスタンスとその読み取り専用RDSインスタンスの元のエンドポイントを再利用しますか。
データベースプロキシエンドポイントを使用してRDSインスタンスに接続するときにタイムアウトエラーが発生した場合はどうすればよいですか?
プライマリRDSインスタンスが少数の書き込みリクエストを処理する場合、読み取りリクエストをプライマリRDSインスタンスにも送信できますか。
プライマリRDSインスタンスとその読み取り専用RDSインスタンスの負荷が、インスタンスの読み取り重みに準拠しないのはなぜですか。
RDSインスタンスのデータベースプロキシ機能が無効になっている場合、RDSインスタンスにアタッチされている読み取り専用RDSインスタンスの読み取り重みを設定できますか。
読み書き分離を実装するために読み取り専用RDSインスタンスを購入した後、プライマリRDSインスタンスの履歴データは読み取り専用RDSインスタンスに自動的に同期されますか。
データベースプロキシの接続プールとアプリケーションの接続プールの違いは何ですか? 接続プールを一緒に使用するにはどうすればよいですか?
データベースプロキシとは
データベースプロキシは、データベースシステムとアプリケーションの間に存在し、アプリケーションからのすべての要求を転送するネットワークプロキシとして機能します。 データベースプロキシは、自動読み取り /書き込み分割、トランザクション分割、接続プーリング、および永続的接続などの高度な機能を提供します。 データベースプロキシは使いやすく、保守も簡単で、高可用性と高性能を実現します。
汎用データベースプロキシと専用データベースプロキシの違いは何ですか?
汎用: このタイプのデータベースプロキシは物理CPUリソースを共有し、無料で提供されます。 このデータベースプロキシタイプの最高仕様は、8つのプロキシノードによって提供される16 CPUコアです。
専用: このタイプのデータベースプロキシは、物理CPUリソースのみを占有し、従量課金に基づいて課金されます。 このデータベースプロキシタイプの最高仕様は、32のプロキシノードによって提供される64 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つのノードに障害が発生した場合、他のノードが障害ノードを引き継ぎ、システムは自動的に障害ノードの復元タスクをトリガーして、データベースサービスの高可用性を確保します。
詳細については、「プロキシノードのデプロイアーキテクチャ」をご参照ください。
データベースプロキシの仕様とプロキシノードの仕様との関係は?
データベースプロキシの仕様=すべてのプロキシノードの総仕様
たとえば、4つの専用データベースプロキシノードがゾーンAとゾーンBにデプロイされ、1つのプロキシノードのCPUコア数がゾーンaで1つ、ゾーンBで2つです。データベースプロキシの仕様は6つのCPUコアです。 この値は、1 × 2 + 2 × 2 = 2 + 4 = 6の計算に基づいて得られる。
プロキシノードの数とデータベースプロキシの仕様との関係は何ですか?
プロキシノード数=データベースプロキシの仕様 /プロキシノードの仕様。 この計算では、プロキシノードの仕様は2つのCPUコアとして固定されています。
たとえば、データベースプロキシの仕様が6 CPUコアの場合、プロキシノードの数は3です。 この値は、以下の計算に基づいて得られる。6/2 = 3。
プロキシノードの仕様の制限は何ですか?
汎用プロキシノードは最大8つのCPUコアを持つことができ、専用プロキシノードは最大16のCPUコアを持つことができます。
同じゾーンにデプロイされているプロキシノードの仕様は同じである必要があります。
2つのプロキシノードを含むデュアルゾーン展開モードでは、プロキシノードの仕様が同じである必要があります。
異なるゾーンにデプロイされているプロキシノードの仕様は異なる場合があります。 汎用プロキシノードを異なるゾーンにデプロイする場合は、プロキシノードが同じ仕様を使用することを推奨します。
データベースプロキシエンドポイントの数はデータベースプロキシの数に依存しますか?
いいえ、データベースプロキシエンドポイントの数はデータベースプロキシの数に依存しません。
データベースプロキシ機能が有効になっている各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クラスターのセカンダリノードの数を増やすと、データベースプロキシはより多くの読み取り要求を処理できます。
データベースプロキシの数を増やすか、データベースプロキシの仕様を追加すると、データベースプロキシのパフォーマンスが向上します。
データベースプロキシへの接続数は制限されていますか?
データベースプロキシに対して確立できる接続の最大数は無制限です。 接続の最大数は、データベースシステムのプライマリRDSインスタンスと読み取り専用RDSインスタンスの仕様によって異なります。
データベースプロキシエンドポイントを使用してRDSインスタンスに接続するときにタイムアウトエラーが発生した場合はどうすればよいですか?
wait_timeoutパラメーターの値を増やして再試行することを推奨します。 インスタンスパラメーターの変更方法の詳細については、「インスタンスパラメーターの変更」をご参照ください。
データベースプロキシエンドポイントまたは読み書き分離エンドポイントを変更できますか?
はい。データベースプロキシエンドポイントまたは読み書き分離エンドポイントを変更できます。
詳細については、「ApsaraDB RDS For MySQLインスタンスのデータベースプロキシエンドポイントの管理」をご参照ください。
プライマリRDSインスタンスが少数の書き込みリクエストを処理する場合、読み取りリクエストをプライマリRDSインスタンスにも送信できますか。
はい。
はい。プライマリRDSインスタンスが少数の書き込みリクエストを処理する場合、読み取りリクエストをプライマリRDSインスタンスに送信することもできます。 プライマリRDSインスタンスに適切な読み取り重みを指定するだけで済みます。 詳細については、「データベースプロキシ機能の有効化」をご参照ください。
読み書き分離はヒントをサポートしていますか?
はい、読み書き分離はヒントをサポートしています。 ヒントを使用して、プライマリRDSインスタンスにリクエストを転送できます。 サポートされているヒント形式の詳細については、「システムによる読み取り重み割り当ての規則」をご参照ください。
プライマリRDSインスタンスと読み取り専用RDSインスタンスの読み取り重みを変更しても、新しい読み取り重みは有効になりません。 これはなぜですか。
新しい読み取り重みは、新しい接続にのみ有効です。 既存の接続は再確立されないため、新しい読み取り重みは既存の接続には影響しません。
プライマリRDSインスタンスと読み取り専用RDSインスタンスの負荷が、インスタンスの読み取り重みに準拠しないのはなぜですか。
この問題は、次のシナリオで発生する可能性があります。
要求はトランザクションを含む。 トランザクションを含むすべてのリクエストは、プライマリRDSインスタンスにのみ転送されます。 プライマリRDSインスタンスからのリクエストをオフロードするには、トランザクション分割を有効にします。 詳細については、「ApsaraDB RDS For MySQLインスタンスでのトランザクション分割機能の使用」をご参照ください。
プライマリ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インスタンスの文字セットを変更して、これらのインスタンスが同じ文字セットを使用するようにすることができます。
DDL操作は、プライマリRDSインスタンスからセカンダリRDSインスタンスに自動的に同期されますか。
データベースとテーブルの作成と削除、テーブルスキーマの変更、権限の変更などのすべてのDDL操作は、プライマリRDSインスタンスからセカンダリRDSインスタンスに自動的に同期されます。
VPCタイプの内部エンドポイントのVPC IDおよびvSwitch IDパラメーターを表示するにはどうすればよいですか。
[データベースプロキシ] ページの [接続情報] セクションで、[ポート] の右側のアイコンの上にポインターを移動します。
プロキシノードのクロスゾーン移行は、プライマリRDSインスタンスへの接続に影響しますか。
プロキシノードのクロスゾーン移行は、データベースプロキシエンドポイントを使用してRDSインスタンスに接続する場合にのみ、ワークロードに影響します。 RDSインスタンスがRDS High-availability Editionを実行し、プライマリRDSインスタンスまたは読み取り専用RDSインスタンスのエンドポイントを使用してアプリケーションをRDSインスタンスに接続しても、ワークロードは影響を受けません。 RDSインスタンスがRDS Cluster Editionを実行し、読み取り /書き込みエンドポイント、読み取り専用エンドポイント、または直接ノード接続エンドポイントを使用してアプリケーションをRDSインスタンスに接続する場合、ワークロードは影響を受けません。 上記のエンドポイントを使用してアプリケーションをRDSインスタンスに接続し、オフピーク時にゾーン間でデータベースプロキシを移行することを推奨します。
プロキシノードのクロスゾーン移行の影響は何ですか?
ゾーン間でプロキシノードを移行すると、移行中に約30秒間持続する一時的な接続が発生します。 一時的な接続の期間は、ビジネスによって異なります。 移行の影響を受けないエンドポイントを使用して、RDSインスタンスに接続し、オフピーク時にゾーン間でデータベースプロキシを移行することを推奨します。 詳細については、「ゾーン間のデータベースプロキシの移行」をご参照ください。
ゾーン間でプロキシノードを移行した後、最も近いアクセス機能が使用できなくなりますか。
はい。ゾーン間でプロキシノードを移行すると、最も近いアクセス機能が使用できなくなる場合があります。
クロスゾーン移行後、デフォルトで新しい最も近いゾーンにアクセスできます。 元の最も近いゾーンにアクセスできなくなりました。 プロキシエンドポイントのゾーンをデフォルトゾーンとは異なるゾーンに変更すると、新しいゾーンへの最も近いアクセスが失敗します。 次の表に、シナリオの例を示します。
シナリオ | 元のプロキシノード情報 | 新しいプロキシノード情報 | |||||
プロキシノードの現在のゾーン | プロキシエンドポイント | 最寄りのアクセス | プロキシノードの新しいゾーン | プロキシエンドポイントのデフォルトゾーン | プロキシエンドポイントの新しいゾーン | 最寄りのアクセス | |
シナリオ 1:
| ゾーン A | プロキシエンドポイントa | ゾーン A | ゾーン A | ゾーン A | ゾーン A | ゾーン A |
ゾーンC | 異常 | ||||||
ゾーンB | プロキシエンドポイントb | ゾーンB | ゾーンC | ゾーンC | ゾーンC | ゾーンC | |
ゾーンD | 異常 | ||||||
シナリオ 2:
| ゾーン A | プロキシエンドポイントa | ゾーン A | ゾーンC | ゾーンC | ゾーンC | ゾーンC |
ゾーンE | 異常 | ||||||
ゾーンB | プロキシエンドポイントb | ゾーンB | ゾーンD | ゾーンD | ゾーンD | ゾーンD | |
ゾーンE | 異常 |
プロキシノードの設定を変更するときに、プロキシノードのゾーンを変更できますか。
いいえ。プロキシノードの設定を変更するときに、プロキシノードのゾーンを変更することはできません。
詳細については、「ゾーン間のデータベースプロキシの移行」をご参照ください。
展開モードをデュアルゾーン展開からシングルゾーン展開に変更すると、データベースプロキシエンドポイントのvSwitch IDが指定されたゾーンにないことを示すエラーメッセージが表示されます。 どうすればよいですか。
展開モードをデュアルゾーン展開 (ゾーンA + ゾーンB) からシングルゾーン展開 (ゾーンA) に変更する場合は、ゾーンBのデータベースプロキシエンドポイントを削除する必要があります。詳細については、「データベースプロキシエンドポイントの管理」をご参照ください。