本ドキュメントでは、TencentDB for MySQLデータベースプロキシの注意点について説明します。
プロキシ接続アドレスを使用する場合、トランザクション分割が有効になっていないと、トランザクションリクエストはすべてマスターインスタンスにルーティングされます。
データベースプロキシの設定では、複数のアベイラビリティーゾーンを選択可能です。選択可能なアベイラビリティーゾーンの数は、現在の地域で選択可能なアベイラビリティーゾーンの数に関連し、最大3つを選択できます。選択可能なアベイラビリティーゾーンの数が1つの場合、現在の地域で選択可能なアベイラビリティーゾーンが一つだけであることを意味します。
複数のデータベースプロキシアクセスアドレスを作成でき、その数はデータベースプロキシノードの数と同じです。つまり、ノードがいくつあるかによって、作成できるアクセスアドレスの数が決まります。
プロキシ接続アドレスを使用して読み書き分離を行う場合、非トランザクション読み取りの一貫性は保証されません。業務上で読み取り一貫性の要件がある場合は、トランザクションにカプセル化するか、またはヒント構文を使用することができます。
プロキシ接続アドレスを使用する場合、show processlist はすべてのノードの結果を結合した後に返します。
prepareステートメントの場合、データベースプロキシはまずprepareをすべてのノードに送信します。後続のexecuteリクエストが到着したとき、prepareステートメントのタイプに基づいてexecuteのルーティングを決定します。例えば、書き込みステートメントをprepareした場合、executeはマスターインスタンスに送信されます。また、トランザクション外の読み取りステートメントをprepareした場合は、読み取り専用インスタンスに送信されます。
業務接続がデータベースプロキシに到達すると、プロキシはマスターインスタンスおよび設定されたすべての読み取り専用インスタンスに接続します。データベースプロキシ自体には最大接続数の制限はなく、接続数の制限は主にバックエンドのデータベースインスタンスの最大接続数によって決まります(マスターインスタンスと読み取り専用インスタンスの最大接続数の最小値が業務パフォーマンスに影響します)。
データベースプロキシを有効化した後、新規に追加した読み取り専用インスタンスまたは再起動した読み取り専用インスタンスには、新しい接続リクエストのみがルーティングされます。概要またはパフォーマンス監視を通じて各プロキシノードのパフォーマンス指標を確認できます。各プロキシノードの接続数に不均衡な現象が確認された場合は、ロードバランシングを再実行して接続を分散させることができます。 データベースプロキシの各機能サポートバージョン:
アベイラビリティーゾーンを跨ぐ機能については、プロキシバージョンが1.3.1以降であることを確認してください。
接続リテンション閾値については、プロキシバージョンが1.2.1以降であることを確保してください。
コネクションプール機能については、プロキシバージョンが1.3.12以降であることを確保してください。
トランザクション分割機能については、プロキシバージョンが1.3.1以降であることを確保してください。
新規接続アドレス機能については、プロキシバージョンが1.3.1以降であることを確認してください。
読み取り専用分析エンジンの管理については、プロキシバージョンが1.3.15以降であることを確保してください。
mysql-connector-j-8.0.32.jarバージョンのJDBCドライバを使用してデータベースプロキシに接続した場合、prepareを使用すると接続がハングします。したがって、データベースプロキシへの接続にはmysql-connector-j-8.0.32.jarバージョンのJDBCドライバを使用せず、mysql-connector-j-8.0.33.jarバージョンの使用を推奨します。これはMySQLの公式バグに関連しており、詳細についてはBug#109864をご参照ください。