インスタンスの作成

このページでは、Cloud SQL for PostgreSQL インスタンスを作成する方法について説明します。

すべてのインスタンスの設定について詳しくは、インスタンスの設定をご覧ください。

Cloud SQL インスタンスを作成した後、データベースを作成またはインポートして、インスタンスに追加します。

始める前に

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. Cloud Console のプロジェクト セレクタページで、Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタのページに移動

  3. Google Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する

  4. Cloud SDK をインストールして初期化します。
  5. ユーザー アカウントに Cloud SQL 管理者のロールと Compute 閲覧者のロールがあることを確認します。

    IAM ページに移動

    ロールと権限について詳細を確認します

PostgreSQL インスタンスの作成

PostgreSQL インスタンスを作成するには:

Console

  1. Google Cloud Console の Cloud SQL インスタンス ページに移動します。

    [Cloud SQL インスタンス] ページに移動

  2. [インスタンスを作成] をクリックします。
  3. [PostgreSQL] を選択して、[次へ] をクリックします。
  4. 名前を入力します。

    インスタンス名には機密情報や個人を特定できる情報を含めないでください。インスタンス名は外部から閲覧可能です。

    インスタンス名にプロジェクト ID を含める必要はありません。この処理は必要に応じて自動的に行われます(ログファイルの場合など)。

    注: 削除したインスタンスのインスタンス名は、削除してから 1 週間過ぎるまで再利用できません。

  5. postgres ユーザーのパスワードを入力します。
  6. [ロケーション] で、インスタンスのリージョンとゾーンを選択します。

    インスタンスにアクセスするリソースと同じリージョンにインスタンスを配置します。選択したリージョンは後から変更できません。ほとんどの場合、ゾーンを指定する必要はありません。

  7. [構成オプション] で、インスタンスの設定を更新します。
    設定 備考
    データベースのバージョン
    データベースのバージョン PostgreSQL 12(デフォルト)、PostgreSQL 11、PostgreSQL 10、PostgreSQL 9.6
    接続
    プライベート IP インスタンスのプライベート IP アドレスを追加します。インスタンスへの接続を有効にするには、追加の構成が必要です
    パブリック IP インスタンスのパブリック IP アドレスを追加します。インスタンスへの接続を有効にするには、追加の構成が必要です
    マシンタイプとストレージ
    コア数 インスタンスの vCPU の数。詳細
    メモリ インスタンスのメモリ量(GB)。詳細
    ストレージの種類 インスタンスで SSD または HDD のどちらのストレージを使用するかを指定します。 詳しくはこちらをご覧ください。
    ストレージ容量 インスタンスにプロビジョニングされているストレージ容量。 詳細
    ストレージの自動増量 空き領域が少なくなったときに、Cloud SQL が自動的にインスタンス用のストレージを増やすかどうかを指定します。 詳しくはこちらをご覧ください。
    高可用性 高可用性向けにインスタンスを構成する必要がある場合は、[高可用性(リージョン)] チェックボックスをオンにする必要があります。詳しくはこちらをご覧ください。
    自動バックアップ バックアップを開始する時間枠。 詳細
    ポイントインタイム リカバリ ポイントインタイム リカバリとログ先行書き込みを有効にします。詳細
    データベース フラグの追加
    データベース フラグ データベース フラグを使用して、インスタンスの設定とパラメータを制御できます。詳細
    メンテナンス スケジュール
    メンテナンスの時間枠 Cloud SQL がインスタンスに対し、中断メンテナンスを実行できる 1 時間の時間枠を指定します。この時間枠を設定しない場合、任意の時間に中断メンテナンスが行われる可能性があります。詳細
    メンテナンスのタイミング 希望するインスタンス更新のタイミング。同じプロジェクトの他のインスタンスとの相対的なタイミングです。 詳しくはこちらをご覧ください。

    詳しくはインスタンスの設定をご覧ください。

  8. [作成] をクリックします。

gcloud

gcloud コマンドライン ツールのインストール方法と使用方法については、Cloud SDK のインストールをご覧ください。Cloud Shell の起動方法については、Cloud Shell のドキュメントをご覧ください。

  1. インスタンスを作成します。
    gcloud sql instances create [INSTANCE_NAME] --database-version=POSTGRES_12 \
           --cpu=[NUMBER_CPUS] --memory=[MEMORY_SIZE] \
           --region=[REGION] | --gce-zone=[GCE_ZONE] | --zone=[ZONE]
    
    or, alternatively:
    
    gcloud sql instances create instance --tier=[API_TIER_STRING] --region=[REGION]
    

    [API_TIER_STRING] の値はカスタム マシンタイプで、こちらで定義されています。この名前には、vCPU の値とメモリの値が含まれます。たとえば、db-custom-2-7680 マシンタイプには 2 つの vCPU と 7,680 MB のメモリが含まれています。

    vCPU とメモリサイズの値には制限があります。

    • vCPU は 1 または 2~96 の間の偶数にする必要があります。
    • メモリは次の条件を満たす必要があります。
      • vCPU あたり 0.9~6.5 GB
      • 256 MB の倍数
      • 3.75 GB(3,840 MB)以上

    たとえば、次の文字列を使用すると、インスタンスに 2 つの vCPU と 7,680 MB のメモリが割り当てられます。

     gcloud sql instances create myinstance --database-version=POSTGRES_12 --cpu=2 \
            --memory=7680MB --region="us-central"
    

    値の例については、マシンタイプの例をご覧ください。

    --tier db-f1-micro または --tier db-g1-small を使用し、--cpu パラメータと --memory パラメータを削除して、共有コア インスタンスを作成することもできます。

    [REGION] のデフォルト値は us-central です。

    インスタンス名には機密情報や個人を特定できる情報を含めないでください。インスタンス名は外部から閲覧可能です。
    インスタンス名にプロジェクト ID を含める必要はありません。この処理は必要に応じて自動的に行われます(ログファイルの場合など)。

    パラメータを追加して、他のインスタンス設定を指定できます。

    設定 パラメータ 備考
    必須パラメータ
    データベースのバージョン --database-version POSTGRES_12(デフォルト)、POSTGRES_11POSTGRES_10POSTGRES_9_6
    リージョン --region 有効な値を参照してください
    接続
    プライベート IP --network このインスタンスに使用する VPC ネットワーク名を指定します。このネットワークに対して、プライベート サービス アクセスがすでに構成されている必要があります。ベータ版のコマンド(gcloud beta sql instances create)でのみ使用できます。詳細
    パブリック IP --authorized-networks パブリック 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)でのみ使用できます。詳細
    自動バックアップと高可用性
    高可用性 --availability-type 高可用性インスタンスの場合は、REGIONAL に設定します。詳しくはこちらをご覧ください。
    自動バックアップ --backup-start-time バックアップを開始する時間枠。 詳細
    ポイントインタイム リカバリ --enable-point-in-time recovery ポイントインタイム リカバリとログ先行書き込みを有効にします。詳細
    データベース フラグの追加
    データベース フラグ --database-flags データベース フラグを使用して、インスタンスの設定とパラメータを制御できます。データベース フラグの詳細をご確認ください。
    メンテナンス スケジュール
    メンテナンスの時間枠 --maintenance-window-day
    --maintenance-window-hour
    Cloud SQL がインスタンスに対し、中断メンテナンスを実行できる 1 時間の時間枠を指定します。この時間枠を設定しない場合、任意の時間に中断メンテナンスが行われる可能性があります。詳しくはこちらをご覧ください。
    メンテナンスのタイミング --maintenance-release-channel 希望するインスタンス更新のタイミング。同じプロジェクトの他のインスタンスとの相対的なタイミングです。他のインスタンスより前に更新する場合は preview を使用し、後に更新する場合は production を使用します。詳しくはこちらをご覧ください。

  2. 自動的に割り当てられた IP アドレスをメモします。

    Cloud SQL Proxy を使用していない場合、アプリケーションまたはツールがインスタンスに接続するためのホストアドレスとしてこのアドレスが使用されます。

  3. postgres ユーザーのパスワードを設定します。
    gcloud sql users set-password postgres --instance=[INSTANCE_NAME] \
           --password=[PASSWORD]
    

REST

インスタンスを作成する

この例では、バックアップおよびバイナリログを有効にしたインスタンスを作成します。これらの設定は任意です。この呼び出しのパラメータの一覧については、Instances:insert ページをご覧ください。リージョンやマシンタイプの有効な値など、インスタンスの設定の詳細については、インスタンスの設定をご覧ください。

インスタンス ID には機密情報や個人を特定できる情報を含めないでください。インスタンス ID は外部から閲覧可能です。
インスタンス名にプロジェクト ID を含める必要はありません。この処理は必要に応じて自動的に行われます(ログファイルの場合など)。

後述のリクエスト データは、次のように置き換えてから使用します。

  • project-id: プロジェクト ID
  • instance-id: 目的のインスタンス ID
  • region: 目的のリージョン
  • machine-type: 目的のマシンタイプ

HTTP メソッドと URL:

POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances

JSON 本文のリクエスト:

{
  "name": "instance-id",
  "region": "region",
  "settings": {
    "tier": "machine-type",
    "backupConfiguration": {
      "binaryLogEnabled": true,
      "enabled": true
    }
  }
}

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "kind": "sql#operation",
  "targetLink": "https://www.googleapis.com/sql/v1beta4/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://www.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

レスポンスは長時間実行オペレーションのため、完了まで数分かかる場合があります。

IPv4 アドレスを取得する

新しいインスタンスに自動的に割り当てられる IPv4 アドレスを取得します。

後述のリクエスト データは、次のように置き換えてから使用します。

  • project-id: プロジェクト ID
  • instance-id: 前のステップで作成したインスタンス ID

HTTP メソッドと URL:

GET https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "MYSQL_5_7",
  "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://www.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 フィールドを探します。

基盤となる REST API リクエストがこのタスクでどのように作成されるかについては、instances:insert ページの API Explorer をご覧ください。

マシンタイプの例

カスタム マシンタイプを使用することにより、メモリと CPU を必要なだけ搭載したインスタンスを構成できます。ただし、メモリと CPU の値にはいくつかの制限があります。

  • vCPU は 1 または 2~96 の間の偶数にする必要があります。
  • メモリは次の条件を満たす必要があります。
    • vCPU あたり 0.9~6.5 GB
    • 256 MB の倍数
    • 3.75 GB(3,840 MB)以上

PostgreSQL インスタンスに使用できる事前定義されたマシンタイプに基づいた、マシンタイプ値の例を次に示します。

事前定義されたマシンタイプ vCPU メモリ(MB) API 層文字列
db-n1-standard-1 1 3840 db-custom-1-3840
db-n1-standard-2 2 7680 db-custom-2-7680
db-n1-standard-4 4 15360 db-custom-4-15360
db-n1-standard-8 8 30720 db-custom-8-30720
db-n1-standard-16 16 61440 db-custom-16-61440
db-n1-standard-32 32 122880 db-custom-32-122880
db-n1-standard-64 64 245760 db-custom-64-245760
db-n1-standard-96 96 368640 db-custom-96-368640
db-n1-highmem-2 2 13312 db-custom-2-13312
db-n1-highmem-4 4 26624 db-custom-4-26624
db-n1-highmem-8 8 53248 db-custom-8-53248
db-n1-highmem-16 16 106496 db-custom-16-106496
db-n1-highmem-32 32 212992 db-custom-32-212992
db-n1-highmem-64 64 425984 db-custom-64-425984
db-n1-highmem-96 96 638976 db-custom-96-638976

トラブルシューティング

表内のリンクをクリックすると、詳細が表示されます。

この問題については... 次のような問題が考えられます... 次のことを試します...
Internal error サービス ネットワーキングのサービス アカウントがありません。 Service Networking API を無効にしてから再度有効にします
Terraform インスタンスの作成に失敗した。 Terraform 構成エラー。 Terraform 構成ファイルを調べて修復します。
Terraform スクリプトの HTTP Error 409 別のオペレーションがすでに進行中です。 各オペレーションが完了するまで待機するように Terraform スクリプトを修正します。
Unknown error 最近削除したインスタンスと同じ名前のインスタンスを作成しようとしています。または、使用されている新しいプライベート IP 範囲で同時に複数のインスタンスを作成しようとしています。 インスタンスに別の名前を使用するか、インスタンスが削除されてから 1 週間経過するまで待ちます。異なる名前を使用して、連続的に失敗したインスタンスを再作成します

内部エラー

エラー メッセージ {"ResourceType":"sqladmin.v1beta4.instance", "ResourceErrorCode":"INTERNAL_ERROR","ResourceErrorMessage":null} が表示されます。

次のような問題が考えられます

サービス プロジェクトに、この機能に必要なサービス ネットワーキング サービス アカウントがない可能性があります。

次の方法をお試しください

サービスの権限を修復するには、Service Networking API を無効にして 5 分待ち、再度有効にします。


Terraform インスタンスの作成に失敗した

Terraform インスタンスの作成に失敗しました。

次のような問題が考えられます

これは通常、Terraform スクリプト自体の問題です。

次の方法をお試しください

Terraform 構成ファイルを調べて修復します。


Terraform スクリプトの 409 エラー

Terraform スクリプトにエラー メッセージ HTTP Error 409 が表示されます。

次のような問題が考えられます

Operation failed because another operation was already in progress

次の方法をお試しください

スクリプトを修正して、各インスタンスのオペレーションが完了するまで実行を停止します。スクリプトをポーリングして、前のオペレーション ID の 200 が返されるまで待ってから、次のステップに進みます。


不明なエラー

インスタンスを作成しようとすると、Cloud SQL creation failed, error UNKNOWN のようなエラー メッセージが表示されます。

次のような問題が考えられます

最近削除したインスタンスの名前を再利用しようとしている可能性があります。インスタンス名を削除した後、1 週間は再利用できません。または、最初のインスタンスのみが作成され、他のインスタンスが Unknown error で失敗したときに、新しいプライベート IP 範囲を使用して複数のインスタンスを同時に作成しようとしています。

次の方法をお試しください

インスタンスに別の名前を使用するか、その名前を使用して新しいインスタンスを作成します。複数のインスタンスを同時に作成するのではなく、連続して作成します。

次のステップ