このページでは、Cloud SQL for PostgreSQL インスタンスを作成する方法を説明します。
すべてのインスタンスの設定について詳しくは、インスタンスの設定をご覧ください。
新しく作成したインスタンスには postgres データベースがあります。
1 つのプロジェクトで使用できるインスタンスの最大数は、インスタンスのネットワーク アーキテクチャによって異なります。
- 新しい SQL ネットワーク アーキテクチャ: プロジェクトあたり最大 1,000 個のインスタンスを使用できます。
- 以前の SQL ネットワーク アーキテクチャ: プロジェクトあたり最大 100 個のインスタンスを使用できます。
- 両方のアーキテクチャを使用する場合: 上限は、2 つのアーキテクチャ間のインスタンスの分布に応じて 100~1,000 の間になります。
この数を引き上げる必要がある場合は、サポートケースを送信してリクエストしてください。リードレプリカはインスタンスとしてカウントされます。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Install the gcloud CLI.
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Install the gcloud CLI.
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init - ユーザー アカウントに Cloud SQL 管理者のロールと Compute 閲覧者のロールが付与されていることを確認します。
ロールと権限について詳細を確認します。
-
Google Cloud コンソールで、Cloud SQL の [インスタンス] ページに移動します。
- [インスタンスを作成] をクリックします。
- [インスタンスの作成] ページの [データベース エンジンの選択] パネルで、[PostgreSQL を選択] をクリックします。
[SQL Server インスタンスを作成する] ページの [Cloud SQL のエディションの選択] セクションで、インスタンスの Cloud SQL エディション(
EnterpriseまたはEnterprise Plus)を選択します。Cloud SQL のエディションの詳細については、Cloud SQL の各エディションの概要をご覧ください。
- インスタンスのエディションのプリセットを選択します。使用可能なプリセットを表示するには、[エディションのプリセット] メニューをクリックします。
- [インスタンスの情報] セクションで、インスタンスのデータベース バージョンを選択します。使用可能なバージョンを表示するには、[データベースのバージョン] メニューをクリックします。
インスタンスの作成後にデータベースのバージョンを編集することはできません。
- [インスタンスの情報] ペインの [インスタンス ID] フィールドに、インスタンスの ID を入力します。
インスタンス名にプロジェクト ID を含める必要はありません。この処理は必要に応じて自動的に行われます(ログファイルの場合など)。
postgresユーザーのパスワードを入力します。- (省略可)次のようにインスタンスのパスワード ポリシーを構成します。
- [パスワード ポリシーを有効にする] チェックボックスをオンにします。
- パスワード ポリシーの設定ボタンをクリックし、次の 1 つ以上のオプションを設定して、[保存] をクリックします。
- 最小文字数: パスワードの最小文字数を指定します。
- パスワードの複雑さ: パスワードが小文字、大文字、数字、英数字以外の文字の組み合わせになっているかどうかを確認します。
- パスワードの再利用の制限: 再利用できない以前のパスワードの数を指定します。
- ユーザー名の禁止: パスワードにユーザー名を使用できないようにします。
- パスワード変更の間隔を設定: パスワードを変更可能になるまでの最小時間を指定します。
- [リージョンとゾーンの可用性の選択] セクションで、インスタンスのリージョンとゾーンを選択します。リージョンの可用性は、Cloud SQL for PostgreSQL のエディションによって異なる場合があります。詳細については、インスタンスの設定についてをご覧ください。
インスタンスにアクセスするリソースと同じリージョンにインスタンスを配置します。選択したリージョンは後から変更できません。ほとんどの場合、ゾーンを指定する必要はありません。
高可用性を目的とするインスタンスを構成する場合は、プライマリ ゾーンとセカンダリ ゾーンの両方を選択できます。
セカンダリ ゾーンがインスタンスの作成中に使用される場合は、次の条件が適用されます。
- ゾーンのデフォルトは、プライマリ ゾーンは
Any、セカンダリ ゾーンはAny (different from primary)です。 - プライマリ ゾーンとセカンダリ ゾーンの両方を指定する場合は、別々のゾーンにする必要があります。
- ゾーンのデフォルトは、プライマリ ゾーンは
- [インスタンスのカスタマイズ] セクションで、インスタンスの設定を更新します。最初に [構成オプションを表示] をクリックして、設定のグループを表示します。次に、設定の確認とカスタマイズを行うグループを開きます。選択したすべてのオプションの [サマリー] が右側に表示されます。これらのインスタンス設定のカスタマイズはオプションです。カスタマイズを行�����い場合、デフォルト値が割り当てられます。
次の表は、インスタンスの設定のクイック リファレンスです。各設定の詳細については、インスタンスの設定ページをご覧ください。
設定 注 マシンタイプ マシンタイプ 共有コアまたは専用コアのいずれかを選択します。共有コアの場合、各マシンタイプはインスタンスの CPU(コア)数とメモリ量によって分類されます。 コア数 インスタンスの vCPU の数。詳細 メモリ インスタンスのメモリ量(GB)。詳細 カスタム 専用コア マシンタイプの場合は、事前定義された構成を選択するのではなく、[カスタム] ボタンを選択して、カスタム構成でインスタンスを作成します。このオプションを選択した場合は、インスタンスのコア数とメモリ量を選択する必要があります。詳細。 データ キャッシュ データ キャッシュを有効にする デフォルトでは、Cloud SQL for PostgreSQL Enterprise Plus エディションのインスタンスに対して、データ キャッシュを有効にするオプションが自動的に選択されます。データ キャッシュを有効にしない場合は、[データ キャッシュを有効にする] チェックボックスをオフにします。データ キャッシュの詳細については、データ キャッシュをご覧ください。 ストレージ ストレージの種類 インスタンスで SSD または HDD のどちらのストレージを使用するかを指定します。詳細 ストレージ容量 インスタンスにプロ���ジョニングされているストレージ容量。詳細 ストレージの自動増量を有効にする 空き領域が少なくなったときに、Cloud SQL が自動的にインスタンス用のストレージを増やすかどうかを指定します。詳細 暗号化 Google マネージド暗号化 デフォルトのオプション。 顧客管理の暗号鍵(CMEK) Google Cloud Key Management Service でご自身の鍵を使用する場合は選択します。詳細 接続 プライベート IP インスタンスのプライベート IP アドレスを追加します。インスタンスへの接続を有効にするには、追加の構成が必要です
必要に応じて、接続に使用するインスタンスに割り当てる IP 範囲を指定できます。- [割り振られた IP 範囲のオプションを表示] を展開します。
- プルダウン メニューから IP 範囲を選択します。
インスタンスに��、パブリック IP アドレスとプライベート IP アドレスの両方を設定できます。
- プライベート IP の使用方法をご確認ください。
- IP アドレス範囲の割り振りの詳細をご確認ください。
パブリック IP インスタンスのパブリック IP アドレスを追加します。その後、インスタンスに接続するための承認済みネットワークを追加できます。 インスタンスには、パブリック IP アドレスとプライベート IP アドレスの両方を設定できます。
パブリック IP の使用方法をご確認ください。
承認済みネットワーク 新しいネットワークの名前とネットワーク アドレスを追加します。詳細については、こちらをご覧ください。
Google Cloud サービスのプライベート パス このチェックボックスをオンにすると、他の Google Cloud サービス(BigQuery など)がプライベート接続で Cloud SQL 内のデータにアクセスしてクエリを実行できるようになります。
マネージド接続プーリングを有効にする このチェックボックスをオンにすると、インスタンスでマネージド接続プーリングが有効になります。マネージド接続プーリングを使用すると、プーリングと多重化を使用して Cloud SQL インスタンスのリソース使用量と接続レイテンシを最適化し、ワークロードをスケーリングできます。マネージド接続プールの詳細については、マネージド接続プールの概要をご覧ください。
セキュリティ サーバー認証局モード この Cloud SQL インスタンスのサーバー証明書に署名する認証局(CA)のタイプを選択してください。詳細
デフォルトでは、 Google Cloud コンソールでインスタンスを作成すると、インスタンスは Google が管理する内部認証局(
GOOGLE_MANAGED_INTERNAL_CA)を使用します。これはインスタンスごとの CA オプションです。データの保護 バックアップ ティア インスタンスのバックアップ オプション。拡張バックアップと標準バックアップのどちらかを選択できます。 バックアップを自動化 バックアップを開始する時間枠。詳細。 バックアップの保存先を選択する ほとんどのユースケースでは、マルチリージョンを選択します。バックアップを特定のリージョンに保存する必要がある場合(たとえば法規制の理由で保存する必要がある場合など)は、リージョンを選択して、[ロケーション] プルダウン メニューからリージョンを選択します。 保存する自動バックアップの数を選択する 保存する自動バックアップの数(1~365 日)。詳細 ポイントインタイム リカバリを有効にする ポイントインタイム リカバリとログ先行書き込みを有効にします。詳細については、こちらをご覧ください。 削除からの保護の有効化 インスタンスを誤って削除しないように保護するかどうかを指定します。詳細 インスタンスの削除後に保持バックアップを有効にする インスタンスの削除後に自動バックアップとオンデマンド バックアップを保持するかどうかを決定します。詳細 ログを保持する日数を選択する ログ先行書き込みの保持期間は 1~7 日間で構成します。デフォルトの設定は 7 日間です。詳細 メンテナンス 優先ウィンドウ Cloud SQL がインスタンスに対し、中断メンテナンスを実行できる 1 時間の時間枠を指定します。この時間枠を設定しない場合、任意の時間に中断メンテナンスが行われる可能性があります。詳細 更新の順序 希望するインスタンス更新のタイミング。同じプロジェクトの他のインスタンスとの相対的なタイミングです。詳細 フラグ フラグを追加 デ��タベース フラグを使用して、インスタンスの設定とパラメータを制御できます。詳細 ラベル ラベルを追加 追加するラベルごとにキーと値を追加します。ラベルはインスタンスの整理に役立ちます。 - [インスタンスを作成] をクリックします。
注: インスタンスの作成には数分かかることがあります。ただし、インスタンスの作成中にインスタンスに関する情報を確認できます。
gcloud sql instances createコマンドを使用して、インスタンスを作成します。- vCPU は 1 または 2~96 の間の偶数にする必要があります。
- メモリは次の条件を満たす必要があります。
- vCPU あたり 0.9~6.5 GB
- 256 MB の倍数
- 3.75 GB(3,840 MB)以上
- ゾーンは有効なゾーンである必要があります。
- セカンダリ ゾーンを指定する場合は、プライマリ ゾーンも指定する必要があります。
- プライマリ ゾーンとセカンダリ ゾーンを指定する場合は、別々のゾーンにする必要があります。
- プライマリ ゾーンとセカンダリ ゾーンを指定する場合は、それらが同じリージョンに属している必要があります。
--no-assign-ipパラメータを使用する。--networkパラメータを使用して、プライベート接続の作成に使用する VPC ネットワークの名前を指定する。GOOGLE_MANAGED_INTERNAL_CA: これがデフォルト値です。このオプションでは、各 Cloud SQL インスタンス専用の内部 CA が、対象のインスタンスのサーバー証明書に署名します。GOOGLE_MANAGED_CAS_CA: このオプションでは、Cloud SQL によって管理され、 Google Cloud Certificate Authority Service(CA Service)でホストされるルート CA と下位サーバー CA で構成される CA 階層が使用されます。リージョン内の下位サーバー CA はサーバー証明書に署名し、リージョン内のインスタンス間で共有されます。CUSTOMER_MANAGED_CAS_CA: このオプションを使用すると、自分で CA 階層を定義し、CA 証明書のローテーションを管理できます。インスタンスと同じリージョンの CA Service で CA プールを作成します。プール内の CA のいずれかがサーバー証明書の署名に使用されます。 詳細については、顧客管理の CA を使用するをご覧ください。- ゾーンは有効なゾーンである必要があります。
- セカンダリ ゾーンを指定する場合は、プライマリ ゾーンも指定する必要があります。
- 自動的に割り振られた IP アドレスをメモします。
Cloud SQL Auth Proxy を使用しない場合は、アプリケーションまたはツールがインスタンスに接続するためのホストアドレスとしてこのアドレスを使用します。
postgresユーザーのパスワードを設定します。gcloud sql users set-password postgres \ --instance=INSTANCE_NAME \ --password=PASSWORD
- Cloud Shell を起動します。
-
Terraform 構成を適用するデフォルトの Google Cloud プロジェクトを設定します。
このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Terraform 構成ファイルに明示的な値を設定すると、環境変数がオーバーライドされます。
-
Cloud Shell で、ディレクトリを作成し、そのディレクトリ内に新しいファイルを作成します。ファイルの拡張子は
.tfにする必要があります(例:main.tf)。このチュートリアルでは、このファイルをmain.tfとします。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
チュートリアルを使用している場合は、各セクションまたはステップのサンプルコードをコピーできます。
新しく作成した
main.tfにサンプルコードをコピーします。必要に応じて、GitHub からコードをコピーします。Terraform スニペットがエンドツーエンドのソリューションの一部である場合は、この方法をおすすめします。
- 環境に適用するサンプル パラメータを確認し、変更します。
- 変更を保存します。
-
Terraform を初期化します。これは、ディレクトリごとに 1 回だけ行います。
terraform init
最新バージョンの Google プロバイダを使用する場合は、
-upgradeオプションを使用します。terraform init -upgrade
-
構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。
terraform plan
必要に応じて構成を修正します。
-
次のコマンドを実行します。プロンプトで「
yes」と入力して、Terraform 構成を適用します。terraform apply
Terraform に「Apply complete!」というメッセージが表示されるまで待ちます。
- Google Cloud プロジェクトを開いて結果を表示します。 Google Cloud コンソールの UI でリソースに移動して、Terraform によって作成または更新されたことを確認します。
- 削除の保護を無効にするには、Terraform 構成ファイルで
deletion_protection引数をfalseに設定します。deletion_protection = "false"
- 次のコマンドを実行します。プロンプトで「
yes」と入力して、更新された Terraform 構成を適用します。terraform apply
-
次のコマンドを実行します。プロンプトで「
yes」と入力して、以前に Terraform 構成で適用されたリソースを削除します。terraform destroy
- PROJECT_ID: プロジェクト ID
- INSTANCE_ID: インスタンス ID
- REGION: リージョン
- DATABASE_VERSION: データベース バージョンの列挙型文字列(例:
POSTGRES_17) - PASSWORD: root ユーザーのパスワード
- MACHINE_TYPE: マシン(階層)タイプの列挙型文字列。次のようになります。
db-custom-[CPUS]-[MEMORY_MBS] EDITION_TYPE: Cloud SQL のエディション
- DATA_CACHE_ENABLED:(省略可)インスタンスのデータ キャッシュを有効にするには、
trueに設定します。 - PRIVATE_NETWORK: このインスタンスに使用する Virtual Private Cloud(VPC)ネットワークの名前を指定します。このネットワークに対して、プライベート サービス アクセスがすでに構成されている必要があります。
- AUTHORIZED_NETWORKS: パブリック IP 接続の場合は、インスタンスに接続できる承認済みネットワークからの接続を指定します。
- CA_MODE: インスタンスの認証局階層(
GOOGLE_MANAGED_INTERNAL_CAまたはGOOGLE_MANAGED_CAS_CA)を指定します。serverCaModeを指定しない場合、デフォルトの構成はGOOGLE_MANAGED_INTERNAL_CAです。この機能はプレビュー版です。 - DNS_NAMES: Cloud SQL インスタンスのサーバー証明書に、最大 3 つの DNS 名をカンマ区切りで追加します。1 つの証明書で複数の DNS 名を保護できます。この機能はプレビュー版で、
CUSTOMER_MANAGED_CAS_CAインスタンスでのみ使用できます。 enablePasswordPolicy:trueに設定するとパスワード ポリシーが有効になります。パスワード ポリシーを削除するには、
enablePasswordPolicyの値としてnullを使用して、PATCHリクエストを送信します。この場合、他のパスワード ポリシー パラメータはリセットされます。minLength: パスワードの最小文字数を指定します。complexity: パスワードが小文字、大文字、数字、英数字以外の文字の組み合わせかどうかを確認します。デフォルト値はCOMPLEXITY_DEFAULTです。reuseInterval: 再利用できない以前のパスワードの数を指定します。disallowUsernameSubstring:trueに設定した場合、パスワードにユーザー名を使用できなくなります。passwordChangeInterval: パスワードが変更可能になるまでの最小期間を指定します。値は秒単位で、小数点以下 9 桁まで指定できます。最後にsを付けます。例:3.5s。enableGoogleMlIntegration: このパラメータをtrueに設定すると、Cloud SQL インスタンスを Vertex AI に接続��て、リアルタイム予測と分析情報のリクエストを AI に渡すことができます。cloudsql.enable_google_ml_integration: このパラメータをonに設定すると、Cloud SQL を Vertex AI と統合できます。- project-id: プロジェクト ID
- instance-id: 前のステップで作成したインスタンス ID
- PROJECT_ID: プロジェクト ID
- INSTANCE_ID: インスタンス ID
- REGION: リージョン
- DATABASE_VERSION: データベース バージョンの列挙型文字列(例:
POSTGRES_17) - PASSWORD: root ユーザーのパスワード
- MACHINE_TYPE: マシン(階層)タイプの列挙型文字列。次のようになります。
db-custom-[CPUS]-[MEMORY_MBS] EDITION_TYPE: Cloud SQL のエディション
- DATA_CACHE_ENABLED:(省略可)インスタンスのデータ キャッシュを有効にするには、
trueに設定します。 - PRIVATE_NETWORK: このインスタンスに使用する Virtual Private Cloud(VPC)ネットワークの名前を指定します。このネットワークに対して、プライベート サービス アクセスがすでに構成されている必要があります。
- AUTHORIZED_NETWORKS パブリック IP 接続の場合は、インスタンスに接続できる承認済みネットワークからの接続を指定します。
- CA_MODE: インスタンスの認証局階層(
GOOGLE_MANAGED_INTERNAL_CAまたはGOOGLE_MANAGED_CAS_CA)を指定します。serverCaModeを指定しない場合、デフォルトの構成はGOOGLE_MANAGED_INTERNAL_CAです。この機能はプレビュー版です。 - DNS_NAMES: Cloud SQL インスタンスのサーバー証明書に、最大 3 つの DNS 名をカンマ区切りで追加します。1 つの証明書で複数の DNS 名を保護できます。この機能はプレビュー版で、
CUSTOMER_MANAGED_CAS_CAインスタンスでのみ使用できます。 enablePasswordPolicy:trueに設定するとパスワード ポリシーが有効になります。パスワード ポリシーを削除するには、
enablePasswordPolicyの値としてnullを使用して、PATCHリクエストを送信します。この場合、他のパスワード ポリシー パラメータはリセットされます。minLength: パスワードの最小文字数を指定します。complexity: パスワードが小文字、大文字、数字、英数字以外の文字の組み合わせかどうかを確認します。デフォルト値はCOMPLEXITY_DEFAULTです。reuseInterval: 再利用できない以前のパスワードの数を指定します。disallowUsernameSubstring:trueに設定した場合、パスワードにユーザー名を使用できなくなります。passwordChangeInterval: パスワードが変更可能になるまでの最小期間を指定します。値は秒単位で、小数点以下 9 桁まで指定できます。最後にsを付けます。例:3.5s。enableGoogleMlIntegration: このパラメータをtrueに設定すると、Cloud SQL インスタンスを Vertex AI に接続して、リアルタイム予測と分析情報のリクエストを AI に渡すことができます。cloudsql.enable_google_ml_integration: このパラメータをonに設定すると、Cloud SQL を Vertex AI と統合できます。- project-id: プロジェクト ID
- instance-id: 前のステップで作成したインスタンス ID
- プライベート サービス接続に割り振られた IP 範囲のサイズが /24 より小さい。
- プライベート サービス接続に割り振られた IP 範囲のサイズが、Cloud SQL インスタンスの数に対して小さすぎる。
- インスタンスを複数のリージョンで作成すると、割り振られた IP 範囲のサイズに関する要件が大きくなります。割り振られた範囲のサイズをご覧ください。
- ワイルドカード文字が含まれていない。
- 末尾にピリオドがない。
- RFC 1034 の仕様に準拠している。
- インスタンスに PostgreSQL データベースを作成する。
- インスタンスに PostgreSQL ユーザーを作成する。
- インスタンスへのアクセスの保護と制御を行う。
- PostgreSQL クライアントを使用してインスタンスに接続する。
- データベースにデータをインポートする。
- インスタンスの設定について確認する。
PostgreSQL インスタンスを作成する
コンソール
パスワードをクリアテキストで表示するには、パスワードを表示アイコンをクリックします。
手動でパスワードを入力するか、[生成] をクリックすると、Cloud SQL によってパスワードが自動的に作成されます。
gcloud
gcloud CLI のインストールと使用開始については、gcloud CLI のインストールをご覧ください。Cloud Shell の起動方法については、Cloud Shell のドキュメントをご覧ください。
Cloud SQL Enterprise Plus エディションのインスタンスの場合:
gcloud sql instances create INSTANCE_NAME \ --database-version=DATABASE_VERSION \ --region=REGION \ --tier=TIER \ --edition=ENTERPRISE_PLUS
Cloud SQL Enterprise エディションのインスタンスの場合:
gcloud sql instances create INSTANCE_NAME \ --database-version=DATABASE_VERSION \ --region=REGION \ --cpu=NUMBER_CPUS \ --memory=MEMORY_SIZE \ --edition=ENTERPRISE
db-f1-micro または db-g1-small を選択する場合は、--tier フラグを使用できます。
gcloud sql instances create INSTANCE_NAME \ --tier=API_TIER_STRING \ --region=REGION
vCPU とメモリサイズの値には制限があります。
たとえば、次のコマンドで、2 つの vCPU と 7,680 MB のメモリを持つ Cloud SQL Enterprise エディションのインスタンスが作成されます。
gcloud sql instances create myinstance \ --database-version=POSTGRES_16 \ --cpu=2 \ --memory=7680MB \ --region=us-central1
次のコマンドで、4 つのコアを持つ Cloud SQL Enterprise Plus エディション インスタンスが作成されます。
gcloud sql instances create myinstance \ --database-version=POSTGRES_16 \ --tier=db-perf-optimized-N-4 \ --edition=ENTERPRISE_PLUS \ --region=us-central1
--cpu と --memory のサイズの設定方法の詳細については、カスタム インスタンス構成をご覧ください。
REGION のデフォルト値は us-central1 です。
インスタンス名には機密情報や個人を特定できる情報を含めないでください。インスタンス名は外部から閲覧可能です。
インスタンス名にプロジェクト ID を含める必要はありません。この処理は必要に応じて自動的に行われます(ログファイルの場合など)。
高可用性インスタンスを作成する場合は、--zone パラメータと --secondary-zone パラメータを使用して、プライマリ ゾーンとセカンダリ ゾーンの両方を指定できます。セカンダリ ゾーンがインスタンスの作成中または編集中に使用される場合は、次の条件が適用されます。
パラメータを追加して、他のインスタンス設定を指定できます。
| 設定 | パラメータ | 注 |
|---|---|---|
| 必須パラメータ | ||
| データベースのバージョン | --database-version |
Cloud SQL エディションに基づくデータベース バージョン。 |
| リージョン | --region |
有効な値を参照してください。 |
| パスワード ポリシーの設定 | ||
| パスワード ポリシーの有効化 | --enable-password-policy |
使用するとパスワード ポリシーが有効になります。デフォルトでは、パスワード ポリシーは無効になっています。--clear-password-policy パラメータを使用して無効にすると、他のパスワード ポリシー パラメータはリセットされます。 |
| Minimum length | --password-policy-min-length |
パスワードの最小文字数を指定します。 |
| パスワードの複雑さ | --password-policy-complexity |
パスワードの複雑さのチェックを有効にして、パスワードに小文字、大文字、数字、非英数字がそれぞれ 1 つ以上含まれていることを確認します。値を COMPLEXITY_DEFAULT に設定します。 |
| パスワードの再利用の制限 | --password-policy-reuse-interval |
再利用できない以前のパスワードの数を指定します。 |
| ユーザー名の使用を許可しない | --password-policy-disallow-username-substring |
パスワードにユーザー名を使用できないようにします。チェックを無効にするには、--no-password-policy-disallow-username-substring パラメータを使用します。 |
| パスワード変更の間隔を設定 | --password-policy-password-change-interval |
パスワードが変更可能になるまでの最小期間を指定します(例: 2m = 2 分)。 |
| 接続 | ||
| プライベート IP | --network
|
--network: このインスタンスに使用する VPC ネットワーク名を指定します。このネットワークに対して、プライベート サービス アクセスがすでに構成されている必要があります。ベータ版のコマンド(gcloud beta sql instances create)でのみ使用できます。
このパラメータは次の場合にのみ有効です。 |
| パブリック IP | --authorized-networks |
パブリック IP 接続の場合は、承認済みネットワークからのみ、インスタンスに接続できます。詳細。 |
| SSL の適用 |
|
|
| サーバー CA モード | --server-ca-mode |
|
| ネットワーク アーキテクチャ | --enforce-new-network-architecture |
インスタンスの作成時に新しいネットワーク アーキテクチャの使用を強制します。プロジェクトが新しいネットワーク アーキテクチャに完全にアップグレードされる前にインスタンスを作成するときにこのフラグを使用すると、割り振られた IP 範囲に十分な IP アドレスが残っていない場合、IP アドレスの過剰消費やインスタンスの作成失敗につながる可能性があります。詳細については、インスタンスを新しいネットワーク アーキテクチャにアップグレードすると IP アドレス範囲を割り振るをご覧ください。 |
| マシンタイプとストレージ | ||
| マシンタイプ | --tier |
共有コア インスタンス(db-f1-micro または db-g1-small)の指定に使用されます。カスタム インスタンス構成には、代わりに --cpu パラメータまたは --memory パラメータを使用します。カスタム インスタンス構成をご覧ください。 |
| ストレージの種類 | --storage-type |
インスタンスで SSD または HDD のどちらのストレージを使用するかを指定します。詳細 |
| ストレージ容量 | --storage-size |
インスタンスにプロビジョニングされているストレージ容量(GB 単位)。詳細 |
| ストレージの自動増量 | --storage-auto-increase |
空き領域が少なくなったときに、Cloud SQL が自動的にインスタンス用のストレージを増やすかどうかを指定します。詳細 |
| ストレージの自動増量の上限 | --storage-auto-increase-limit |
Cloud SQL が自動的に増量できるストレージ容量の上限を指定します。ベータ版のコマンド(gcloud beta sql instances create)でのみ使用できます。
詳細 |
| データ キャッシュ(オプション) | --enable-data-cache |
インスタンスのデータ キャッシュを有効または無効にします。詳細については、データ キャッシュをご覧ください。 |
| 自動バックアップと高可用性 | ||
| 高可用性 | --availability-type |
高可用性インスタンスの場合は、REGIONAL に設定します。詳細
|
| セカンダリ ゾーン | --secondary-zone |
高可用性のインスタンスを作成している場合は、--zone と --secondary-zone parameters を使用して、プライマリ ゾーンとセカンダリ ゾーンの両方を指定できます。セカンダリ ゾーンがインスタンスの作成中または編集中に使用される場合は、次の制限が適用されます。プライマリ ゾーンとセカンダリ ゾーンを指定する場合は、別々のゾーンにする必要があります。 プライマリ ゾーンとセカンダリ ゾーンを指定する場合は、それらが同じリージョンに属している必要があります。 |
| 自動バックアップ | --backup-start-time |
バックアップを開始する時間枠。詳細。 |
| 自動バックアップ保持期間の設定 | --retained-backups-count |
保持する自動バックアップの数。 詳細 |
| バイナリ ロギングの保持設定 | --retained-transaction-log-days |
ポイントインタイム リカバリの write-ahead log を保持する日数。詳しくはこちらをご覧ください。 |
| ポイントインタイム リカバリ | --enable-point-in-time-recovery |
ポイントインタイム リカバリとログ先行書き込みを有効にします。 詳しくは、こちらをご覧ください。 |
| データベース フラグの追加 | ||
| データベース フラグ | --database-flags |
データベース フラグを使用して、インスタンスの設定とパラメータを制御できます。データベース フラグの詳細。 |
| メンテナンス スケジュール | ||
| メンテナンスの時間枠 | --maintenance-window-day、
--maintenance-window-hour |
Cloud SQL がインスタンスに対し、中断メンテナンスを実行できる 1 時間の時間枠を指定します。この時間枠を設定しない場合、任意の時間に中断を伴うメンテナンスが行われる可能性があります。詳細については、こちらをご覧ください。 |
| メンテナンスのタイミング | --maintenance-release-channel |
希望するインスタンス更新のタイミング。同じプロジェクトの他のインスタンスとの相対的なタイミングです。他のインスタンスより前に更新する場合は preview を使用し、後に更新する場合は production を使用します。詳しくはこちらをご覧ください。 |
| Vertex AI との統合 | ||
--enable-google-ml-integration |
Cloud SQL インスタンスから Vertex AI に接続して、リアルタイム予測と分析情報のリクエストを AI に渡すことができます。 | |
--database-flags cloudsql.enable_google_ml_integration=on |
このフラグをオンにすると、Cloud SQL を Vertex AI と統合できます。 | |
| カスタム SAN | ||
| カスタム サブジェクト代替名(SAN)の追加 | --custom-subject-alternative-names=DNS_NAMES |
IP アドレスではなくカスタム DNS 名を使用して Cloud SQL インスタンスに接続する場合は、インスタンスの作成時にカスタム サブジェクト代替名(SAN)設定を構成します。カスタム SAN 設定に挿入したカスタム DNS 名は、インスタンスのサーバー証明書の SAN フィールドに追加されます。これにより、ホスト名の検証でカスタム DNS 名を安全に使用できます。 クライアントとアプリケーションでカスタム DNS 名を使用するには、DNS 名と IP アドレスのマッピングを設定する必要があります。これは DNS の解決と呼ばれます。カスタム SAN 設定には、最大 3 つのカスタム DNS 名をカンマ区切りで追加できます。 |
Terraform
インスタンスを作成するには、Terraform リソースを使用します。
変更を適用する
Google Cloud プロジェクトで Terraform 構成を適用するには、次のセクションの手順を完了します。
Cloud Shell を準備する
ディレクトリを準備する
Terraform 構成ファイルには独自のディレクトリ(ルート モジュールとも呼ばれます)が必要です。
変更を適用する
変更を削除する
変更を削除するには、次の手順を行います。
REST v1
インスタンスを作成する
この例では、インスタンスを作成します。バックアップ、バイナリ ロギングなどのオプション パラメータも含まれてい���す。この呼び出しのパラメータの完全なリストについては、Instances:insert �����ジ�����覧ください。リ���ジョンの有効��値など、インスタンスの設定の詳細については、インスタンスの設定をご覧ください。
インスタンス ID には機密情報や個人を特定できる情報を含めないでください。インスタンス ID は外部から閲覧可能です。
インスタンス名にプロジェクト ID を含める必要はありません。この処理は必要に応じて自動的に行われます(ログファイルの場合など)。
リクエストのデータを使用する前に、次のように置き換えます。
インスタンスの作成時にパスワード ポリシーを設定するには、リクエストに passwordValidationPolicy オブジェクトを含めます。必要に応じて、次のパラメータを設定します。
Vertex AI と統合できるようにインスタンスを作成するには、enableGoogleMlIntegration オブジェクトをリクエストの中に入れます。このようにして統合すると、Vertex AI でホストされている大規模言語モデル(LLM)を Cloud SQL for PostgreSQL データベースに適用できるようになります。
必要に応じて、次のパラメータを設定します。
sqlNetworkArchitecture フィールドを使用すると、プロジェクトが完全にアップグレードされていない場合でも、インスタンスの作成時に新しいネットワーク アーキテクチャの使用を強制できます。新しいネットワーク アーキテクチャとその影響の詳細については、
インスタンスを新しいネットワーク アーキテクチャにアップグレードすると IP アドレス範囲を割り振るをご覧ください。
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
リクエストの本文(JSON):
{
"name": "INSTANCE_ID",
"region": "REGION",
"databaseVersion": "DATABASE_VERSION",
"rootPassword": "PASSWORD",
"settings": {
"tier": "MACHINE_TYPE",
"edition": "EDITION_TYPE",
"enableGoogleMlIntegration": "true" | "false"
"databaseFlags":
[
{
"name": "cloudsql.enable_google_ml_integration",
"value": "on" | "off"
}
]
"dataCacheConfig": {
"dataCacheEnabled": DATA_CACHE_ENABLED
},
"backupConfiguration": {
"enabled": true
},
"passwordValidationPolicy": {
"enablePasswordPolicy": true
"minLength": "MIN_LENGTH",
"complexity": COMPLEXITY_DEFAULT,
"reuseInterval": "REUSE_INTERVAL",
"disallowUsernameSubstring": "DISALLOW_USERNAME_SUBSTRING",
"passwordChangeInterval": "PASSWORD_CHANGE_INTERVAL"
}
"ipConfiguration": {
"privateNetwork": "PRIVATE_NETWORK",
"authorizedNetworks": [AUTHORIZED_NETWORKS],
"ipv4Enabled": false,
"enablePrivatePathForGoogleCloudServices": true,
"serverCaMode": "CA_MODE",
"customSubjectAlternativeNames": "DNS_NAMES"
}
},
"sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
}
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2019-09-25T22:19:33.735Z",
"operationType": "CREATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
レスポンスは長時間実行オペレーションのため、完了まで数分かかる場合があります。
IPv4 アドレスを取得する
新しいインスタンスに自動的に割り当てられる IPv4 アドレスを取得します。
リクエストのデータを使用する前に、次のように置き換えます。
HTTP メソッドと URL:
GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{
"kind": "sql#instance",
"state": "RUNNABLE",
"databaseVersion": "MYSQL_8_0_18",
"settings": {
"authorizedGaeApplications": [],
"tier": "db-f1-micro",
"kind": "sql#settings",
"pricingPlan": "PER_USE",
"replicationType": "SYNCHRONOUS",
"activationPolicy": "ALWAYS",
"ipConfiguration": {
"authorizedNetworks": [],
"ipv4Enabled": true
},
"locationPreference": {
"zone": "us-west1-a",
"kind": "sql#locationPreference"
},
"dataDiskType": "PD_SSD",
"backupConfiguration": {
"startTime": "18:00",
"kind": "sql#backupConfiguration",
"enabled": true,
"binaryLogEnabled": true
},
"settingsVersion": "1",
"storageAutoResizeLimit": "0",
"storageAutoResize": true,
"dataDiskSizeGb": "10"
},
"etag": "--redacted--",
"ipAddresses": [
{
"type": "PRIMARY",
"ipAddress": "10.0.0.1"
}
],
"serverCaCert": {
...
},
"instanceType": "CLOUD_SQL_INSTANCE",
"project": "project-id",
"serviceAccountEmailAddress": "redacted@gcp-sa-cloud-sql.iam.gserviceaccount.com",
"backendType": "SECOND_GEN",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
"connectionName": "project-id:region:instance-id",
"name": "instance-id",
"region": "us-west1",
"gceZone": "us-west1-a"
}
レスポンスで ipAddress フィールドを探します。
REST v1beta4
インスタンスを作成する
この例では、インスタンスを作成します。バックアップ、バイナリ ロギングなどのオプション パラメータも含まれています。この呼び出しのパラメータの完全なリストについては、Instances:insert ページをご覧ください。リージョンの有効な値など、インスタンスの設定の詳細については、インスタンスの設定をご覧ください。
インスタンス ID には機密情報や個人を特定できる情報を含めないでください。インスタンス ID は外部から閲覧可能です。
インスタンス名にプロジェクト ID を含める必要はありません。この処理は必要に応じて自動的に行われます(ログファイルの場合など)。
リクエストのデータを使用する前に、次のように置き換えます。
インスタンスの作成時にパスワード ポリシーを設定するには、リクエストに passwordValidationPolicy オブジェクトを含めます。必要に応じて、次のパラメータを設定します。
Vertex AI と統合できるようにインスタンスを作成するには、enableGoogleMlIntegration オブジェクトをリクエストの中に入れます。このようにして統合すると、Vertex AI でホストされている大規模言語モデル(LLM)を Cloud SQL for PostgreSQL データベースに適用できるようになります。
必要に応じて、次のパラメータを設定します。
sqlNetworkArchitecture フィールドを使用すると、プロジェクトが完全にアップグレードされていない場合でも、インスタンスの作成時に新しいネットワーク アーキテクチャの使用を強制できます。新しいネットワーク アーキテクチャとその影響の詳細については、
インスタンスを新しいネットワーク アーキテクチャにアップグレードすると IP アドレス範囲を割り振るをご覧ください。
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances
リクエストの本文(JSON):
{
"name": "INSTANCE_ID",
"region": "REGION",
"databaseVersion": "DATABASE_VERSION",
"rootPassword": "PASSWORD",
"settings": {
"tier": "MACHINE_TYPE",
"edition": "EDITION_TYPE",
"enableGoogleMlIntegration": "true" | "false"
"databaseFlags":
[
{
"name": "cloudsql.enable_google_ml_integration",
"value": "on" | "off"
}
]
"dataCacheConfig": {
"dataCacheEnabled": DATA_CACHE_ENABLED
},
"backupConfiguration": {
"enabled": true
},
"passwordValidationPolicy": {
"enablePasswordPolicy": true
"minLength": "MIN_LENGTH",
"complexity": COMPLEXITY_DEFAULT,
"reuseInterval": "REUSE_INTERVAL",
"disallowUsernameSubstring": "DISALLOW_USERNAME_SUBSTRING",
"passwordChangeInterval": "PASSWORD_CHANGE_INTERVAL"
}
"ipConfiguration": {
"privateNetwork": "PRIVATE_NETWORK",
"authorizedNetworks": [AUTHORIZED_NETWORKS],
"ipv4Enabled": false,
"enablePrivatePathForGoogleCloudServices": true,
"serverCaMode": "CA_MODE",
"customSubjectAlternativeNames": "DNS_NAMES"
}
},
"sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
}
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-01T19:13:21.834Z",
"operationType": "CREATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
レスポンスは長時間実行オペレーションのため、完了まで数分かかる場合があります。
IPv4 アドレスを取得する
新しいインスタンスに自動的に割り当てられる IPv4 アドレスを取得します。
リクエストのデータを使用する前に、次のように置き換えます。
HTTP メソッドと URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{
"kind": "sql#instance",
"state": "RUNNABLE",
"databaseVersion": "MYSQL_8_0_18",
"settings": {
"authorizedGaeApplications": [],
"tier": "db-f1-micro",
"kind": "sql#settings",
"pricingPlan": "PER_USE",
"replicationType": "SYNCHRONOUS",
"activationPolicy": "ALWAYS",
"ipConfiguration": {
"authorizedNetworks": [],
"ipv4Enabled": true
},
"locationPreference": {
"zone": "us-west1-a",
"kind": "sql#locationPreference"
},
"dataDiskType": "PD_SSD",
"backupConfiguration": {
"startTime": "18:00",
"kind": "sql#backupConfiguration",
"enabled": true,
"binaryLogEnabled": true
},
"settingsVersion": "1",
"storageAutoResizeLimit": "0",
"storageAutoResize": true,
"dataDiskSizeGb": "10"
},
"etag": "--redacted--",
"ipAddresses": [
{
"type": "PRIMARY",
"ipAddress": "10.0.0.1"
}
],
"serverCaCert": {
...
},
"instanceType": "CLOUD_SQL_INSTANCE",
"project": "project-id",
"serviceAccountEmailAddress": "redacted@gcp-sa-cloud-sql.iam.gserviceaccount.com",
"backendType": "SECOND_GEN",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
"connectionName": "project-id:region:instance-id",
"name": "instance-id",
"region": "us-west1",
"gceZone": "us-west1-a"
}
レスポンスで ipAddress フィールドを探します。
書き込みエンドポイントを生成する
書き込みエンドポイントは、現在のプライマリ インスタンスの IP アドレスに自動的に解決されるグローバル ドメイン名サービス(DNS)名です。このエンドポイントは、レプリカのフェイルオーバーまたはスイッチオーバー オペレーションが発生した場合に、受信接続を新しいプライマリ インスタンスに自動的にリダイレクトします。IP アドレスの代わりに、SQL 接続文字列で書き込みエンドポイントを使用できます。書き込みエンドポイントを使用すると、リージョンが停止した場合にアプリケーション接続を変更する必要がなくなります。
書き込みエンドポイントを使用してインスタンスに接続する方法の詳細については、書き込みエンドポイントを使用してインスタンスに接続するをご覧ください。
カスタム インスタンス構成
Cloud SQL インスタンスで利用可能なメモリと仮想コアを決定します。マシンタイプはマシンシリーズの一部であり、マシンシリーズの可用性は Cloud SQL のエディションによって異なります。
Cloud SQL Enterprise Plus エディション インスタンスの場合、Cloud SQL には、N2 マシンシリーズと C4A マシンシリーズのインスタンス用に事前定義されたマシンタイプが用意されています。
Cloud SQL Enterprise エディションのインスタンスの場合、Cloud SQL は general purpose shared core、general purpose dedicated core、N4 のマシンシリーズを提供します。
オンライン トラ���ザクション処理(OLTP)などのリアルタイム処理が必要な場合は、インスタンスに作業セット全体を保存するための十分なメモリを確保してください。ただし、メモリ要件に影響を与える可能性がある要素はほかにもあります(アクティブな接続の数や内部オーバーヘッド プロセスなど)。本番環境でパフォーマンスの問題が発生しないように、負荷テストを実施します。
インスタンスを構成する際に、ニーズを処理するのに十分なメモリと vCPU を選択し、要件の増加に応じてインスタンスをスケールアップします。vCPU が不十分なマシン構成では、SLA の範囲外になる可能性があります。詳細については、オペレーション ガイドラインをご覧ください。
Cloud SQL インスタンスで使用可能なマシンタイプとマシンシリーズの詳細については、マシンシリーズの概要をご覧ください。
トラブルシューティング
| 問題 | トラブルシューティング |
|---|---|
エラー メッセージ: Failed to create subnetwork. Couldn't
find free blocks in allocated IP ranges. Please allocate new ranges for
this service provider |
割り振り済みの IP 範囲にこれ以上使用可能なアドレスがありません。いくつかのシナリオがあります。
この問題を解決するには、既存の割り振られた IP 範囲を拡張するか、プライベート サービス接続に追加の IP 範囲を割り振ります。詳細については、IP アドレス範囲を割り振るをご覧ください。 Cloud SQL インスタンスの作成時に 新しい範囲を割り当てる場合は、割り当てが既存の割り当てと重複しないように注意してください。 新しい IP 範囲を作成した後、次のコマンドを使用して VPC ピアリングを更新します。 gcloud services vpc-peerings update \ --service=servicenetworking.googleapis.com \ --ranges=OLD_RESERVED_RANGE_NAME,NEW_RESERVED_RANGE_NAME \ --network=VPC_NETWORK \ --project=PROJECT_ID \ --force 既存の割り振りを拡張する場合は、割り振り範囲を増やすのみとし、減らさないように注意してください。たとえば、元の割り振りが 10.0.10.0/24 だった場合、新しい割り振りを少なくとも 10.0.10.0/23 に設定します。 一般的に、/24 の割り振りから開始する場合は、各条件(追加のインスタンス タイプのグループ、追加のリージョン)で /mask を 1 つずつ減らすのが基本的なルールです。たとえば、同じ割り振りで両方のインスタンス タイプのグループを作成しようとしている場合も、/24 から /23 にするだけで十分です。 既存の IP 範囲を拡張した後、次のコマンドを使用して vpc ピアリングを更新します。 gcloud services vpc-peerings update \ --service=servicenetworking.googleapis.com \ --ranges=RESERVED_RANGE_NAME \ --network=VPC_NETWORK \ --project=PROJECT_ID |
エラー メッセージ: Failed to create subnetwork. Router status is
temporarily unavailable. Please try again later. Help Token:
[token-ID] |
Cloud SQL インスタンスをもう一度作成してみてください。 |
エラー メッセージ: HTTPError 400: Invalid request: Incorrect Service Networking config for instance: PROJECT_ID:INSTANCE_NAME:SERVICE_NETWORKING_NOT_ENABLED. |
次のコマンドを使用して Service Networking API を有効にし、Cloud SQL インスタンスをもう一度作成してみてください。 gcloud services enable servicenetworking.googleapis.com \ --project=PROJECT_ID |
エラー メッセージ: Failed to create subnetwork. Required
'compute.projects.get' permission for PROJECT_ID |
プライベート IP アドレスを使用してインスタンスを作成すると、Service Networking API を使用してサービス アカウントがジャスト イン タイムで作成されます。Service Networking API を最近有効にしたばかりの場合は、サービス アカウントが作成されず、インスタンスの作成が失敗する可能性があります。この場合は、サービス アカウントがシステム全体に伝播するのを待つか、必要な権限を使用して手動で追加する必要があります。 |
エラー メッセージ: More than 3 subject alternative names are not
allowed. |
カスタム SAN を使用して、4 つ以上の DNS 名を Cloud SQL インスタンスのサーバー証明書に追加しようとしてい���す。インスタンスに追加できる DNS 名は 3 つまでです。 |
エラー メッセージ: Subject alternative names %s is too long. The
maximum length is 253 characters. |
Cloud SQL インスタンスのサーバー証明書に追加する DNS 名が 253 文字を超えないようにします。 |
エラー メッセージ: Subject alternative name %s is invalid. |
Cloud SQL インスタンスのサーバー証明書に追加する DNS 名が次の条件を満たしていることを確認します。 |