CREATE BACKUP POLICY

Crée une politique de sauvegarde. Vous associez la politique à un ou plusieurs ensembles de sauvegardes. Les paramètres de la politique définissent la planification et les périodes d’expiration pour chaque ensemble de sauvegardes qui utilise la politique.

La planification détermine la fréquence à laquelle Snowflake effectue automatiquement une sauvegarde et ajoute la sauvegarde résultante à l’ensemble de sauvegardes gouverné par la politique. La période d’expiration détermine la durée de conservation de chaque sauvegarde avant que Snowflake ne la supprime automatiquement de l’ensemble de sauvegardes associé.

Astuce

La politique de sauvegarde est facultative pour un ensemble de sauvegardes. Si vous n’avez pas besoin de sauvegardes planifiées, d’un verrou de conservation ou d’une période d’expiration, vous pouvez créer un ensemble de sauvegardes sans politique de sauvegarde. Vous pouvez également utiliser ALTER BACKUP SET pour appliquer ultérieurement une politique de sauvegarde à un ensemble de sauvegardes existant, ou pour suspendre et reprendre les sauvegardes planifiées spécifiées dans la politique de sauvegarde.

Voir aussi :

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

Syntaxe

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

Paramètres requis

name

Identificateur de la politique de sauvegarde ; doit être unique pour votre compte.

De plus, l’identificateur doit commencer par un caractère alphabétique et ne peut pas contenir d’espaces ou de caractères spéciaux à moins que toute la chaîne d’identificateur soit délimitée par des guillemets doubles (par exemple, "My object"). Les identificateurs entre guillemets doubles sont également sensibles à la casse.

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

Paramètres facultatifs

OR REPLACE

Si une politique de sauvegarde portant ce nom existe déjà, supprimez-la et créez-en une nouvelle. Cette clause s’exclut mutuellement avec IF NOT EXISTS.

IF NOT EXISTS

Crée la politique de sauvegarde uniquement s’il n’existe pas de politique de sauvegarde portant le même nom. Si une politique de sauvegarde existe déjà, la commande renvoie un message de réussite, même si cela n’a aucun effet. Cette clause s’exclut mutuellement avec OR REPLACE.

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

WITH RETENTION LOCK

Spécifie la période de conservation obligatoire pour les sauvegardes. Les sauvegardes avec verrous de conservation ne peuvent pas être supprimées, même par un utilisateur ayant les privilèges adéquats. Pour plus d’informations, consultez les restrictions pour une sauvegarde avec un verrou de conservation.

Note

Seul un utilisateur avec le privilège APPLY BACKUP RETENTION LOCK peut créer une politique de sauvegarde avec un verrou de conservation.

Important

L’application d’une politique de sauvegarde avec un verrou de conservation à un ensemble de sauvegardes est irréversible. En raison des garanties strictes nécessaires à la conformité réglementaire, après avoir placé un verrou de conservation sur un ensemble de sauvegardes, vous ne pouvez plus révoquer ce verrou. Le support Snowflake ne peut pas non plus révoquer un tel verrou de conservation. Réfléchissez bien avant de définir un verrou de conservation sur un ensemble de sauvegardes avec une longue période d’expiration, afin d’éviter des frais de stockage inattendus pour les ensembles de sauvegardes non supprimables, ainsi que pour les schémas et les bases de données qui les contiennent.

Si une organisation Snowflake est supprimée, l’organisation n’est plus un client Snowflake. Dans ce cas, Snowflake supprime toutes les sauvegardes, y compris celles avec des verrous de conservation. La suppression d’une organisation Snowflake nécessite l’intervention du support Snowflake. Il ne s’agit pas d’une opération qu’un administrateur peut effectuer par accident.

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

Spécifie la planification de création des sauvegardes d’un objet.

Note

La planification minimale des sauvegardes doit être de 60 minutes ou 1 heure.

Chaque politique de sauvegarde doit disposer d’une ou des deux propriétés de planification et de période d’expiration. Pour plus d’informations, voir Politique de sauvegarde.

  • USING CRON expr time_zone

    Spécifie une expression cron et un fuseau horaire pour le moment où une sauvegarde d’un objet est créée. Prend en charge un sous-ensemble de la syntaxe standard de l’utilitaire cron.

    Pour obtenir une liste des fuseaux horaires, voir la liste des fuseaux horaires de la base de données tz (dans Wikipédia).

    L’expression cron comprend les champs suivants :

    # __________ 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)
    # | | | | |
    # | | | | |
      * * * * *
    

    Les caractères spéciaux suivants sont acceptés :

    *

    Caractère générique. Spécifie toute occurrence du champ.

    L

    Signifie « dernier ». Lorsqu’il est utilisé dans le champ du jour de la semaine, il vous permet de spécifier des constructions telles que « le dernier vendredi » (« 5L ») d’un mois donné. Dans le champ du mois, il spécifie le dernier jour du mois.

    /n

    Indique l’instance n d’une unité de temps donnée. Chaque quanta de temps est calculé indépendamment. Par exemple, si 4/3 est spécifié dans le champ du mois, la sauvegarde est planifiée pour avril, juillet et octobre (c’est-à-dire tous les 3 mois, à partir du 4e mois de l’année). Le même calendrier est maintenu les années suivantes. Autrement dit, la sauvegarde n’est pas prévue en janvier (3 mois après l’exécution d’octobre).

    Note

    • L’expression cron est actuellement évaluée par rapport au fuseau horaire spécifié. La modification de la valeur du paramètre TIMEZONE pour le compte (ou la définition de la valeur au niveau de l’utilisateur ou de la session) ne modifie pas le fuseau horaire de la sauvegarde.

    • L’expression cron définit toutes les heures d’exécution valides de la sauvegarde. Snowflake tente de créer une sauvegarde en fonction de cette planification ; toutefois, tout moment d’exécution valide est ignoré si une exécution précédente n’a pas été terminée avant le début du moment d’exécution valide suivant.

    • Lorsqu’un jour de mois et un jour de semaine spécifiques sont inclus dans l’expression cron, la sauvegarde est planifiée les jours satisfaisant le jour du mois ou le jour de la semaine. Par exemple, SCHEDULE = 'USING CRON 0 0 10-20 * TUE,THU UTC' planifie une sauvegarde à 0AM (minuit) entre le 10e et le 20e jour du mois, ainsi que le mardi ou le jeudi en dehors de ces dates.

  • num MINUTE ou num MINUTES

    Spécifie un intervalle (en minutes) de temps d’attente entre les sauvegardes. Accepte uniquement les entiers positifs.

    Prend également en charge la syntaxe num M.

  • num HOUR ou num HOURS

    Spécifie un intervalle (en heures) de temps d’attente entre les sauvegardes. Accepte uniquement les entiers positifs.

    Prend également en charge la syntaxe num H.

Pour éviter toute ambiguïté, un intervalle de base est défini dans les circonstances suivantes :

  • Lorsque l’objet est créé (à l’aide de CREATE BACKUP SET … WITH BACKUP POLICY).

  • Lorsqu’un intervalle différent est défini (avec ALTER BACKUP SET … APPLY BACKUP POLICY or ALTER BACKUP POLICY … SET SCHEDULE).

L’intervalle de base démarre le compteur d’intervalle à partir de l’heure actuelle. Par exemple, si une valeur INTERVAL de 10 MINUTES est définie et que la sauvegarde planifiée est activée à 9 h 03 AM, les sauvegardes suivantes sont créées à 9 h 13 AM, 9 h 23 AM, et ainsi de suite. Notez que nous faisons de notre mieux pour assurer une précision absolue, mais nous garantissons uniquement qu’une sauvegarde ne s’exécute pas avant l’intervalle défini. Autrement dit, dans cet exemple, la sauvegarde pourrait s’exécuter pour la première fois à 9 h 14 AM, mais ne s’exécutera certainement pas à 9 h 12 AM.

EXPIRE_AFTER_DAYS = days_integer

Spécifie le nombre de jours jusqu’à l’expiration de la sauvegarde. Snowflake supprime automatiquement les sauvegardes ayant expiré. Si ce paramètre n’est pas spécifié, les sauvegardes restent dans l’ensemble de sauvegardes jusqu’à ce qu’ils soient supprimés manuellement de l’ensemble.

  • Valeur minimale : 1.

  • Valeur maximale : 3653 (environ 10 ans) si vous ne spécifiez pas la clause SCHEDULE.

Note

Chaque politique de sauvegarde doit disposer d’une ou des deux propriétés de planification et de période d’expiration. Pour plus d’informations, voir Politique de sauvegarde.

COMMENT = 'string_literal'

Spécifie un commentaire pour la politique de sauvegarde.

Par défaut : aucune valeur

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

Remarques

CREATE BACKUP POLICY

Le rôle utilisé pour créer une politique de sauvegarde doit disposer de ce privilège sur le schéma dans lequel la politique est créée.

APPLY BACKUP RETENTION LOCK

Seul un utilisateur disposant de ce privilège sur le compte peut créer une politique de sauvegarde avec un verrou de conservation.

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

  • La conservation Time Travel et Failsafe ne s’applique pas aux sauvegardes. Une sauvegarde ne peut pas être récupérée après son expiration.

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

Important

Si la politique de sauvegarde est associée à un verrou de conservation et qu’il existe des sauvegardes non expirées dans l’ensemble de sauvegardes, vous ne pouvez pas supprimer l’ensemble de sauvegardes. Dans ce cas, vous devez attendre que toutes les sauvegardes de l’ensemble expirent. Cette restriction s’applique même aux rôles privilégiés tels que ACCOUNTADMIN, et à l’assistance Snowflake. C’est pourquoi vous devez être prudent lorsque vous spécifiez le verrou de conservation et une longue période d’expiration dans une politique de sauvegarde.

Exemples

Créer une politique de sauvegarde qui crée une sauvegarde toutes les heures et expire après 90 jours :

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

Créez une politique de sauvegarde avec un verrou de conservation qui crée une sauvegarde toutes les 24 heures et qui expire après 90 jours. Les sauvegardes créées à l’aide de cette politique de sauvegarde ne peuvent être modifiées ou supprimées avant la fin de la période d’expiration :

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

Créez une politique de sauvegarde en utilisant une expression cron pour la planification. L’instruction suivante crée une politique qui crée des sauvegardes tous les mardis et vendredis de la semaine à 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