Snowflake 时间旅行数据恢复

2025年8月1日 | 阅读 7 分钟

Snowflake 的时间旅行工具对 Snowflake 用户很有帮助。Snowflake 最强大的功能之一是时间旅行,它使用户能够访问历史数据并快速恢复丢失的数据。

  • 可以随时将完整的数据库、表和模式克隆到其原始状态。
  • 恢复已删除的数据库、表和模式。
  • 一旦超过指定的时间期限,并且数据已进入 Snowflake Fail-safe(故障安全),这些操作将不再可行。
Snowflake Time Travel Data Recovery

Snowflake 的时间旅行有哪些优势?

Snowflake 时间旅行的众多优势包括:

  • 防止意外或故意的用户数据删除。
  • 允许用户在指定保留期内的任何时候搜索和检查历史数据。
  • 可随时克隆和恢复数据库、表和模式。

通过提供一种简单的恢复已删除数据的方法,无需复杂的 Snowflake 备份和恢复过程,从而降低了数据恢复的难度。

  • 有助于监控数据的用法和演变。
  • 提供一种低成本的持续数据安全方法。
  • 无需额外的设置或配置,即可自动跟踪历史数据。

Snowflake 的故障安全(Fail-Safe)与时间旅行有何区别?

1) 时间旅行

此功能对于从意外删除或数据更改中恢复非常有用。恢复数据库、表和模式。

  • 在历史时间点复制数据库、表和模式。
  • 根据您的 Snowflake 版本,您可以将时间旅行保留时间调整为最多 90 天。
Snowflake Time Travel Data Recovery

2) Snowflake 的故障安全(Fail-Safe)

Snowflake 故障安全是一种数据恢复解决方案,用作最后的手段。

在时间旅行期结束后,它提供额外的七天数据保留。故障安全的主要目标是防止灾难性故障。但是,请注意,访问故障安全中的数据需要 Snowflake 支持,因为它不能由用户直接查询或恢复。

故障安全和 Snowflake 时间旅行的比较

在时间旅行期结束后,Snowflake 故障安全作为最后的恢复手段,以防止数据丢失。用户可以轻松地查询、恢复和复制历史数据。需要 Snowflake 的帮助才能访问数据。在 Snowflake 中,时间旅行可定制长达九十天。用户无法直接使用 Snowflake 故障安全,它由 Snowflake 支持管理。

  • 可以轻松访问和使用历史数据。数据不易访问,并保留用于紧急检索。
  • 这可能会根据数据量和保留期限产生额外的存储费用。尽管数据访问可能需要支持费用,但这是一项内置的安全措施。
Snowflake Time Travel Data Recovery

Snowflake 时间旅行的数据保留期意味着什么?

Snowflake 时间旅行的一个重要方面是数据保留期。当数据更新时,Snowflake 会维护数据的先前状态,从而允许用户执行时间旅行操作。

对于临时数据库、模式和表,保留期可以更改为 0(或恢复为 Snowflake Enterprise Edition 及更高版本的默认值 1 天)。用户对如何存储数据拥有更大的灵活性和控制权,因为永久对象可以具有 0 到 90 天的保留期。

当数据保留期到期时,对象的历史数据将被转移到 Snowflake 故障安全,这将阻止检索、复制或恢复先前对象。用户有足够的时间恢复任何丢失或损坏的数据,因为 Snowflake 的故障安全会保留数据长达七天。

Snowflake Time Travel Data Recovery

Snowflake 时间旅行 SQL 扩展

Snowflake 添加了以下 SQL 扩展来提供时间旅行功能:

1) PRIOR TO 子句: SELECT 语句和 CREATE...CLONE 指令(紧跟在对象名称后面)都可以使用此子句。通过输入以下特征之一,您可以确定要访问的数据的精确历史状态:

  • TIMESTAMP: 指示您希望读取信息的精确日期和时间。
    使用 OFFSET (time_in_seconds) 函数,您可以相对于当前时间向前或向后追溯,该函数以秒为单位指定与当前时间戳的时间差。
  • STATEMENT (identifier): 提供一个唯一的标识符,例如查询 ID,该标识符与特定语句的执行相关联,使您能够查看该语句执行后的数据状态。

2) UNDROP 命令: 使用此命令,您可以从某个特定时间点恢复已删除的数据库、表或模式。您可以指定所需历史状态来撤销 DROP 操作。

Snowflake 的备份和恢复如何使用时间旅行?

现在让我们开始从 Snowflake 恢复已删除数据的过程。每当表在 Snowflake 中执行任何 DML 操作时,该平台都会在一定时间内记录表的先前数据迭代。这允许用户通过使用 AT | BEFORE 子句来查询数据的先前迭代。

此 AT | BEFORE 子句使用户可以轻松地查询在表的特定历史时间点或该时间点之前存在的数据。提供的点可以是已完成语句(如 SELECT 或 INSERT)的 ID,也可以是基于时间的项目(如时间戳),或者可以是与当前时间偏移的时间。

Snowflake Time Travel Data Recovery

什么是 Snowflake 时间旅行?

时间旅行是 Snowflake 的一项强大功能,可提高 数据完整性 并简化历史分析。它使用户能够查看和检查历史数据,恢复已删除的对象,并在可自定义的时间段内获取数据快照。

  • 访问历史数据: 无论数据是否已被修改或删除,用户仍然可以通过 Snowflake 时间旅行访问历史数据。此功能会随着时间的推移跟踪所有数据库数据的修改。
  • 恢复已删除的对象: 可以在指定的时间旅行窗口内恢复在其中被删除的数据库、表和 模式。意外删除的对象可以从这一功能中受益。
  • 查询历史数据: 即使自创建以来数据已被修改或删除,您仍然可以像过去一样查询它。这对于合规性、审计和历史分析非常有用。
  • 创建克隆: 您可以使用 Snowflake 时间旅行在历史时间点创建整个表、模式或数据库的克隆。克隆在多种情况下可能很有用,例如为测试或分析获取数据快照。
  • 故障安全: 当指定的持续时间已过,您不再能够执行上述操作时,历史数据将被转移到 Snowflake 的故障安全。虽然它不能直接查询,但 Snowflake 的故障安全存储层会保留先前的数据。
  • 数据保留期规则: 任何未明确定义保留期的较低级别对象(例如数据库、模式和表)将在更改高级别(如账户或模式级别)的数据保留期时自动采用新的保留期。
Snowflake Time Travel Data Recovery

即使子模式或表具有不同的保留期指定,在删除数据库时,它们仍将继承数据库的保留期。因此,它们的保留时间将与数据库相同。为了确保在数据库删除时子模式或表保留其保留期,您必须在删除数据库或模式之前单独删除子对象。

基本上,重要的是要理解数据保留期的更改会影响较低级别的对象。如果您希望保留任何子模式或表的独特保留期,则在删除数据库时需要专门删除它们。

理解 Snowflake 的时间旅行

Snowflake 时间旅行是一项有用的技术,它允许用户随时检索已删除的数据,即已被修改或删除的内容。它是一项有效的持续数据保护 (CDP) 功能,可确保过去数据的可用性和维护。它帮助您实现:

  • 查询优化: 用户无需担心查询优化,因为 Snowflake 会使用聚类和分区自动优化查询。
  • 安全的数据共享: 可以使用 Snowflake 数据库、表、视图和 UDF 在账户之间安全地移动数据。
Snowflake Time Travel Data Recovery
  • 缓存: Snowflake 的缓存技术通过将查询结果保存在特定会话的缓存中,从而提高了重复查询的效率。

它是如何工作的?

对于已删除的表或数据集,将使用删除时存在的时间旅行窗口的持续时间。例如,如果您最初使用的是两天窗口,并将其扩展到七天,则在更改时间旅行窗口持续时间之前删除的表仍然只能恢复两天。

同样,如果您有五天的时间旅行窗口并选择将其缩短到三天,则在调整之前删除的表仍可额外恢复五天。由于时间旅行窗口是在数据集级别设置的,因此您无法更改它们以在数据未被取消删除之前恢复丢失的数据。

Snowflake Time Travel Data Recovery

如何开始使用 Snowflake?

如果您还没有 Snowflake 帐户,请创建一个。要完成注册过程,请访问 Snowflake 网站。使用 Snowflake 时间旅行有许多好处。时间旅行的另一个关键好处是灾难恢复。恢复已删除的数据或意外修改的数据可能会产生严重后果,尤其是当数据对您的业务至关重要时。时间旅行使您能够快速将数据恢复到其先前状态,从而最大限度地减少停机时间和数据丢失。

时间旅行提高了弹性,但密切关注成本和保留设置至关重要。时间旅行是有效数据管理和灾难恢复计划的关键组成部分,因为 Snowflake 的故障安全在保留期后提供了额外的恢复保护层。

结论

总而言之,我们可以得出结论,Snowflake 的时间旅行是一个强大的工具,它通过允许用户访问和恢复表、模式或数据库中的历史数据来确保数据完整性和恢复。它提供了一个可靠的数据管理安全网,能够恢复可自定义保留期(在 Enterprise 版本中最多可达 90 天)内已删除的对象,查询先前状态,并撤销意外修改。其克隆功能还可以分析历史数据,而不会造成任何中断。