ALTER POSTGRES INSTANCE

Modifie les propriétés d’une instance Snowflake Postgres existante.

Voir aussi :

CREATE POSTGRES INSTANCE , DESCRIBE POSTGRES INSTANCE, DROP POSTGRES INSTANCE , SHOW POSTGRES INSTANCES

Syntaxe

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

Paramètres

name

Indique l’identificateur de l’instance Postgres à modifier.

Si l’identificateur contient des espaces ou des caractères spéciaux, toute la chaîne doit être délimitée par des guillemets doubles. Les identificateurs entre guillemets doubles sont également sensibles à la casse.

Pour plus d’informations, voir Exigences relatives à l’identificateur.

RENAME TO new_name

Remplace le nom de l’instance Postgres par le nouveau nom spécifié. Le nouvel identificateur doit être unique pour le compte.

Pour plus de détails sur les identificateurs, voir Exigences relatives à l’identificateur.

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

Régénère les identifiants de connexion pour le rôle snowflake_admin ou application. Renvoie une seule ligne avec la colonne suivante :

  • password

Pour plus d’informations, voir Rôles Snowflake Postgres.

SET ...

Définit une ou plusieurs propriétés spécifiées pour l’instance Postgres :

NETWORK_POLICY = 'network_policy'

Spécifie la politique réseau à utiliser pour l’instance. Les modifications de la politique peuvent prendre jusqu’à 2 minutes pour prendre effet.

Pour spécifier ce paramètre, vous devez disposer du privilège USAGE sur l’objet de politique réseau.

AUTHENTICATION_AUTHORITY = { POSTGRES | POSTGRES_OR_SNOWFLAKE }

Modifiez la méthode d’authentification pour l’instance. POSTGRES indique que seuls les mots de passe Postgres peuvent être utilisés. POSTGRES_OR_SNOWFLAKE permet également d’utiliser des mots de passe de jetons d’accès à courte durée de vie. Voir Authentification par jeton Snowflake pour Snowflake Postgres pour plus de détails.

COMMENT = 'string_literal'

Ajoute ou écrase un commentaire existant pour l’instance Postgres.

HIGH_AVAILABILITY = { TRUE | FALSE }

Active ou désactive la haute disponibilité pour l’instance. S’exécute comme une opération asynchrone. Exécutez la commande DESCRIBE POSTGRES INSTANCE et surveillez le champ operations pour suivre la progression.

Un changement de haute disponibilité peut uniquement être initié si l’instance se trouve en état READY et qu’aucune autre opération n’est en cours.

Note

Les tailles des instances Burstable (BURST_XS, BURST_S, BURST_M) ne prennent pas en charge la haute disponibilité. Pour activer HA, vous devez d’abord passer à une famille de calcul STANDARD ou HIGHMEM.

COMPUTE_FAMILY = 'compute_family'

Spécifie la nouvelle taille de l’instance pour l’instance Postgres.

STORAGE_SIZE_GB = storage_gb

Spécifie la nouvelle taille de stockage en GB. Les augmentations et les diminutions sont prises en charge.

Note

Lorsque vous diminuez la taille de stockage, vous ne pouvez pas réduire la quantité trop près de la quantité de données sur l’instance. La nouvelle taille doit correspondre au moins à 1,4x la quantité d’utilisation du disque que l’instance utilise actuellement. De cette façon, il est encore possible d’ajouter des données supplémentaires sans déclencher une augmentation automatique du stockage.

STORAGE_INTEGRATION = 'storage_integration_name'

Attache une intégration de stockage de type POSTGRES_EXTERNAL_STORAGE à l’instance Postgres, permettant à l’extension pg_lake d’accéder aux données d’un stockage externe d’objets. Pour la procédure de configuration complète, consultez Configuration du stockage S3 pour pg_lake.

POSTGRES_VERSION = { 16 | 17 | 18 }

Spécifie la version principale de Postgres vers laquelle mettre à niveau. Vous pouvez uniquement effectuer une mise à niveau vers une version plus récente. La rétrogradation n’est pas prise en charge.

MAINTENANCE_WINDOW_START = hour_of_day

Indique l’heure de la journée (0-23, UTC) à laquelle une fenêtre de maintenance peut débuter. Les fenêtres de maintenance durent trois heures et commencent à l’heure indiquée.

POSTGRES_SETTINGS = 'json_string'

Spécifie les modifications apportées aux paramètres du serveur Postgres pour l’instance au format JSON :

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

Certains paramètres nécessitent un redémarrage de l’instance pour prendre effet. Ces modifications ne seront pas appliquées sauf si vous spécifiez APPLY IMMEDIATELY.

APPLY IMMEDIATELY

Remplace toute fenêtre de maintenance définie et applique les opérations spécifiées dès qu’elles sont prêtes. S’applique à COMPUTE_FAMILY, STORAGE_SIZE_GB, POSTGRES_VERSION et POSTGRES_SETTINGS.

APPLY ON 'timestamp'

Remplace toute fenêtre de maintenance définie et applique les opérations spécifiées à l’horodatage donné. L’horodatage ne peut pas se situer plus de 72 heures dans le futur.

Formats d’horodatage pris en charge :

  • yyyy-MM-dd

  • yyyy-MM-dd HH:mm

  • yyyy-MM-dd HH:mm:ss

  • yyyy-MM-dd HH:mm zzz

UNSET ...

Annule la définition d’une ou plusieurs propriétés spécifiées pour l’instance Postgres, les réinitialisant à leurs valeurs par défaut :

  • COMMENT

  • POSTGRES_SETTINGS

  • NETWORK_POLICY

  • MAINTENANCE_WINDOW_START - La désactivation entraîne l’application immédiate de toutes les opérations en cours dès qu’elles sont terminées.

  • STORAGE_INTEGRATION - Supprime l’intégration de stockage de l’instance, désactivant l’accès de pg_lake au stockage externe.

Pour désactiver plusieurs propriétés ou paramètres via une seule instruction ALTER, séparez chaque propriété ou paramètre par une virgule.

Lorsque vous désactivez une propriété ou un paramètre, spécifiez uniquement le nom de propriété ou de paramètre (sauf si la syntaxe ci-dessus indique que vous devez spécifier la valeur). La spécification de la valeur renvoie une erreur.

SUSPEND

Suspend l’instance Postgres. La machine virtuelle est désactivée, mais l’image disque reste stockée. La facturation normale est suspendue, mais les coûts de stockage continuent de s’accumuler. Les sauvegardes existantes sont conservées.

RESUME

Reprend une instance de Postgres suspendue. S’il y avait des opérations en attente de redémarrage, elles sont appliquées lors de la reprise de l’instance.

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

Spécifie le nom de la balise et la valeur de la chaîne de la balise.

La valeur de la balise est toujours une chaîne de caractères et le nombre maximum de caractères pour la valeur de la balise est 256.

Pour plus d’informations sur la spécification des balises dans une instruction, voir Quotas de balises.

Exigences en matière de contrôle d’accès

Un rôle utilisé pour exécuter cette opération doit au minimum disposer des privilèges suivants :

Privilège

Objet

Remarques

OWNERSHIP ou OPERATE

Instance Postgres

Nécessaire pour modifier les propriétés de l’instance.

USAGE

Politique réseau

Requis uniquement si vous spécifiez une NETWORK_POLICY.

USAGE

Intégration de stockage

Requis uniquement si vous spécifiez une STORAGE_INTEGRATION.

Pour obtenir des instructions sur la création d’un rôle personnalisé avec un ensemble spécifique de privilèges, voir Création de rôles personnalisés.

Pour des informations générales sur les rôles et les privilèges accordés pour effectuer des actions SQL sur des objets sécurisables, voir Aperçu du contrôle d’accès.

Notes sur l’utilisation

  • Les modifications apportées à COMPUTE_FAMILY, STORAGE_SIZE_GB et POSTGRES_VERSION sont collectivement appelées opérations de « mise à niveau » et peuvent être effectuées ensemble. Exécutez la commande DESCRIBE POSTGRES INSTANCE et surveillez le champ operations pour suivre la progression.

  • Une opération de mise à niveau peut uniquement être lancée si l’instance se trouve en état READY et qu’aucune autre opération n’est en cours.

  • Si une instance dispose d’une fenêtre de maintenance définie, les modifications ne prendront pas effet avant le début de la période de maintenance, à moins que APPLY IMMEDIATELY soit spécifié. Les fenêtres de maintenance déterminent à quel moment les modifications sont appliquées, et non si l’instance est en cours d’exécution. Pour plus de détails sur les opérations de maintenance, voir Gestion des instances Snowflake Postgres.

  • Une brève interruption de service est nécessaire pour effectuer des opérations de gestion des instances. Assurez-vous que vos applications sont en mesure de se reconnecter automatiquement à la base de données.

  • SUSPEND et RESUME sont des opérations immédiates pour arrêter et démarrer la facturation des instances. Elles se distinguent des fenêtres de maintenance, qui déterminent le moment où les modifications de configuration (telles que les mises à niveau ou l’activation HA) prennent effet.

  • La chaîne de connexion d’une instance reste la même à travers les opérations de gestion de l’instance, sauf si vous régénérez explicitement les identifiants de connexion.

  • Concernant les métadonnées :

    Attention

    Les clients doivent s’assurer qu’aucune donnée personnelle (autre que pour un objet utilisateur), donnée sensible, donnée à exportation contrôlée ou autre donnée réglementée n’est saisie comme métadonnée lors de l’utilisation du service Snowflake. Pour plus d’informations, voir Champs de métadonnées dans Snowflake.

Exemples

Modifier la famille de calcul et la taille de stockage d’une instance Postgres :

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

Surveiller la progression de l’opération à l’aide de 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

Activer la haute disponibilité pour une instance :

-- 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

Mettre à niveau vers 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

Appliquer les modifications immédiatement, en remplaçant la fenêtre de maintenance :

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

Suspendre une instance 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

Reprendre une instance suspendue :

ALTER POSTGRES INSTANCE my_postgres RESUME;
Copy

Renommer une instance Postgres :

ALTER POSTGRES INSTANCE my_postgres
  RENAME TO prod_postgres;
Copy

Note

Le renommage d’une instance modifie son identificateur dans Snowflake, mais ne modifie pas le nom d’hôte de la connexion. Le nom d’hôte reste le même, de sorte que les connexions et les applications existantes continuent de fonctionner sans modification.