ALTER POSTGRES INSTANCE

Modifica as propriedades de uma instância Snowflake Postgres existente.

Consulte também:

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

Sintaxe

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

Parâmetros

name

Especifica o identificador da instância do Postgres a ser alterada.

Se o identificador contiver espaços ou caracteres especiais, toda a cadeia de caracteres deverá ser delimitada por aspas duplas. Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.

Para obter mais informações, consulte Requisitos para identificadores.

RENAME TO new_name

Altera o nome da instância do Postgres para o novo nome especificado. O novo identificador deve ser exclusivo para a conta.

Para obter mais detalhes sobre os identificadores de, consulte Requisitos para identificadores.

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

Regenera as credenciais para a função snowflake_admin ou application. Retorna uma linha com a seguinte coluna:

  • password

Para obter mais informações, consulte Funções do Snowflake Postgres.

SET ...

Define uma ou mais propriedades especificadas para a instância do Postgres:

NETWORK_POLICY = 'network_policy'

Especifica a política de redes a ser usada para a instância. As alterações na política podem levar até 2 minutos para entrar em vigor.

Para especificar esse parâmetro, você deve ter recebido o privilégio USAGE no objeto de política de redes.

AUTHENTICATION_AUTHORITY = { POSTGRES | POSTGRES_OR_SNOWFLAKE }

Altere o método de autenticação para a instância. POSTGRES indica que somente senhas de uso do Postgres podem ser utilizadas. POSTGRES_OR_SNOWFLAKE também permite o uso de senhas de token de acesso de curta duração. Consulte Autenticação de token Snowflake para Snowflake Postgres para obter mais detalhes.

COMMENT = 'string_literal'

Adiciona ou sobrescreve um comentário existente para a instância do Postgres.

HIGH_AVAILABILITY = { TRUE | FALSE }

Ativa ou desativa a alta disponibilidade para a instância. Executa como uma operação assíncrona. Execute o comando DESCRIBE POSTGRES INSTANCE e monitore o campo operations para acompanhar o progresso.

Uma alteração de alta disponibilidade só poderá ser iniciada se a instância estiver no estado READY e nenhuma outra operação estiver em execução.

Nota

Os tamanhos de instância com capacidade de intermitência (BURST_XS, BURST_S, BURST_M) não são compatíveis com alta disponibilidade. Para habilitar a HA, você deve primeiro mudar para uma família de computação STANDARD ou HIGHMEM.

COMPUTE_FAMILY = 'compute_family'

Especifica o novo tamanho da instância do Postgres.

STORAGE_SIZE_GB = storage_gb

Especifica o novo tamanho de armazenamento em GB. Aumentos e reduções são compatíveis.

Nota

Ao diminuir o tamanho do armazenamento, você não pode reduzir a quantidade muito próxima da quantidade de dados na instância. O novo tamanho deve ser pelo menos 1,4 vez a quantidade de uso de disco que a instância está usando atualmente. Dessa forma, ainda há espaço para adicionar mais dados sem acionar um aumento automático de armazenamento.

STORAGE_INTEGRATION = 'storage_integration_name'

Anexa uma integração de armazenamento do tipo POSTGRES_EXTERNAL_STORAGE à instância do Postgres, permitindo que a extensão pg_lake acesse dados em armazenamento de objetos externo. Para o procedimento de configuração completo, consulte Configurando o armazenamento S3 para pg_lake.

POSTGRES_VERSION = { 16 | 17 | 18 }

Especifica a versão principal do Postgres para a qual atualizar. Você só pode atualizar para uma versão mais recente; o downgrade não é possível.

MAINTENANCE_WINDOW_START = hour_of_day

Especifica a hora do dia (0-23, UTC) em que uma janela de manutenção pode começar. As janelas de manutenção têm duração de três horas, começando na hora especificada.

POSTGRES_SETTINGS = 'json_string'

Especifica alterações nas configurações do servidor Postgres para a instância no formato JSON:

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

Algumas configurações exigem a reinicialização da instância para que entrem em vigor. Essas alterações não serão aplicadas, a menos que você especifique APPLY IMMEDIATELY.

APPLY IMMEDIATELY

Substitui qualquer janela de manutenção definida e aplica as operações especificadas assim que estiverem prontas. Aplica-se a COMPUTE_FAMILY, STORAGE_SIZE_GB, POSTGRES_VERSION e POSTGRES_SETTINGS.

APPLY ON 'timestamp'

Substitui qualquer janela de manutenção definida e aplica as operações especificadas no carimbo de data/hora fornecido. O carimbo de data/hora não pode ser superior a 72 horas no futuro.

Formatos de carimbo de data/hora compatíveis:

  • yyyy-MM-dd

  • yyyy-MM-dd HH:mm

  • yyyy-MM-dd HH:mm:ss

  • yyyy-MM-dd HH:mm zzz

UNSET ...

Desativa uma ou mais propriedades especificadas para a instância do Postgres, redefinindo-as para os valores padrão:

  • COMMENT

  • POSTGRES_SETTINGS

  • NETWORK_POLICY

  • MAINTENANCE_WINDOW_START – a desativação faz com que todas as operações em andamento sejam aplicadas assim que forem concluídas.

  • STORAGE_INTEGRATION – remove a integração de armazenamento da instância, desativando o acesso da pg_lake ao armazenamento externo.

Para desmarcar várias propriedades ou parâmetros com uma única instrução ALTER, separe cada propriedade ou parâmetro com uma vírgula.

Ao desmarcar uma propriedade ou parâmetro, especifique apenas o nome da propriedade ou parâmetro (a menos que a sintaxe acima indique que você deve especificar o valor). Especificar o valor retorna um erro.

SUSPEND

Suspende a instância do Postgres. A máquina virtual fica desativada enquanto a imagem do disco é mantida em armazenamento. A cobrança normal é suspensa, mas os custos de armazenamento continuam a acumular. Os backups existentes são mantidos.

RESUME

Retoma uma instância do Postgres suspensa. Se houver operações pendentes de reinicialização, elas serão aplicadas quando a instância for retomada.

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

Especifica o nome da tag e o valor da cadeia de caracteres dela.

O valor de tag é sempre uma cadeia de caracteres, e o número máximo de caracteres do valor da tag é 256.

Para obter informações sobre como especificar tags em uma instrução, consulte Cotas de tags.

Requisitos de controle de acesso

A função usada para executar essa operação deve ter, no mínimo, os seguintes privilégios:

Privilégio

Objeto

Notas

OWNERSHIP ou OPERATE

Instância do Postgres

Necessário para modificar as propriedades da instância.

USAGE

Política de redes

Necessário apenas se NETWORK_POLICY for especificado.

USAGE

Integração de armazenamento

Necessário apenas se STORAGE_INTEGRATION for especificado.

Para instruções sobre como criar uma função personalizada com um conjunto específico de privilégios, consulte Criação de funções personalizadas.

Para informações gerais sobre concessões de funções e privilégios para executar ações de SQL em objetos protegíveis, consulte Visão geral do controle de acesso.

Notas de uso

  • As alterações em COMPUTE_FAMILY, STORAGE_SIZE_GB e POSTGRES_VERSION são chamadas coletivamente de operações de «atualização» e podem ser executadas em conjunto. Execute o comando DESCRIBE POSTGRES INSTANCE e monitore o campo operations para acompanhar o progresso.

  • Uma operação de atualização só pode ser iniciada se a instância estiver no estado READY e nenhuma outra operação estiver em execução.

  • Se uma instância tiver uma janela de manutenção definida, as alterações não entrarão em vigor até o início do período da janela de manutenção, a menos que APPLY IMMEDIATELY seja especificado. As janelas de manutenção controlam quando as alterações são aplicadas, não se a instância está em execução. Para obter mais detalhes sobre as operações de manutenção, consulte Gerenciamento de instâncias do Snowflake Postgres.

  • Uma breve interrupção do serviço é necessária para executar operações de gerenciamento de instâncias. Certifique-se de que seus aplicativos possam se reconectar automaticamente ao banco de dados.

  • SUSPEND e RESUME são operações imediatas para interromper e iniciar a cobrança da instância. Elas são diferentes das janelas de manutenção, que agendam quando as alterações de configuração (como atualizações ou ativação de HA) entram em vigor.

  • A cadeia de conexão para uma instância permanece a mesma em todas as operações de gerenciamento de instâncias, a menos que você regenere credenciais explicitamente.

  • Em relação aos metadados:

    Atenção

    Os clientes devem garantir que nenhum dado pessoal (exceto para um objeto do usuário), dados sensíveis, dados controlados por exportação ou outros dados regulamentados sejam inseridos como metadados ao usar o serviço Snowflake. Para obter mais informações, consulte Campos de metadados no Snowflake.

Exemplos

Altere a família de computação e o tamanho do armazenamento de uma instância do Postgres:

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

Monitore o progresso da operação usando 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

Habilite a alta disponibilidade para uma instância:

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

Atualize para o 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

Aplique as alterações imediatamente, ignorando a janela de manutenção:

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

Suspenda uma instância do 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

Retome uma instância suspensa:

ALTER POSTGRES INSTANCE my_postgres RESUME;
Copy

Renomeie uma instância do Postgres:

ALTER POSTGRES INSTANCE my_postgres
  RENAME TO prod_postgres;
Copy

Nota

Renomear uma instância altera o identificador dela no Snowflake, mas não altera o nome do host de conexão. O nome do host permanece o mesmo; portanto, as conexões e aplicativos existentes continuam funcionando sem modificações.