ALTER POSTGRES INSTANCE

既存の:doc:`Snowflake Postgresインスタンス</user-guide/snowflake-postgres/about>`のプロパティを変更します。

こちらもご参照ください。

CREATE POSTGRES INSTANCEDESCRIBE POSTGRES INSTANCEDROP POSTGRES INSTANCESHOW POSTGRES INSTANCES

構文

ALTER POSTGRES INSTANCE [ IF EXISTS ] <name>
  RENAME TO <new_name>

ALTER POSTGRES INSTANCE [ IF EXISTS ] <name> SET
  [ NETWORK_POLICY = '<network_policy>' ]
  [ AUTHENTICATION_AUTHORITY = { POSTGRES | POSTGRES_OR_SNOWFLAKE } ]
  [ COMMENT = '<string_literal>' ]
  [ HIGH_AVAILABILITY = { TRUE | FALSE } ]
  [ COMPUTE_FAMILY = '<compute_family>' ]
  [ STORAGE_SIZE_GB = <storage_gb> ]
  [ STORAGE_INTEGRATION = '<storage_integration_name>' ]
  [ POSTGRES_VERSION = { 16 | 17 | 18 } ]
  [ MAINTENANCE_WINDOW_START = <hour_of_day> ]
  [ POSTGRES_SETTINGS = '<json_string>' ]
  [ APPLY { IMMEDIATELY | ON '<timestamp>' } ]

ALTER POSTGRES INSTANCE [ IF EXISTS ] <name>
  UNSET { COMMENT | POSTGRES_SETTINGS | NETWORK_POLICY
    | MAINTENANCE_WINDOW_START | STORAGE_INTEGRATION } [ , ... ]

ALTER POSTGRES INSTANCE [ IF EXISTS ] <name> SUSPEND

ALTER POSTGRES INSTANCE [ IF EXISTS ] <name> RESUME

ALTER POSTGRES INSTANCE [IF EXISTS] <name> RESET ACCESS
  FOR { 'snowflake_admin' | 'application' }

ALTER POSTGRES INSTANCE [ IF EXISTS ] <name> SET TAG <tag_name> =
  '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER POSTGRES INSTANCE [ IF EXISTS ] <name> UNSET TAG <tag_name>
  [ , <tag_name> ... ]
Copy

パラメーター

name

変更するPostgresインスタンスの識別子を指定します。

識別子にスペースまたは特殊文字が含まれる場合は、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます。

詳細については、 識別子の要件 をご参照ください。

RENAME TO new_name

Postgresインスタンスの名前を指定された新しい名前に変更します。新しい識別子は、アカウントに対して一意にする必要があります。

識別子の詳細については、 識別子の要件 をご参照ください。

RESET ACCESS FOR { 'snowflake_admin' | 'application' }

``snowflake_admin``または``application``ロールの認証情報を再生成します。そのコマンドは、次の列を含む1行を返します。

  • password

詳細については、 Snowflake Postgresのロール をご参照ください。

SET ...

Postgresインスタンスの1つ以上の指定されたプロパティを設定します。

NETWORK_POLICY = 'network_policy'

インスタンスに使用する ネットワークポリシー を指定します。ポリシーの変更が有効になるまでに最大2分かかる場合があります。

このパラメーターを指定するには、ネットワークポリシーオブジェクトに対するUSAGE権限が付与されている必要があります。

AUTHENTICATION_AUTHORITY = { POSTGRES | POSTGRES_OR_SNOWFLAKE }

インスタンスの認証方法を変更します。POSTGRESはPostgres使用パスワードのみが使用できることを示します。POSTGRES_OR_SNOWFLAKEは短期間有効なアクセストークンパスワードの使用も許可します。詳細については、 Snowflake Postgres向けのSnowflakeトークン認証 をご参照ください。

COMMENT = 'string_literal'

Postgresインスタンスの既存のコメントを追加または上書きします。

HIGH_AVAILABILITY = { TRUE | FALSE }

インスタンスの:doc:`高可用性</user-guide/snowflake-postgres/high-availability>`を有効または無効にします。非同期操作として実行します。DESCRIBEPOSTGRESINSTANCEコマンドを実行し、``operations``フィールドを監視して進捗を追跡します。

高可用性の変更を開始できるのは、インスタンスがREADY状態で、かつ他の操作が実行されていない場合に限られます。

注釈

バースト可能なインスタンスサイズ(BURST_XS、BURST_S、BURST_M)は高可用性をサポートしていません。HAを有効にするには、まずSTANDARDまたはHIGHMEMコンピューティングファミリーに変更する必要があります。

COMPUTE_FAMILY = 'compute_family'

Postgresインスタンスの新しい:doc:`インスタンスサイズ</user-guide/snowflake-postgres/postgres-instance-sizes>`を指定します。

STORAGE_SIZE_GB = storage_gb

新しいストレージサイズをGB単位で指定します。拡張と縮小の両方がサポートされています。

注釈

ストレージサイズを縮小する際、インスタンスのデータ量に近すぎる値まで小さくすることはできません。新しいサイズは、インスタンスが現在使用しているディスク使用量の少なくとも1.4倍である必要があります。これにより、ストレージの自動拡張をトリガーせずにデータを追加する余地が確保されます。

STORAGE_INTEGRATION = 'storage_integration_name'

``POSTGRES_EXTERNAL_STORAGE``タイプのストレージ統合をPostgresインスタンスにアタッチし、pg_lake拡張機能が外部オブジェクトストレージのデータにアクセスできるようにします。完全なセットアップ手順については、:doc:`/user-guide/snowflake-postgres/postgres-pg_lake`をご参照ください。

POSTGRES_VERSION = { 16 | 17 | 18 }

アップグレード先となるPostgresメジャーバージョンを指定します。新しいバージョンにのみアップグレードできます。ダウングレードはサポートされていません。

MAINTENANCE_WINDOW_START = hour_of_day

メンテナンスウィンドウを開始できる時間帯(0-23、UTC)を指定します。メンテナンスウィンドウは指定された時間から3時間継続します。

POSTGRES_SETTINGS = 'json_string'

JSON形式で、インスタンスの:doc:`Postgresサーバー設定</user-guide/snowflake-postgres/postgres-server-settings>`への変更を指定します。

'{"component:name" = "value", ...}'
Copy

一部の設定を反映させるには、インスタンスの再起動が必要になります。``APPLY IMMEDIATELY``を指定しない限り、これらの変更は適用されません。

APPLY IMMEDIATELY

定義されたメンテナンスウィンドウを上書きし、準備ができたらすぐに指定された操作を適用します。COMPUTE_FAMILYSTORAGE_SIZE_GB``POSTGRES_VERSION``および``POSTGRES_SETTINGS``に適用されます。

APPLY ON 'timestamp'

定義されたメンテナンスウィンドウを上書きし、指定された日時に指定された操作を適用します。72時間以上先の日時は指定できません。

サポートされているタイムスタンプ形式:

  • yyyy-MM-dd

  • yyyy-MM-dd HH:mm

  • yyyy-MM-dd HH:mm:ss

  • yyyy-MM-dd HH:mm zzz

UNSET ...

Postgresインスタンスの1つ以上の指定されたプロパティの設定を解除し、デフォルト値にリセットします。

  • COMMENT

  • POSTGRES_SETTINGS

  • NETWORK_POLICY

  • MAINTENANCE_WINDOW_START - 設定を解除すると、進行中のすべての操作が完了次第すぐに適用されます。

  • STORAGE_INTEGRATION - インスタンスからストレージ統合を削除し、外部ストレージへのpg_lakeアクセスを無効にします。

1つの ALTER ステートメントで複数のプロパティまたはパラメーターの設定を解除するには、各プロパティまたはパラメーターをコンマで区切ります。

プロパティまたはパラメーターの設定を解除する場合は、プロパティ名またはパラメーター名のみを指定します(上記の構文で値を指定するように指示されている場合を除く)。値を指定するとエラーが返されます。

SUSPEND

Postgresインスタンスを一時停止します。ディスクイメージはストレージに保持されますが、仮想マシンは非アクティブ化されます。通常の請求は一時停止されますが、ストレージコストは引き続き発生します。既存のバックアップは保持されます。

RESUME

一時停止したPostgresインスタンスを再開します。再起動が保留中の操作があった場合、それらはインスタンスの再開時に適用されます。

TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]

タグ の名前とタグ文字列の値を指定します。

タグ値は常に文字列であり、タグ値の最大文字数は256です。

ステートメントでのタグの指定に関する情報については、 タグの割り当て をご参照ください。

アクセス制御の要件

この操作の実行に使用される ロール には、少なくとも次の 権限 が必要です。

権限

オブジェクト

メモ

OWNERSHIP または OPERATE

Postgresインスタンス

インスタンスプロパティの変更に必要です。

USAGE

ネットワークポリシー

NETWORK_POLICYを指定する場合にのみ必要です。

USAGE

ストレージ統合

STORAGE_INTEGRATIONを指定する場合にのみ必要です。

指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。

セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。

使用上の注意

  • COMPUTE_FAMILY``STORAGE_SIZE_GB``および``POSTGRES_VERSION``への変更は、「アップグレード」操作と総称され、一括で実行できます。DESCRIBEPOSTGRESINSTANCEコマンドを実行し、``operations``フィールドを監視して進捗を追跡します。

  • アップグレード操作を開始できるのは、インスタンスがREADY状態で、かつ他の操作が実行されていない場合に限られます。

  • インスタンスにメンテナンスウィンドウが定義されている場合、``APPLY IMMEDIATELY``が指定されていない限り、メンテナンスウィンドウ期間が始まるまで変更は有効になりません。メンテナンスウィンドウは、インスタンスが実行中かどうかではなく、変更が適用される*時期*を制御します。メンテナンス操作の詳細については、:doc:`/user-guide/snowflake-postgres/managing-instances`をご参照ください。

  • **インスタンス管理操作を実行するには、短いサービスの中断が必要です。**アプリケーションがデータベースに自動的に再接続できることを確認してください。

  • SUSPENDおよびRESUMEは、インスタンスへの請求を停止および開始するための即時操作です。これらはメンテナンスウィンドウとは異なります。メンテナンスウィンドウは構成の変更(アップグレードやHAの有効化など)をいつ適用するかをスケジュールするためのものです。

  • 認証情報を明示的に再生成しない限り、インスタンスの接続文字列はインスタンス管理操作全体で同じままです。

  • メタデータについて:

    注意

    Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。

Postgresインスタンスのコンピューティングファミリーとストレージサイズを変更します。

ALTER POSTGRES INSTANCE my_postgres
  SET COMPUTE_FAMILY = 'STANDARD_M'
      STORAGE_SIZE_GB = 100;
Copy

DESCRIBEを使用した操作の進行状況を監視します。

DESCRIBE POSTGRES INSTANCE my_postgres
  ->> SELECT "property", "value"
      FROM $1
      WHERE "property" IN
        ('name', 'state', 'operations', 'compute_family',
          'storage_size_gb');

-- Repeat until state shows 'READY'
Copy

インスタンスの高可用性を有効にします。

-- Check current HA status
DESCRIBE POSTGRES INSTANCE my_postgres
  ->> SELECT "property", "value"
      FROM $1
      WHERE "property" IN ('name', 'high_availability',
        'state');

-- Enable HA (asynchronous operation)
ALTER POSTGRES INSTANCE my_postgres
  SET HIGH_AVAILABILITY = TRUE;

-- Monitor until operation completes
DESCRIBE POSTGRES INSTANCE my_postgres
  ->> SELECT "property", "value"
      FROM $1
      WHERE "property" IN ('name', 'high_availability',
        'state');
Copy

Postgres 18にアップグレードします。

-- Check current Postgres version using flow operator
SHOW POSTGRES INSTANCES
  ->> SELECT "name", "postgres_version", "state"
      FROM $1
      WHERE "name" = 'my_postgres';

-- Upgrade to version 18
ALTER POSTGRES INSTANCE my_postgres
  SET POSTGRES_VERSION = 18;
Copy

すぐに変更を適用し、メンテナンスウィンドウを上書きします。

ALTER POSTGRES INSTANCE my_postgres
  SET COMPUTE_FAMILY = 'STANDARD_L'
  APPLY IMMEDIATELY;
Copy

Postgresインスタンスを一時停止します。

-- Check state before suspending
DESCRIBE POSTGRES INSTANCE my_postgres
  ->> SELECT "property", "value"
      FROM $1
      WHERE "property" IN ('name', 'state');

-- Suspend the instance
ALTER POSTGRES INSTANCE my_postgres SUSPEND;

-- Verify suspended state
DESCRIBE POSTGRES INSTANCE my_postgres
  ->> SELECT "property", "value"
      FROM $1
      WHERE "property" IN ('name', 'state');
Copy

一時停止したインスタンスを再開します。

ALTER POSTGRES INSTANCE my_postgres RESUME;
Copy

Postgresインスタンスの名前を変更します。

ALTER POSTGRES INSTANCE my_postgres
  RENAME TO prod_postgres;
Copy

注釈

インスタンスの名前を変更すると、Snowflakeでの識別子は変更されますが、接続ホスト名は変更*されません*。ホスト名は変わらないため、既存の接続やアプリケーションは変更しなくても引き続き機能します。