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> ... ]
Parâmetros¶
nameEspecifica 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_nameAltera 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_adminouapplication. 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
operationspara 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_gbEspecifica 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_dayEspecifica 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", ...}'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 IMMEDIATELYSubstitui 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_VERSIONePOSTGRES_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-ddyyyy-MM-dd HH:mmyyyy-MM-dd HH:mm:ssyyyy-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:
COMMENTPOSTGRES_SETTINGSNETWORK_POLICYMAINTENANCE_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.
SUSPENDSuspende 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.
RESUMERetoma 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_GBePOSTGRES_VERSIONsão chamadas coletivamente de operações de «atualização» e podem ser executadas em conjunto. Execute o comando DESCRIBE POSTGRES INSTANCE e monitore o campooperationspara 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 IMMEDIATELYseja 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;
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'
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');
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;
Aplique as alterações imediatamente, ignorando a janela de manutenção:
ALTER POSTGRES INSTANCE my_postgres
SET COMPUTE_FAMILY = 'STANDARD_L'
APPLY IMMEDIATELY;
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');
Retome uma instância suspensa:
ALTER POSTGRES INSTANCE my_postgres RESUME;
Renomeie uma instância do Postgres:
ALTER POSTGRES INSTANCE my_postgres
RENAME TO prod_postgres;
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.
