Cloud SQL 読み取りプールは、大規模な読み取りワークロードのロード バランシングをサポートしています。
読み取りプールとは
読み取りプールは、大規模な読み取りワークロードを分散するために使用されるリードレプリカ インスタンスのコレクションです。これらのワークロードをプライマリ インスタンスから読み取りプールにリダイレクトすることで、プライマリ インスタンスの負荷を軽減できます。
読み取りプール内の各リードレプリカは、読み取りプール ノードと呼ばれます。
読み取りプールは、次の方法でスケールできます。
- スケールインまたはスケールアウト: 読み取りプール内の読み取りプール ノードの数を変更して、ロード バランシング容量を水平方向にスケールします。各読み取りプールは、1 ~ 7 個の読み取りプール ノードをサポートできます。
- スケールアップまたはスケールダウン: 読み取りプール ノードに関連付けられたマシンタイプを 変更して、ロード バランシング容量を垂直方向にスケールします。定義すると、構成は読み取りプール内の各読み取りプール ノードに一律に適用されます。
ストレージ、接続、データベース構成フラグといった読み取りプール ノードの設定を変更すると、変更は自動的に読み取りプール内の各読み取りプール ノード一律に適用されます。
単一の読み取りエンドポイントを介して読み取りプールにアクセスする
読み取りプールには、固定 IP アドレスを持つ単一の読み取りエンドポイントからアクセスできます。エンドポイントを介して行われた接続は、読み取りプール ノードのいずれかに自動的にリダイレクトされます。読み取りプールをスケールインまたはスケールアウトする場合、読み取りプールに新しい読み取りプール ノードを作成したり、以前の読み取りプール ノードを削除したりできますが、この単一の読み取りエンドポイントに以前接続していたアプリケーションを再構成する必要はありません。
各読み取りプール ノードにも独自の IP アドレスがあります。データにアクセスするための効率的な方法として推奨されるものではありませんが、これらの IP アドレスを使用して、個々の読み取りプール ノードのパフォーマンスのトラブルシューティングを行うことができます。
読み取りプールまたは読み取りプール ノードの接続情報(IP アドレスまたは接続文字列)を確認する方法については、 読み取りプール情報を確認するをご覧ください。
レプリケーション
Cloud SQL 読み取りプールのレプリケーションは、 SQL Server 読み取りスケール可用性グループを使用して実装されます。
詳細については、レプリケーションについてをご覧ください。
読み取りプールの特性
次の特性が適用されます。
- 2 つ以上のノードを含む読み取りプールは、サービスレベル契約(SLA)の対象となります。
- 読み取りプールの読み取りプール ノードは、常にユーザーが指定したリージョンに存在します。 Google Cloud は、リージョン内のすべてのゾーン間で読み取りプールノードのレジデンシを代替します。
- プライマリ インスタンスには、1 つ以上の読み取りプールを設定できます。
- 次のオペレーションでは、1 秒未満のダウンタイムが発生します。
- スケールアウトまたはスケールイン(読み取りプール ノードの追加または削除)。
- スケールアップまたはスケールダウン(プール内のノードのマシンタイプの変更)。
- 既存のゾーン リード レプリカを読み取りプールに変換する。
- 読み取りプールは、リードレプリカと同様に、プライマリ インスタンスの前にメンテナンスを受けます。リードレプリカと同様に、読み取りプールはプライマリ インスタンスのメンテナンスの時間枠中にメンテナンスを受けます。
- 各読み取りプール ノードには、Cloud SQL リードレプリカと同じ指標を使用できます。
gcloudまたは Google Cloud コンソールでプロジェクトの詳細を記述する場合、読み取りプール名は表示されますが、個々の読み取りプール ノード名は表示されません。
制限事項
次の制限が適用されます。
- 読み取りプールは、新しいネットワーク アーキテクチャの Cloud SQL Enterprise Plus エディションのインスタンスでのみ使用できます。読み取りプールに関連付けられているプライマリ インスタンスも、 Cloud SQL Enterprise Plus エディションのインスタンスである必要があります。
- プライマリ インスタンスごとに最大 7 つのリードレプリカを作成できます。この値には、読み取りプール インスタンスのリードレプリカと 読み取りプール ノードの数を組み合わせた数を含めることができます。たとえば、プライマリ インスタンスに 2 つのリードレプリカがあり、5 つのリードレプリカ (読み取りプール ノード)の別の読み取りプールがある場合があります。
- 読み取りプールの自動スケーリング は、SQL Server インスタンスではサポートされていません。
- 高度な障害復旧 は読み取りプールと互換性がありません。プライマリ インスタンスでは、読み取りプールと カスケード レプリカの両方を使用できません。
- トラフィックはデータベースの正常性に基づいて読み取りプール ノードから提供されますが、その読み取りプール ノードのレプリケーション ラグの長さに関係なく提供されます。 遅延していない別の読み取りプール ノードが使用可能な場合でも、遅延している読み取りプール ノードからトラフィックが提供される場合があります。データベース プロセスが稼働していてクエリに応答できる場合、データベースは正常と見なされますが、提供されるデータの更新頻度に関する要件はありません。
- 単一の論理セッションが読み取りプール内の複数の読み取りプールノードに接続するとは限りません。セッション内の後続のリクエストで、前のリクエストを処理した読み取りプールノードよりもレプリケーション 位置 が低い読み取りプールノードに接続することがあります。これにより、データベースが過去の状態に戻ったように見えることがあります。
- 次のタイプの更新はサポートされていません。
- 読み取りプールは Cloud SQL メンテナンス アップデートを受信しますが、読み取りプールまたは関連付けられたプライマリ インスタンスを新しいメジャー データベース バージョンに更新することはできません。
- 読み取りプールのノードの開始または停止。
- リードレプリカでサポートされていないオペレーションのほか、次のオペレーションは読み取りプールでサポートされていません。
- レプリケーションを有効または無効にする
- 顧客管理の Active Directory
- Managed Microsoft AD
- レプリカのプロモート
- 再起動
- インポート
- エクスポート
- フェイルオーバー
- すべてのデータの
- クローンを作成
- 共有 CA または顧客管理の CA を使用する SSL/TLS 証明書は、読み取りプールでは使用できません。
- 読み取りプールは、カスケード レプリカや別の読み取りプールなど、別のインスタンスに複製できません。
- 読み取りプールは、プライマリ インスタンスから直接複製する必要があります。カスケード レプリカにすることはできません。
- 読み取りプールを作成またはスケーリングする場合は、読み取りプールに関連付けられている以前の作成プール、 スケールイン、スケールアウト オペレーションが完了するまで待つ必要があります。この制限は、同じプライマリ インスタンスに関連付けられている他の読み取りプールにも適用されます。同じプライマリ インスタンスに関連付けられた複数の読み取りプールをスケールする場合は、最初の読み取りプールに関連付けられたスケーリング オペレーションが完了するまで待ってから、次の読み取りプールのスケーリングを開始する必要があります。同時実行リクエストを実行すると、「
Operation failed because another operation was already in progress.」というエラーが発生することがあります。 - 読み取りプールで使用するために変換できるのは、プライマリと同じリージョンにあるゾーンレプリカのみです。
- 読み取りプール ノードでは、レプリケーション ラグのレベルが異なるため、読み取りの一貫性が損なわれる可能性があります。アプリケーションで読み取りの一貫性が高いことが求められる場合は、読み取りプールを使用するのではなく、単一のリードレプリカを垂直方向にスケーリングすることをおすすめします。
- Cloud SQL は、次の
条件で読み取りプール ノードを自動的に修復します。
- インスタンスがダウンしている場合。
- レプリケーションが中断している場合。
このようなシナリオでは、プライマリ インスタンスから追加のログインを作成した場合、読み取りプール ノードが再作成された後に、それらのログインを使用してログインすることはできません。読み取りエンドポイントに使用するログインがプライマリ インスタンスから使用できることを確認してください。
- Microsoft はサーバー オブジェクトのレプリケーションをサポートしていません。
リードレプリカで作成するサーバーレベルのオブジェクトは、プライマリ インスタンスでも作成して 管理する必要があります。これらのオブジェクトは自動的に複製されません。
この動作は、次のシナリオで適用されます(網羅的なリストではありません)。
- 読み取りプールの修復。
- リードレプリカを読み取りプールに変換する。
- ログインなどのサーバーレベルのオブジェクトにアクセスできなくなります。
- 元のリードレプリカには存在するが プライマリ インスタンスには存在しないログインを作成した場合、そのログインは新しい 読み取りプール ノードに複製されません。
- 読み取りプールをリードレプリカに変換する。
- 読み取りプールにログインを作成し、プライマリ インスタンスにログインを作成しなかった場合、後で読み取りプールを無効にすると、ログインは存在しなくなります。
複製されないサーバーレベルのオブジェクトの例を次に示します。
- ログイン。
- リンク サーバーの構成。
- SQL Server Audit によって作成されたデータベース監査ファイル。
- XEvents セッション とその構成設定。
詳細については、Microsoft のドキュメントをご覧ください。
- 透過的データ暗号化(TDE)証明書は、インポートとエクスポートの両方のオペレーションでブロックされます。
- TDE 証明書は常にプライマリ インスタンスからインポートおよびエクスポートする必要があります。 TDE 証明書は、レプリカのタイプに関係なく、読み取りプール内のすべてのリードレプリカに自動的に複製されます。
- TDE のインポートとエクスポートのオペレーションはサポートされていません。TDE 証明書は常にプライマリ インスタンスからインポートしてください。