本稿は TDSQL-C for MySQL データベースプロキシの注意事項を紹介します。
プロキシ接続アドレスを使用する場合、トランザクション分割が有効になっていない場合、トランザクションリクエストはすべてマスターインスタンスにルーティングされます。
データベースプロキシの設定は複数のアベイラビリティーゾーンにまたがって設定可能です。選択可能なアベイラビリティーゾーンの数は現在のリージョンで選択可能なアベイラビリティーゾーンの数に関連しており、最大4つのアベイラビリティーゾーンを選択できます。選択可能なアベイラビリティーゾーンが1つの場合、現在のリージョンで選択可能なアベイラビリティーゾーンが1つしかないことを意味します。
複数のデータベースプロキシアクセスアドレスを設定可能です。その数はデータベースプロキシノードの数と同じです。つまり、ノードの数だけデータベースプロキシアクセスアドレスを設定できます。
プロキシ接続アドレスを使用して読み書き分離を行う場合、非トランザクション読み取りの一貫性は保証されません。業務上で読み取り一貫性が必要な場合は、トランザクション内にカプセル化するか、ヒント構文を使用できます。
プロキシ接続アドレスを使用する場合、show processlist はすべてのノードの結果を統合して返します。
プリペア文の場合、データベースプロキシはまずプリペアをすべてのノードに送信します。後続のエクゼキュートリクエストが到着した場合、プリペアの文タイプに基づいてエクゼキュートのルーティングを決定します。例えば、書き込み文をプリペアした場合、エクゼキュートはマスターデータベースに送信されますが、トランザクション外の読み取り文をプリペアした場合は、読み取り専用インスタンスに送信されます。
ビジネス接続がデータベースプロキシに到達すると、プロキシは読み書きインスタンスおよび設定されたすべての読み取り専用インスタンスに接続します。データベースプロキシ自体には最大接続数の制限はなく、接続数の制限は主にバックエンドのデータベースインスタンスの最大接続数によって決まります(読み書きインスタンスと読み取り専用インスタンスの最大接続数の最小値がビジネスパフォーマンスに影響を与える可能性があります)。
データベースプロキシを有効にした後、新規の読み取り専用インスタンスを追加するか、既存の読み取り専用インスタンスを再起動した場合、新しい接続リクエストのみが新規または再起動された読み取り専用インスタンスにルーティングされます。概要ページまたはパフォーマンス監視で各プロキシノードのパフォーマンス指標を確認できます。プロキシノード間で接続数に不均衡が生じている場合は、CLBによる再負荷分散で接続を再分散できます。 Serverlessサービスでは、自動起動/停止機能を無効にした場合にのみ、データベースプロキシ機能を有効にできます。
読み取り専用分析エンジンをデータベースプロキシに追加した場合、デフォルトの重みは0であり、変更できません。/*to server インスタンスID*/の構文を使用してのみ、SQLを読み取り専用分析エンジンに転送できます。
mysql-connector-j-8.0.32.jarバージョンのJDBCドライバでデータベースプロキシに接続後、プリペアを使用すると接続がハングします。そのため、データベースプロキシ接続にはmysql-connector-j-8.0.32.jarバージョンのJDBCドライバを使用せず、mysql-connector-j-8.0.33.jarバージョンの使用を推奨します。これはMySQLの公式Bugに関連しており、詳細はBug#109864をご参照ください。