CREATE BACKUP POLICY

创建 备份 策略。您将策略关联到一个或多个备份集。策略中的设置定义了使用该策略的每个备份集的计划和有效期。

该计划决定了 Snowflake 自动进行备份的频率,并将生成的备份添加到受策略管理的备份集中。有效期决定了在 Snowflake 自动将备份从关联的备份集中删除之前每个备份的保留时间。

小技巧

备份策略对备份集而言并非必需。如果您不需要计划备份、保留锁定或有效期,则可以在没有备份策略的情况下创建备份集。您也可以使用 ALTER BACKUP SET 将备份策略随后应用到现有备份集,或者暂停和恢复备份策略中指定的计划备份。

另请参阅:

ALTER BACKUP POLICYDROP BACKUP POLICYSHOW BACKUP POLICIESCREATE BACKUP SET ALTER BACKUP SET

语法

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

必填参数

name

备份策略的标识符;对于您的账户必须是唯一的。

此外,标识符必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如,"My object")。放在双引号内的标识符也区分大小写。

有关更多信息,请参阅 标识符要求

可选参数

OR REPLACE

如果存在同名备份策略,则删除现有备份策略并创建新的快备份策略。此子句与 IF NOT EXISTS 互斥。

IF NOT EXISTS

仅当不存在同名备份策略时,才会创建备份策略。如果备份策略已存在,则该命令将返回成功消息(即使其未产生实际效果)。此子句与 OR REPLACE 互斥。

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

指定 标签 名称和标签字符串值。

标签值始终为字符串,标签值的最大字符数为 256。

有关在语句中指定标签的信息,请参阅 Tag quotas

WITH RETENTION LOCK

指定备份的强制保留期。即使是特权用户也无法删除带有保留锁定的备份。有关更多信息,请参阅 具有保留锁定的备份的限制

备注

只有具备 APPLY BACKUP RETENTION LOCK 权限的用户才能创建具有保留锁定的备份策略。

重要

对备份集应用带保留锁定的备份策略是 不可逆操作。由于监管合规性所需的强保障要求,对备份集设置保留锁定后,您将无法撤销该锁定。Snowflake 支持部门也无法撤销此类保留锁定。在对具有较长有效期的备份集设置保留锁定前,请谨慎规划,以避免产生不可删除的备份集及其所含架构和数据库的意外存储费用。

如果删除了 Snowflake 组织,该组织将不再是 Snowflake 客户。此种情况下,Snowflake 会删除所有备份(包括带保留锁定的备份)。删除 Snowflake 组织需要 Snowflake 支持部门介入。管理员不可能意外执行此操作。

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

指定创建对象备份的计划。

备注

备份的最短计划必须为 60 分钟(1 小时)。

每个备份策略都必须具有一个或两个计划和有效期属性。有关更多信息,请参阅 备份策略

  • USING CRON expr time_zone

    为创建对象备份的时间点指定 cron 表达式和时区。支持标准 cron 实用程序语法的子集。

    有关时区列表,请参阅 ` tz 数据库时区列表 <https://en.wikipedia.org/wiki/List_of_tz_database_time_zones (link removed)>`_ (在维基百科中)。

    cron 表达式由以下字段组成:

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

    支持以下特殊字符:

    *

    通配符。指定字段的任何出现。

    L

    代表“last”。在星期几字段中使用时,它允许您指定结构,例如给定月份的“最后一个星期五”(“5L”)。在日期字段中,它指定该月的最后一天。

    /n

    指示给定时间单位的第 n 个实例。每个时间量子都是独立计算的。例如,如果在月份字段中指定 4/3,则备份将安排在 4 月、7 月和 10 月执行(即从一年中的第 4 个月开始,每 3 个月一次)。在随后的几年中保持相同的计划。也就是说,备份 不会 安排在 1 月(10 月运行后 3 个月)运行。

    备注

    • cron 表达式当前仅根据指定的时区进行计算。更改账户的 TIMEZONE 参数值(或在用户或会话级别设置该值):emph:不会 更改备份的时区。

    • cron 表达式定义备份的所有 :emph:` 有效 ` 运行时间。Snowflake 尝试根据此计划创建备份;但是,如果在下一个有效运行时间开始之前未完成上一次运行,则跳过任何有效运行时间。

    • 当 cron 表达式中同时包含一个月中的特定一天和一周中的某一天时,备份将计划在满足该月中的某一天 一周中的某一天的日期。例如,SCHEDULE = 'USING CRON 0 0 10-20 * TUE,THU UTC' 计划在每月的任何第 10 到 20 天以及这些日期之外任何星期二或星期四的 0AM(午夜)运行备份。

  • num MINUTEnum MINUTES

    指定备份之间的等待时间间隔(以分钟为单位)。仅接受正整数。

    还支持 num M 语法。

  • num HOURnum HOURS

    指定备份之间的等待时间间隔(以小时为单位)。仅接受正整数。

    还支持 num H 语法。

为避免歧义,在以下情况下设置了 基本间隔时间

  • 创建对象时(使用 CREATE BACKUP SET ... WITH BACKUP POLICY)。

  • 当设置不同的间隔时(使用 ALTER BACKUP SET ... APPLY BACKUP POLICY 或 ALTER BACKUP POLICY ... SET SCHEDULE)。

基本间隔时间从当前时钟时间开始间隔计数器。例如,如果将 INTERVAL 值设置为 10 MINUTES,并在 9:03 AM 启用计划备份,则下一个备份将在 9:13 AM、9:23 AM 创建,以此类推。请注意,我们尽最大努力确保绝对精度,但仅保证备份不会在设定的时间间隔发生 之前 执行(即,在当前示例中,备份可以首先在 9:14 AM 运行,但绝对不会在 9:12 AM 运行)。

EXPIRE_AFTER_DAYS = days_integer

指定距离备份过期的天数。Snowflake 会自动删除过期的备份。如果未指定此参数,则备份将保留在备份集中,直到从备份集中手动删除为止。

  • 最小值:1

  • 如果您未指定 SCHEDULE 子句,则最大值:``3653``(大约 10 年)。

备注

每个备份策略都必须具有一个或两个计划和有效期属性。有关更多信息,请参阅 备份策略

COMMENT = 'string_literal'

指定备份策略的注释。

默认:无值

访问控制要求

用于执行此操作的 角色 必须至少具有以下 权限

权限

备注

CREATE BACKUP POLICY

用于创建备份策略的角色必须具有架构(在其中创建该策略)的这一权限。

APPLY BACKUP RETENTION LOCK

只有具备该账户的这一权限的用户才能创建具有保留锁定的备份策略。

有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色

有关对 安全对象 执行 SQL 操作的相应角色和权限授予的一般信息,请参阅 访问控制概述

使用说明

  • Time Travel 和故障安全 保留不适用于备份。备份过期后无法恢复。

  • 关于元数据:

    注意

    客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段

重要

如果备份策略应用了保留锁定,并且备份集中有任何未过期的备份,则您无法删除该备份集。在这种情况下,必须等待备份集中的所有备份过期。此限制甚至适用于特权角色(如 ACCOUNTADMIN)和 Snowflake 支持部门。因此,在备份策略中指定保留锁定和较长有效期时务必谨慎。

示例

创建备份策略,该策略每小时创建一次备份,并在 90 天后过期:

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

创建具有保留锁定的备份策略,该策略每 24 小时创建一次备份,并在 90 天后过期。在有效期结束之前,无法修改或删除使用此备份策略创建的备份:

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

使用 cron 表达式为计划创建备份策略。以下语句可创建策略,该策略在每周的星期二和星期五 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
语言: 中文