このページでは、Cloud SQL インスタンスを以前のネットワーク アーキテクチャから新しいネットワーク アーキテクチャにアップグレードする方法について説明します。
この Cloud SQL ネットワーク アーキテクチャのアップグレード ページは、特定の Cloud SQL インスタンスにのみ適用されます。Cloud SQL インスタンスが、2021 年 8 月より前に作成された Virtual Private Cloud(VPC)ネットワーク プロジェクトを使用している場合は、インスタンスの Cloud SQL ネットワーク アーキテクチャをアップグレードする必要があります。
概要
次の表に、以前のネットワーク アーキテクチャと比較した新しいネットワーク アーキテクチャの利点を示します。
機能 | 以前のネットワーク アーキテクチャ | 新しいネットワーク アーキテクチャ |
---|---|---|
Database Migration Service を使用した Cloud SQL から AlloyDB for PostgreSQL への移行 | 移行用にプライベート IP アドレスを構成する必要があります。 | 追加のネットワーク構成は不要です。 たとえば、Cloud SQL から AlloyDB for PostgreSQL への移行などが該当します。 |
プライベート IP を使用して、Cloud SQL インスタンスを Cloud Build や Vertex AI などの限定公開サービスに接続する | ネットワーク ピアリングの非推移性のため、サポート対象外 | サポート対象 |
Assured Workloads に準拠したインスタンス | サポート対象外 | サポート対象 |
Managed Microsoft AD | サポート対象外 | サポート対象 |
Private Service Connect | サポート対象外 | サポート対象 |
プロジェクトあたりのデフォルトの Cloud SQL インスタンスの割り当て | 100 | 1,000 |
アップグレードを計画する
Cloud SQL インスタンスのネットワーク アーキテクチャをアップグレードする前に、次のアップグレードの制約に合わせてアップグレードを計画します。
ネットワーク アーキテクチャをアップグレードすると、インスタンスのダウンタイムは平均で最大 4 分間発生する可能性があります。
データの移行が進行中の場合、その間は、ソース インスタンスを新しいアーキテクチャにアップグレードできません。
外部ソースからインスタンスに接続する場合は、すべてのピアリング接続が更新され、カスタムルートのエクスポートが有効になっていることを確認します。
サービス境界を使用している場合は、共有 VPC ホスト プロジェクトが含まれていることを確認します。このプロジェクトが含まれていない場合、移行は失敗します。
Cloud SQL インスタンスの数が 300 個を超えるネットワークでは、インスタンスのネットワーク アーキテクチャをアップグレードすることはできません。
ネットワーク プロジェクト内の Cloud SQL インスタンスすべてのアップグレードを計画する
Cloud SQL インスタンスは、VPC ネットワークと同じプロジェクトに配置することも、別のプロジェクトに配置することもできます。VPC ネットワークをホストするプロジェクトは、ネットワーク プロジェクトです。
ネットワーク プロジェクトはデュアルスタック モードで動作できます。つまり、以前と新しいネットワーク アーキテクチャの両方を使用して、Cloud SQL インスタンスを同時にホストできます。これは、プロジェクト内の少なくとも 1 つのインスタンスが古いアーキテクチャを使用している場合に発生します。その結果、Cloud SQL はプロジェクトを新しいアーキテクチャにアップグレードできません。
プロジェクト内のすべてのインスタンスのネットワーク アーキテクチャをクエリするには、gcloud CLI または API を使用します。
デュアルスタック プロジェクトに関する考慮事項
デュアルスタック プロジェクトを使用する場合は、以下の考慮事項に留意してください。
- インスタンスを暗黙的にアップグレードする: インスタンスのプライベート ネットワークを変更するか、デュアルスタック プロジェクト内でプライベート IP アドレスを有効にすると、Cloud SQL はインスタンスを新しいネットワーク アーキテクチャに暗黙的にアップグレードすることがあります。
- アーキテクチャのダウングレードなし: ネットワークの変更によってインスタンスのネットワーク アーキテクチャがダウングレードされることはありません。
- リクエストを拒否する: ネットワーク変更を完了するためにダウングレードが必要な場合、Cloud SQL はリクエストを拒否します。
競合を回避し、ネットワークのアップグレードをスムーズに行うには、プロジェクト内のすべてのインスタンスを新しいアーキテクチャにアップグレードすることをおすすめします。
Cloud SQL のネットワーク アーキテクチャをアップグレードする
Cloud SQL インスタンスのネットワーク アーキテクチャをアップグレードする手順は次のとおりです。
- 1 つの Cloud SQL インスタンスまたは複数の Cloud SQL インスタンスのネットワーク アーキテクチャを確認します。
- Cloud SQL インスタンスのネットワーク アーキテクチャをアップグレードします。
1 つの Cloud SQL インスタンスのネットワーク アーキテクチャを確認する
1 つのインスタンスの現在のネットワーク アーキテクチャを確認するには、gcloud sql instances describe
コマンドまたは instances.get
メソッドを使用します。
gcloud
gcloud CLI のインストールと使用開始については、gcloud CLI をインストールするをご覧ください。Cloud Shell の起動については、Cloud Shell を使用するをご覧ください。
1 つのインスタンスのネットワーク アーキテクチャを確認するには、次のコマンドを実行します。
gcloud sql instances describe INSTANCE_NAME
インスタンスが以前のネットワーク アーキテクチャを使用している場合、レスポンスは次のようになります。
name: INSTANCE_NAME project: PROJECT_ID ... sqlNetworkArchitecture: OLD_NETWORK_ARCHITECTURE
インスタンスが新しいネットワーク アーキテクチャを使用している場合、レスポンスは次のようになります。
name: INSTANCE_NAME project: PROJECT_ID ... sqlNetworkArchitecture: NEW_NETWORK_ARCHITECTURE
sqlNetworkArchitecture
パラメータにより、インスタンスが以前のネットワーク アーキテクチャ(OLD_NETWORK_ARCHITECTURE
)を使用しているのか、それとも新しいネットワーク アーキテクチャ(NEW_NETWORK_ARCHITECTURE
)を使用しているのかが示されます。
REST v1
インスタンスのネットワーク アーキテクチャを確認するには、Cloud SQL Admin API の instances.get
メソッドを使用します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: プロジェクト ID。
- INSTANCE_NAME: インスタンス名。
- NETWORK_ARCHITECTURE_TYPE: ネットワーク アーキテクチャ タイプは次のように定義されます。
OLD_NETWORK_ARCHITECTURE
: インスタンスは以前のネットワーク アーキテクチャを使用します。NEW_NETWORK_ARCHITECTURE
: インスタンスは新しいネットワーク アーキテクチャを使用します。
HTTP メソッドと URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
リクエストの本文(JSON):
{ "sqlNetworkArchitecture": "NETWORK_ARCHITECTURE_TYPE" }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": sql#instance "name": INSTANCE_NAME "project": PROJECT_ID "sqlNetworkArchitecture": enum (SqlNetworkArchitecture) ... }
REST v1beta4
インスタンスのネットワーク アーキテクチャを確認するには、Cloud SQL Admin API の instances.get
メソッドを使用します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: プロジェクト ID。
- INSTANCE_NAME: インスタンス名。
- NETWORK_ARCHITECTURE_TYPE: ネットワーク アーキテクチャ タイプは次のように定義されます。
OLD_NETWORK_ARCHITECTURE
: インスタンスは以前のネットワーク アーキテクチャを使用します。NEW_NETWORK_ARCHITECTURE
: インスタンスは新しいネットワーク アーキテクチャを使用します。
HTTP メソッドと URL:
GET https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
リクエストの本文(JSON):
{ "sqlNetworkArchitecture": "NETWORK_ARCHITECTURE_TYPE" }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": sql#instance "name": INSTANCE_NAME "project": PROJECT_ID "sqlNetworkArchitecture": enum (SqlNetworkArchitecture) ... }
複数の Cloud SQL インスタンスのネットワーク アーキテクチャを確認する
1 つのプロジェクトに存在する複数のインスタンスのネットワーク アーキテクチャを確認するには、gcloud sql instances list
コマンドまたは instance.list
メソッドを使用します。
gcloud
1 つのプロジェクトに存在する複数のインスタンスのネットワーク アーキテクチャを確認するには、次のコマンドを実行します。
gcloud sql instances list --show-sql-network-architecture
出力は次のようになります。
NAME DATABASE_VERSION LOCATION ... SQL_NETWORK_ARCHITECTURE instance_1 POSTGRES_13 asia-northeast1-b OLD_NETWORK_ARCHITECTURE instance_2 MYSQL_5_7 europe-west1-d NEW_NETWORK_ARCHITECTURE ...
REST v1
1 つのプロジェクトに存在する複数のインスタンスのネットワーク アーキテクチャを確認するには、instance.list
メソッドを使用します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: プロジェクト ID。
- NETWORK_ARCHITECTURE_TYPE: 次のネットワーク アーキテクチャ タイプ。
OLD_NETWORK_ARCHITECTURE
: インスタンスは以前のネットワーク アーキテクチャを使用します。NEW_NETWORK_ARCHITECTURE
: インスタンスは新しいネットワーク アーキテクチャを使用します。
HTTP メソッドと URL:
LIST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
リクエストの本文(JSON):
{ "sqlNetworkArchitecture": "NETWORK_ARCHITECTURE_TYPE" }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": sql#instance "name": INSTANCE_NAME "project": PROJECT_ID "sqlNetworkArchitecture": enum (SqlNetworkArchitecture) ... }
REST v1beta4
1 つのプロジェクトに存在する複数のインスタンスのネットワーク アーキテクチャを確認するには、instance.list
メソッドを使用します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: プロジェクト ID。
- NETWORK_ARCHITECTURE_TYPE: ネットワーク アーキテクチャ タイプは次のように定義されます。
OLD_NETWORK_ARCHITECTURE
: インスタンスは以前のネットワーク アーキテクチャを使用します。NEW_NETWORK_ARCHITECTURE
: インスタンスは新しいネットワーク アーキテクチャを使用します。
HTTP メソッドと URL:
LIST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances
リクエストの本文(JSON):
{ "sqlNetworkArchitecture": "NETWORK_ARCHITECTURE_TYPE" }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": sql#instance "name": INSTANCE_NAME "project": PROJECT_ID "sqlNetworkArchitecture": enum (SqlNetworkArchitecture) ... }
1 つの Cloud SQL インスタンスのネットワーク アーキテクチャをアップグレードする
1 つのインスタンスのネットワーク アーキテクチャをアップグレードするには、gcloud sql instances patch
コマンド、instance.update
メソッド、または instance.patch
メソッドを使用します。
gcloud
インスタンスのネットワーク アーキテクチャをアップグレードするには、次のコマンドを実行します。
gcloud sql instances patch INSTANCE_NAME --upgrade-sql-network-architecture
アップグレードには数分かかります。
アップグレードの際には、長時間実行オペレーションが開始され、オペレーション トークンが返されます。
operation_id
REST v1
インスタンスのネットワーク アーキテクチャをアップグレードするには、Cloud SQL Admin API の instance.update
または instance.patch
メソッドを使用します。
Cloud SQL ネットワーク アーキテクチャをアップグレードする場合、インスタンスに対する別の更新をリクエストに含めることはできません。リクエストの本文には、sqlNetworkArchitecture
を NEW_NETWORK_ARCHITECTURE
に設定した DatabaseInstance
オブジェクトのインスタンスを含めます。
アップグレードの際には、長時間実行オペレーションが開始され、オペレーション トークンが返されます。
operation_id
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: プロジェクト ID。
- INSTANCE_NAME: インスタンス名。
- NETWORK_ARCHITECTURE_TYPE: ネットワーク アーキテクチャ タイプは次のように定義されます。
OLD_NETWORK_ARCHITECTURE
: インスタンスは以前のネットワーク アーキテクチャを使用します。NEW_NETWORK_ARCHITECTURE
: インスタンスは新しいネットワーク アーキテクチャを使用します。
HTTP メソッドと URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
リクエストの本文(JSON):
{ "sqlNetworkArchitecture": "NETWORK_ARCHITECTURE_TYPE" }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": sql#instance, "targetLink": string, "status": enum (SqlOperationStatus), "name": string, "insertTime": string, "startTime": string, "endTime": string ... }
インスタンスのアップグレードが失敗した場合は、アップグレード オペレーションを再試行してください。
REST v1beta4
インスタンスのネットワーク アーキテクチャをアップグレードするには、Cloud SQL Admin API の instance.update method
または instance.patch method
を使用します。
Cloud SQL ネットワーク アーキテクチャをアップグレードする場合、インスタンスに対する別の更新をリクエストに含めることはできません。リクエストの本文には、sqlNetworkArchitecture
を NEW_NETWORK_ARCHITECTURE
に設定した DatabaseInstance
オブジェクトのインスタンスを含めます。
アップグレードの際には、長時間実行オペレーションが開始され、次のオペレーション トークンが返されます。
operation_id
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: プロジェクト ID。
- INSTANCE_NAME: インスタンス名。
- NETWORK_ARCHITECTURE_TYPE: ネットワーク アーキテクチャ タイプは次のように定義されます。
OLD_NETWORK_ARCHITECTURE
: インスタンスは以前のネットワーク アーキテクチャを使用します。NEW_NETWORK_ARCHITECTURE
: インスタンスは新しいネットワーク アーキテクチャを使用します。
HTTP メソッドと URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
リクエストの本文(JSON):
{ "sqlNetworkArchitecture": "NETWORK_ARCHITECTURE_TYPE" }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": sql#instance, "targetLink": string, "status": enum (SqlOperationStatus), "name": string, "insertTime": string, "startTime": string, "endTime": string ... }
なんらかの理由でインスタンスのアップグレードが失敗した場合は、アップグレード オペレーションを再試行できます。
よくある質問
このセクションでは、Cloud SQL ネットワーク アーキテクチャのアップグレードに関するよくある質問に対する回答を記載します。
- アップグレードは Cloud SQL インスタンスにどのような影響を与えますか?
- アップグレード後、すべての機能は同じように動作しますか?
- どのインスタンスが以前のネットワーク アーキテクチャを使用していますか?
- 新しい Cloud SQL インスタンスはすべて新しいネットワーク アーキテクチャ上に作成されますか?
- 1 つのコマンドでプロジェクトに含まれるすべてのインスタンスを更新できますか?
- プライマリをアップグレードすると、レプリカも自動的にアップグレードされますか?
- Cloud SQL インスタンスのネットワーク アーキテクチャがアップグレードされるという通知を受け取りました。どうすればよいですか?
- インスタンスをアップグレードしようとすると、「予約済み IP アドレス範囲外」というエラーが表示されます。どうすればよいですか?
アップグレードは Cloud SQL インスタンスにどのような影響を与えますか?
ネットワーク アーキテクチャをアップグレードすると、Cloud SQL インスタンスは MAINTENANCE 状態になります。この状態のインスタンスでは、平均で最大 4 分間のダウンタイムが発生します。アップグレードが完了するまで、インスタンスに対する追加の変更は許可されません。プロジェクトまたはネットワーク内の他のインスタンスはアップグレードの影響を受けません。
アップグレード後、すべての機能は同じように動作しますか?
新しいアーキテクチャでは、Cloud SQL インスタンスのすべての機能が古いアーキテクチャと同じように動作します。新しいネットワーク アーキテクチャを使用するようにインスタンスをアップグレードした後、そのインスタンスのネットワークを切り替える場合は、宛先ネットワーク内のすべてのインスタンスも新しいネットワーク アーキテクチャにアップグレードされていることを確認してください。
どのインスタンスが以前のネットワーク アーキテクチャを使用していますか?
2021 年 8 月以降に作成された新しいプロジェクトでは、新しいネットワーク アーキテクチャが自動的に使用されます。既存のプロジェクトでは、2 年以上経過した Cloud SQL インスタンスで以前のネットワーク アーキテクチャを使用している場合があります。したがって、そのプロジェクトの新しいインスタンスで新しいネットワーク アーキテクチャを使い始めるには、そのプロジェクト内のすべてのインスタンスをアップグレードする必要があります。
新しい Cloud SQL インスタンスはすべて新しいネットワーク アーキテクチャ上に作成されますか?
デフォルトでは、2021 年 8 月以降に作成されたプロジェクトで作成された新しい Cloud SQL インスタンスは、新しいネットワーク アーキテクチャを使用します。
2021 年 8 月より前に作成されたプロジェクトでインスタンスを作成して新しいネットワーク アーキテクチャを使用する場合は、そのプロジェクト内の既存のインスタンスをすべて新しいネットワーク アーキテクチャに更新する必要があります。共有 VPC を使用している場合は、共有 VPC に参加しているプロジェクト内のすべてのインスタンスを更新する必要があります。
プロジェクト内の既存のインスタンスをすべて更新したら、数時間待ってからプロジェクトにインスタンスを作成します。プロジェクトで作成する新しいインスタンスは、新しいネットワーク アーキテクチャを使用します。
1 つのコマンドでプロジェクトに含まれるすべてのインスタンスを更新できますか?
いいえ。新しいネットワーク アーキテクチャへのアップグレードは、各インスタンスに基づいて行われます。
プライマリをアップグレードすると、レプリカも自動的にアップグレードされますか?
いいえ。新しいネットワーク アーキテクチャへのアップグレードは、個々のインスタンスに基づいて行われます。各レプリカは個別のインスタンスとして扱われ、個別にアップグレードする必要があります。つまり、プライマリがアップグレードされ、レプリカが以前のネットワーク アーキテクチャを使用している場合、レプリカは影響を受けません。その逆も同様です。レプリカをアップグレードしても、プライマリは影響を受けません。
Cloud SQL インスタンスのネットワーク アーキテクチャがアップグレードされるという通知を受け取りました。どうすればよいですか?
お客様による対応は必要ありません。
インスタンスによっては、プライベート ネットワークで自動アップグレードが実行されるときに、リクエストが一時的に拒否されるものがあります。回避策として、1 つの Cloud SQL インスタンスのネットワーク アーキテクチャをアップグレードするの手順に沿って、インスタンスのネットワーク アーキテクチャを自分でアップグレードしてください。
インスタンスをアップグレードしようとすると、「予約済み IP アドレス範囲外」というエラーが表示されます。どうすればよいですか?
プライベート IP を使用する VPC ネットワークで Cloud SQL インスタンスを使用するには、VPC ネットワークのプライベート サービス アクセスを設定するときに IP アドレス範囲を割り振ります。
たとえば、IP アドレス範囲の割り振りが変更または削除されると、次のようなエラーが発生することがあります。
Network architecture upgrade not allowed for private-ip instance PROJECT_ID:INSTANCE_NAME
whose IP address range 10.0.0.0/24
is outside the reserved IP address range for
private services access. Re-allocate the IP address range for private services access and retry.
この例では、最初に割り振られた IP アドレス範囲の名前は google-managed-services-VPC_NETWORK_NAME
で、最初に割り振られた IP アドレス範囲は 10.0.0.0/16
です。次に、プライベート IP アドレスが 10.0.0.1
のインスタンスを作成します。google-managed-services-VPC_NETWORK_NAME
の IP アドレス範囲が削除された場合や、10.1.0.0/16
の範囲を参照するように更新された場合、この範囲はインスタンスのプライベート IP アドレス 10.0.0.1
をカバーしません。その後、インスタンスのネットワーク アーキテクチャをアップグレードしようとすると、outside the reserved IP address range
エラーが発生します。
この問題を解決するには、Cloud SQL 用にプライベート サービス アクセスを構成するの手順に沿って操作します。インスタンスの IP アドレスを含む IP アドレス範囲を、プライベート サービス アクセス用に割り振られた範囲に再割り振りします。少なくとも、エラー メッセージで報告された IP アドレス範囲を割り振ることができます(前述の例では 10.0.0.0/24
)。
次に、ネットワーク アーキテクチャのアップグレードを再試行します。
次のステップ
- Private Service Connect の詳細を確認する
- Assured Workloads の詳細を確認する
- Cloud SQL 用にプライベート サービス アクセスを構成するの詳細を確認する
- AlloyDB for PostgreSQL へのデータベース移行サービスの詳細を確認する