CREATE BACKUP POLICY

Cria uma política de backup. Você associa a política a um ou mais conjuntos de backups. As configurações na política definem o cronograma e os períodos de expiração para cada conjunto de backups que usa a política.

O cronograma determina a frequência com que o Snowflake faz um backup automático e adiciona o backup resultante ao conjunto de backups governado pela política. O período de expiração determina quanto tempo cada backup é retido antes que o Snowflake o exclua automaticamente do conjunto de backups associado.

Dica

A política de backup é opcional para um conjunto de backups. Se você não precisar de backups agendados, um bloqueio de retenção ou um período de expiração, poderá criar um conjunto de backups sem uma política de backup. Você também pode usar ALTER BACKUP SET para aplicar uma política de backup posteriormente a um conjunto de backups existente ou para suspender e retomar os backups agendados especificados na política de backup.

Consulte também:

ALTER BACKUP POLICY, DROP BACKUP POLICY, SHOW BACKUP POLICIES, CREATE BACKUP SET ALTER BACKUP SET

Sintaxe

CREATE [ OR REPLACE ] BACKUP POLICY [ IF NOT EXISTS ] <name>
   [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
   [ WITH RETENTION LOCK ]
   [ SCHEDULE = '{ <num> MINUTE | <num> HOUR | USING CRON <expr> <time_zone> }' ]
   [ EXPIRE_AFTER_DAYS = <days_integer> ]
   [ COMMENT = <string> ]
Copy

Parâmetros obrigatórios

name

Identificador da política de backup; deve ser exclusivo para sua conta.

Além disso, o identificador deve começar com um caractere alfabético e não pode conter espaços ou caracteres especiais, a menos que toda a cadeia de caracteres do identificador esteja entre aspas duplas (por exemplo, "My object"). Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.

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

Parâmetros opcionais

OR REPLACE

Se já existir uma política de backup com esse nome, exclua-a e crie uma nova. Esta cláusula é mutuamente exclusiva com IF NOT EXISTS.

IF NOT EXISTS

Cria a política de backup somente se não há uma com o mesmo nome. Se já existir uma política de backup, o comando retornará uma mensagem de sucesso, mesmo que não tenha efeito. Esta cláusula é mutuamente exclusiva com OR REPLACE.

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 Tag quotas.

WITH RETENTION LOCK

Especifica o período de retenção obrigatório para backups. Backups com bloqueios de retenção não podem ser excluídos, nem mesmo por um usuário com privilégios elevados. Para obter mais informações, consulte as restrições para um backup com bloqueio de retenção.

Nota

Somente um usuário com o privilégio APPLY BACKUP RETENTION LOCK pode criar uma política de backup com bloqueio de retenção.

Importante

Aplicar uma política de backup com um bloqueio de retenção a um conjunto de backup é irreversível. Devido às garantias rigorosas necessárias para a conformidade regulatória, depois de inserir um bloqueio de retenção em um conjunto de backups, não será possível revogar o bloqueio. O suporte Snowflake também não pode revogar esse bloqueio de retenção. Planeje com cuidado antes de definir um bloqueio de retenção em um conjunto de backups com um longo período de expiração, para evitar cobranças inesperadas de armazenamento para conjuntos de backups não excluíveis e para os esquemas e bancos de dados que os contêm.

Se uma organização Snowflake for excluída, ela deixará de ser um cliente Snowflake. Nesse caso, o Snowflake exclui todos os backups, incluindo aqueles com bloqueios de retenção. A exclusão de uma organização Snowflake requer o envolvimento do suporte Snowflake. Não é algo que um administrador possa fazer por acidente.

SCHEDULE = '{ num MINUTE | num HOUR | USING CRON expr time_zone }'

Especifica o cronograma para a criação de backups de um objeto.

Nota

O cronograma mínimo para backups deve ser de 60 minutos ou 1 hora.

Cada política de backup deve ter uma ou as duas propriedades de cronograma e de período de expiração. Para obter mais informações, consulte Política de backup.

  • USING CRON expr time_zone

    Especifica uma expressão cron e um fuso horário para o momento em que um backup de um objeto é criado. Oferece suporte a um subconjunto de sintaxe de utilitário cron padrão.

    Para uma lista de fusos horários, consulte a lista de fusos horários do banco de dados tz (no Wikipedia).

    A expressão cron consiste nos seguintes campos:

    # __________ minute (0-59)
    # | ________ hour (0-23)
    # | | ______ day of month (1-31, or L)
    # | | | ____ month (1-12, JAN-DEC)
    # | | | | __ day of week (0-6, SUN-SAT, or L)
    # | | | | |
    # | | | | |
      * * * * *
    

    Os seguintes caracteres especiais são suportados:

    *

    Curinga. Especifica qualquer ocorrência do campo.

    L

    Significa “último”. Quando usado no campo do dia da semana, permite especificar construções como “a última sexta-feira” (“5L”) de um determinado mês. No campo do dia do mês, ele especifica o último dia do mês.

    /n

    Indica a enésima instância de uma determinada unidade de tempo. Cada quanta de tempo é computada independentemente. Por exemplo, se 4/3 estiver especificado no campo do mês, o backup será programado para abril, julho e outubro (ou seja, a cada 3 meses, começando com o quarto mês do ano). O mesmo cronograma é mantido nos anos seguintes. Ou seja, o backup não está programado para ser executado em janeiro (3 meses após a execução de outubro).

    Nota

    • Atualmente, a expressão cron avalia apenas em relação ao fuso horário especificado. Alterar o valor do parâmetro TIMEZONE para a conta (ou definir o valor no nível do usuário ou da sessão) não altera o fuso horário para o backup.

    • A expressão cron define todos os tempos de execução válidos de execução para o backup. O Snowflake tenta criar um backup com base nesse cronograma; no entanto, qualquer tempo de execução válido será ignorado se uma execução anterior não tiver sido concluída antes do próximo tempo de execução válido começar.

    • Quando tanto um dia específico do mês como um dia da semana são incluídos na expressão cron, o backup é programado em dias que satisfaçam o dia do mês ou o dia da semana. Por exemplo, SCHEDULE = 'USING CRON 0 0 10-20 * TUE,THU UTC' agenda um backup às 0AM (meia-noite) em qualquer dia de 10 a 20 e também em qualquer terça ou quinta-feira fora dessas datas.

  • num MINUTE ou num MINUTES

    Especifica um intervalo (em minutos) de tempo de espera entre backups. Aceita apenas números inteiros positivos.

    Também oferece suporte à sintaxe num M.

  • num HOUR ou num HOURS

    Especifica um intervalo (em horas) de tempo de espera entre os backups. Aceita apenas números inteiros positivos.

    Também oferece suporte à sintaxe num H.

Para evitar ambiguidade, um tempo de intervalo base é definido nas seguintes circunstâncias:

  • Quando o objeto é criado (usando CREATE BACKUP SET … WITH BACKUP POLICY).

  • Quando um intervalo diferente é definido (usando ALTER BACKUP SET … APPLY BACKUP POLICY ou ALTER BACKUP POLICY … SET SCHEDULE).

O tempo de intervalo base inicia o contador de intervalo a partir da hora atual do relógio. Por exemplo, se o valor de INTERVAL for definido como 10 MINUTES e o backup agendado for habilitado às 9:03 AM, os próximos backups serão criados às 9:13 AM, às 9:23 AM e assim por diante. Observe que fazemos o melhor para assegurar uma precisão absoluta, mas só garantimos que um backup não seja executado antes do intervalo definido ocorrer (ou seja, no exemplo atual, o backup poderia ser executado primeiro às 9:14 AM, mas definitivamente não será executado às 9:12 AM).

EXPIRE_AFTER_DAYS = days_integer

Especifica o número de dias até que o backup expire. O Snowflake exclui automaticamente os backups expirados. Se esse parâmetro não for especificado, os backups permanecerão no conjunto de backups até serem excluídos manualmente.

  • Valor mínimo: 1.

  • Valor máximo: 3653 (aproximadamente 10 anos) se você não especificar a cláusula SCHEDULE.

Nota

Cada política de backup deve ter uma ou as duas propriedades de cronograma e de período de expiração. Para obter mais informações, consulte Política de backup.

COMMENT = 'string_literal'

Especifica um comentário para a política de backup.

Padrão: sem valor

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

Notas

CREATE BACKUP POLICY

A função utilizada para criar uma política de backup deve ter esse privilégio no esquema em que a política é criada.

APPLY BACKUP RETENTION LOCK

Somente um usuário com esse privilégio na conta pode criar uma política de backup com bloqueio de retenção.

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

  • A retenção Time Travel e Failsafe não se aplica a backups. Um backup não pode ser recuperado após expirar.

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

Importante

Se a política de backup tiver um bloqueio de retenção aplicado a ela e houver algum backup não expirado no conjunto de backup, você não poderá excluir o conjunto de backup. Nesse caso, você deve aguardar até que todos os backups no conjunto expirem. Esta restrição aplica-se até mesmo a funções privilegiadas como ACCOUNTADMIN, e para suporte Snowflake. Por esse motivo, tenha cuidado ao especificar o bloqueio de retenção e um longo período de expiração em uma política de backup.

Exemplos

Crie uma política de backup que crie um backup a cada hora e expire após 90 dias:

CREATE BACKUP POLICY hourly_backup_policy
  SCHEDULE = '60 MINUTE'
  EXPIRE_AFTER_DAYS = 90
  COMMENT = 'Hourly backups that expire after 90 days';
Copy

Crie uma política de backup com um bloqueio de retenção que crie um backup a cada 24 horas e expire após 90 dias. Os backups criados usando esta política de backup não podem ser modificados ou excluídos antes do término do período de expiração:

CREATE BACKUP POLICY daily_backup_policy_with_lock
  WITH RETENTION LOCK
  SCHEDULE = '1440 MINUTE'
  EXPIRE_AFTER_DAYS = 90
  COMMENT = 'regulatory backups expire after 90 days with retention lock';
Copy

Crie uma política de backup usando uma expressão cron para o cronograma. A seguinte declaração cria uma política que cria backups todas as terças e sextas-feiras da semana às 11PM:

CREATE BACKUP POLICY twice_weekly_backup_policy
  SCHEDULE = 'USING CRON 0 23 * * 2,5 UTC'
  EXPIRE_AFTER_DAYS = 7
  COMMENT = 'Twice-weekly backups that expire after 7 days';
Copy