Cloud SQL 読み取りプールは、大規模な読み取りワークロードのロード バランシングをサポートしています。
読み取りプールとは
読み取りプールは、大規模な読み取りワークロードを分散するために使用されるリードレプリカ インスタンスのコレクションです。これらのワークロードは、プライマリ インスタンスから読み取りプールにリダイレクトして、プライマリ インスタンスの負荷を軽減できます。
リードプール内の各リードレプリカは、リードプール ノードと呼ばれます。
読み取りプールは、次の方法でスケーリングできます。
- スケールインまたはスケールアウト: 読み取りプール内の読み取りプールノードの数を変更して、ロード バランシング容量を水平方向にスケーリングします。各読み取りプールは、1 ~ 20 個の読み取りプール ノードをサポートします。
- スケールアップまたはスケールダウン: 読み取りプールノードに関連付けられたマシンタイプを変更して、ロード バランシング容量を垂直方向にスケーリングします。定義すると、構成は読み取りプール内の各読み取りプールノードに均一に適用されます。
ストレージ、接続、データベース構成フラグなどの読み取りプールノードの設定を変更すると、変更は読み取りプール内の各読み取りプールノードに均一に自動的に適用されます。
読み取りプールには、不変の IP アドレスを持つ単一の読み取りエンドポイントからアクセスできます。エンドポイントを介して行われた接続は、読み取りプール ノードのいずれかに自動的にリダイレクトされます。読み取りプールをスケールインまたはスケールアウトする場合、読み取りプールで新しい読み取りプール ノードを作成したり、以前の読み取りプール ノードを削除したりできますが、この単一の読み取りエンドポイントに以前接続されていたアプリケーションを再構成する必要はありません。
各読み取りプールノードにも独自の IP アドレスがあります。データにアクセスするための効率的な方法として推奨されるものではありませんが、これらの IP アドレスを使用して、個々の読み取りプールノードのパフォーマンスのトラブルシューティングを行うことができます。
読み取りプールまたは読み取りプール ノードの接続情報(IP アドレスまたは接続文字列)を取得する方法については、読み取りプール情報を表示するをご覧ください。
次の特性が適用されます。
- リードプールのリードプールノードは、ユーザーが指定したリージョンに常に存在します。 Google Cloud は、リージョン内のすべてのゾーン間でリードプールノードのレジデンシを代替します。
- プライマリ インスタンスには、1 つ以上の読み取りプールを設定できます。
- 次のオペレーションでは、1 秒未満のダウンタイムが発生します。
- スケールアウトまたはスケールイン(読み取りプールノードの追加または削除)。
- スケールアップまたはスケールダウン(プール内のノードのマシンタイプの変更)。
- 既存のゾーンリードレプリカをリードプールに変換する。
- リードレプリカと同様に、読み取りプールはプライマリ インスタンスの前にメンテナンスを受けます。リードレプリカと同様に、読み取りプールはプライマリ インスタンスのメンテナンスの時間枠中にメンテナンスを受けます。
- 各読み取りプールノードには、Cloud SQL リードレプリカと同じ指標が使用できます。
gcloud
または Google Cloud コンソールを使用してプロジェクトの詳細を記述する場合、読み取りプール名は表示されますが、個々の読み取りプール ノード名は表示されません。
制限事項
次の制限が適用されます。
- 読み取りプールは、新しいネットワーク アーキテクチャの Cloud SQL Enterprise Plus エディション インスタンスでのみ使用できます。リードプールに関連付けられているプライマリ インスタンスも、Cloud SQL Enterprise Plus エディション インスタンスである必要があります。
- トラフィックは、データベースの正常性に基づいて読み取りプールノードから提供されますが、その読み取りプールノードのレプリケーション ラグの長さは関係ありません。遅延していない別の読み取りプールノードが使用可能な場合でも、遅延している読み取りプールノードからトラフィックが提供される場合があります。データベース プロセスが稼働していてクエリに応答できる場合、データベースは正常と見なされますが、提供されるデータの鮮度に関する要件はありません。
- 単一の論理セッションが読み取りプール内の複数の読み取りプールノードに接続することは保証されません。セッション内の後続のリクエストで、前のリクエストを処理した読み取りプールノードよりもレプリケーション位置(GTID)が低い読み取りプールノードに接続することがあります。これにより、データベースの状態が過去に戻ったように見えることがあります。
- 次の種類の更新はサポートされていません。
- リードプールは引き続き Cloud SQL メンテナンス アップデートを受信しますが、リードプールを新しいメジャー バージョンまたはマイナー バージョンのデータベースに更新することはできません。
- 読み取りプールのノードの開始または停止
- リードレプリカでサポートされていないオペレーションに加えて、次のオペレーションは読み取りプールでサポートされていません。
- レプリカを昇格させる
- 再起動
- import
- export
- フェイルオーバー
- re-encrypt
- clone
- 次の機能は読み取りプールでは使用できません。
- Private Service Connect
- 共有 CA またはカスタマー マネージド CA を使用する SSL/TLS 証明書
- リードプールは、カスケード レプリカや別のリードプールなど、別のインスタンスに複製できません。
- リードプールはプライマリ インスタンスから直接複製する必要があります。カスケード レプリカにすることはできません。
- リージョン リードレプリカをリードプールに変換する場合は、まずリージョン リードレプリカをゾーンリードレプリカに変換する必要があります。
- リードプールを作成またはスケーリングする場合は、リードプールに関連付けられている以前の作成プール、スケールイン、スケールアウト オペレーションが完了するまで待つ必要があります。この制限は、同じプライマリ インスタンスに関連付けられている他の読み取りプールにも適用されます。同じプライマリ インスタンスに関連付けられている複数の読み取りプールをスケーリングする場合は、最初の読み取りプールに関連付けられているスケーリング オペレーションが完了するまで待ってから、次の読み取りプールのスケーリングを開始する必要があります。同時実行リクエストを実行すると、
Operation failed because another operation was already in progress.
というエラーが発生することがあります。 - リードプールで使用するために変換できるのは、プライマリと同じリージョンにあるゾーンレプリカのみです。
- マシンタイプを変更するときに、読み取りプールから読み取りプールノードを追加または削除することはできません。
- 特定のリードレプリカに存在するセカンダリ インデックスが原因で、アプリケーションが専用のリードレプリカに接続する必要がある場合は、Cloud SQL リードレプリカを作成し、代わりに使用します。
- 読み取りプールに関連付けられている特定のユーザーとデータベースをクエリすることはできません。Cloud SQL Studio はユーザーとデータベースから提供されるデータに依存しているため、読み取りプールではサポートされていません。