このトピックでは、ApsaraDB RDS for MySQL のデータベースプロキシ機能を使用する前に理解しておく必要がある利用上の注意について説明します。
汎用データベースプロキシは無料で提供されます。専用データベースプロキシ、読み取り専用 ApsaraDB RDS for MySQL インスタンス、およびプライマリ RDS インスタンスは個別に課金されます。
データベースシステムでデータベースプロキシの持続的接続機能が無効になっている場合に、プライマリ RDS インスタンスまたはその読み取り専用 RDS インスタンスの仕様を変更すると、インスタンスのスイッチオーバーが発生する可能性があります。インスタンスのスイッチオーバーの影響の詳細については、「インスタンスのスイッチオーバーの影響」をご参照ください。
新しく作成した読み取り専用 RDS インスタンスをデータベースプロキシエンドポイントに接続するか、データベースプロキシエンドポイントに接続されている既存の読み取り専用 RDS を再起動すると、データベースプロキシエンドポイントへの新しい接続が確立されます。この場合、データベースプロキシエンドポイントへの既存および新しい接続を介して送信されたリクエストは、新しく作成または再起動された読み取り専用 RDS インスタンスに転送されます。
読み取り専用 RDS インスタンスをデータベースプロキシエンドポイントから切断すると、読み取り専用 RDS インスタンスで実行されている文に対してエラーが報告されます。ワークロードに影響を与えずに読み取り専用 RDS インスタンスを切断するには、データベースプロキシのバージョンを 2.8.41 以後にアップグレードし、データベースプロキシエンドポイントの読み取りおよび書き込み属性が読み取り/書き込みであることを確認する必要があります。詳細については、「データベースプロキシバージョンのアップグレード」および「データベースプロキシエンドポイントの読み取りおよび書き込み属性と読み取り重みの設定」をご参照ください。
データベースプロキシエンドポイントは圧縮プロトコルをサポートしていません。
max_prepared_stmt_count パラメーターは、RDS High-availability Edition を実行するプライマリ RDS インスタンスとその読み取り専用 RDS インスタンスに対して同じ値に設定する必要があります。
データベースプロキシ機能は、1:N 接続モデルを使用します。アプリケーションが接続リクエストを開始すると、データベースプロキシは確立された接続をプライマリ RDS インスタンスとすべての読み取り専用 RDS インスタンスに複製します。データベースプロキシに許可される最大接続数は無制限です。最大接続数は、プライマリ RDS インスタンスとその読み取り専用 RDS インスタンスの仕様によって異なります。トランザクションレベルのコネクションプーリング機能を有効にしない場合、データベースプロキシは各クライアントからプライマリ RDS インスタンスおよび各読み取り専用 RDS インスタンスへの個別の接続を確立します。データベースプロキシ機能を有効にした後、プライマリ RDS インスタンスとその読み取り専用 RDS インスタンスに許可される最大接続数を同じにすることをお勧めします。プライマリ RDS インスタンスとその読み取り専用 RDS インスタンスに許可される最大接続数が異なる場合、データベースプロキシに許可される最大接続数は、これらの RDS インスタンスの中で許可される最小接続数に制限されます。
アプリケーションがデータベースプロキシエンドポイントを使用してデータベースシステムに接続し、トランザクション分割が無効になっている場合、トランザクションにカプセル化されているすべてのリクエストはプライマリ RDS インスタンスに転送されます。
アプリケーションがデータベースプロキシエンドポイントを使用してデータベースシステムに接続して読み取り/書き込み分離を実装する場合、トランザクションにカプセル化されていないリクエストの読み取り整合性は保証されません。これらのリクエストの読み取り整合性を確保するには、これらのリクエストをトランザクションにカプセル化するか、ヒントを追加する必要があります。詳細については、「ヒントの実行」をご参照ください。
接続プーリングはデフォルトで有効になっています。したがって、
SHOW PROCESSLIST
文はアイドル接続を返す場合があります。アプリケーションがデータベースプロキシエンドポイントを使用してデータベースシステムに接続する場合、SHOW PROCESSLIST
文はクエリごとに結果セットを返します。結果セットは、プライマリ RDS インスタンスと読み取り専用 RDS インスタンスからのクエリ結果で構成されます。複数文を実行するか、ストアドプロシージャを呼び出すと、現在の接続を介した後続のすべてのリクエストはプライマリ RDS インスタンスに転送されます。読み取り/書き込み分離を再度使用するには、現在の接続を閉じて新しい接続を確立する必要があります。
MySQL CLI を使用してヒントが追加された接続を確立する場合は、ヒントに -c オプションを追加する必要があります。オプションをヒントに追加しないと、MySQL CLI はヒントを除外します。ヒント構文の詳細については、「ヒントの実行」をご参照ください。
プライマリ RDS インスタンスがロックされている場合、プライマリ RDS インスタンスに対して有効になっているデータベースプロキシは解放されませんが、読み取りリクエストのみを処理できます。
プライマリ RDS インスタンスが解放されると、プライマリ RDS インスタンスに対して有効になっているデータベースプロキシは自動的に解放されます。専用データベースプロキシの料金は発生しなくなります。
データベースプロキシの仮想プライベートクラウド (VPC) または vSwitch を変更することはできません。プライマリ RDS インスタンスの VPC を変更しても、そのデータベースプロキシの VPC は変更されません。この場合、データベースプロキシは引き続きプライマリ RDS インスタンスと通信できますが、クライアントはプライマリ RDS インスタンスの新しい VPC を使用してデータベースプロキシエンドポイントに接続することはできません。
RDS インスタンスの特権アカウントを使用して、RDS インスタンスがデプロイされているホストの CIDR ブロックを設定する場合、CIDR ブロックは
10.1.2.%
形式にすることができます。データベースプロキシの IP アドレスホワイトリストは、プライマリ RDS インスタンスの IP アドレスホワイトリストと同じです。プライマリ RDS インスタンスの IP アドレスホワイトリストが更新されると、データベースプロキシの IP アドレスホワイトリストも更新されます。
高遅延ネットワーク環境では、データベースプロキシエンドポイントを使用してバイナリログをサブスクライブし、バイナリログダンプスレッドをデータ転送に使用すると、ネットワークスループットがパフォーマンスのボトルネックになる可能性があります。これにより、ダウンストリームシステムでレプリケーションの遅延が発生する可能性があります。アプリケーションまたはサービスのデータベース接続設定を構成して、バイナリログをプルするための直接接続を有効にすることをお勧めします。
ゾーン間の移行により、最近接アクセス機能が無効になる場合があります。
ゾーン間の移行後、新しい最近接ゾーンにデフォルトでアクセスできます。元の最近接ゾーンにはアクセスできなくなります。プロキシエンドポイントのゾーンをデフォルトゾーンとは異なるゾーンに変更すると、新しいゾーンへの最近接アクセスは失敗します。次の表に、シナリオの例を示します。
シナリオ
元のプロキシノード情報
新しいプロキシノード情報
プロキシノードの現在のゾーン
プロキシエンドポイント
最近接アクセス
プロキシノードの新しいゾーン
プロキシエンドポイントのデフォルトゾーン
プロキシエンドポイントの新しいゾーン
最近接アクセス
シナリオ 1:
Zone A+Zone B
からZone A+Zone C
へZone A
プロキシエンドポイント a
Zone A
Zone A
Zone A
Zone A
Zone A
Zone C
無効
Zone B
プロキシエンドポイント b
Zone B
Zone C
Zone C
Zone C
Zone C
Zone D
無効
シナリオ 2:
Zone A+Zone B
からZone C+Zone D
へZone A
プロキシエンドポイント a
Zone A
Zone C
Zone C
Zone C
Zone C
Zone E
無効
Zone B
プロキシエンドポイント b
Zone B
Zone D
Zone D
Zone D
Zone D
Zone E
無効
最近接アクセス機能は、2 つのゾーンにある 4 つの専用データベースプロキシノードのデプロイメントモードでのみサポートされています。デプロイメントモードを変更する場合、またはプロキシタイプを専用から汎用に変更する場合は、最近接アクセス機能を無効にする必要があります。詳細については、「最近接アクセス機能の使用」および「プロキシノードのデプロイメントアーキテクチャ」をご参照ください。
10.1.2.0/24
形式の CIDR ブロックをホストに設定することはできません。