Cloud SQL 备份简介

本页面介绍了 Cloud SQL 实例的备份运作方式,以及可供您选择的备份选项。如需简要了解如何将备份将数据恢复到实例,请参阅实例恢复概览

Cloud SQL 允许您按需备份实例,也可以使用备份时间表自动备份实例。Cloud SQL 备份是增量备份,可帮助您将丢失的数据恢复到 Cloud SQL 实例。借助备份,您可以:

  • 如果您的实例遇到问题,请将其恢复到之前的状态。
  • 通过使用不同区域或可用区中的备份创建新实例,来设置灾难恢复 (DR)。
  • 使用备份创建多个实例,以帮助进行开发、测试和迁移。

Cloud SQL 备份也会默认使用 Google 管理的加密密钥或客户管理的加密密钥 (CMEK) 进行加密。

您可以通过定义实例的备份保留设置来保留这些备份。 保留设置可能因实例的 Cloud SQL 版本备份选项而异。此外,您还可以在删除实例后保留备份,以便在删除后恢复实例。

Cloud SQL 提供两种备份服务选项来管理备份:

  • 增强型备份:备份在利用 Backup and DR Service 的集中式备份管理项目中进行管理和存储,并提供强制保留、精细调度和监控功能。
  • 标准备份:备份与您的 Cloud SQL 实例在同一个项目中创建、管理和存储。

如需详细了解每种备份选项及其功能,请参阅备份选项

备份类型

Cloud SQL 可为您的 Cloud SQL 实例执行按需备份或自动备份。您还可以在删除实例之前对其进行最终备份。

按需备份

按需备份是指可以随时创建的备份。如果您要对数据库执行有风险的操作,或者您需要备份但不想等到备份时段再执行,则按需备份非常有用。您可以为任何实例创建按需备份,无论实例是否启用了自动备份。

自动备份

自动备份会按预定频率(例如每小时、每天、每周或每月)进行。安排的频率取决于实例的备份选项。备份会在备份时段内启动。Cloud SQL 建议您尽可能将备份安排在实例活动较少的时候。

我们建议您不要手动删除任何自动备份,因为支持时间点恢复需要它们。

在备份时段内,系统会根据预定的频率定期在实例运行时进行自动备份。实例停止后,系统会再执行一次自动备份,以保护实例停止前的所有更改。自动备份保留取决于您为实例选择的备份选项中配置的保留政策。

最终备份

最终备份可让您在删除 Cloud SQL 实例之前对其进行备份。这样,您就可以在删除实例后保留实例数据。您可以在之后使用最终备份来创建实例或恢复到现有实例。如需详细了解如何访问和查看最终备份的详细信息,请参阅查看最终备份列表

您可以通过为实例启用最终备份实例设置,将实例设置为在删除实例时自动进行最终备份。您还可以在为实例启用最终备份时设置最终备份保留期限。如果您未为实例启用最终备份,也可以在删除实例时进行最终备份。 最终备份仅适用于主实例,不支持副本实例。您还可以设置 Cloud SQL 自定义组织政策,以便在删除组织中的所有实例时进行最终备份,并设置标准保留期限。如需了解详情,请参阅常见用例的自定义组织政策示例

默认情况下,Cloud SQL 会将最终备份保留 30 天。 不过,您可以自定义 Cloud SQL 保留备份的时间长度。 对于标准备份,此期限介于 1 天到 365 天之间;对于增强型备份,此期限介于 1 天到 99 年之间。 然后,您可以从备份恢复实例,只要备份可用即可。最终备份的收费方式与其他备份类似,按保留天数收费。

在删除实例后保留备份

保留的备份是指在实例删除后由 Cloud SQL 保留的备份。这些备份包括实例处于有效状态时创建的按需备份和自动备份。删除实例后,这些备份将独立于您的实例,并存储在项目级。保留的备份不同于最终备份,后者是在删除实例时进行的最后一次备份。

您可以更新这些备份的说明,以便更轻松地在 Google Cloud 项目中进行管理。您可以随时将保留的备份恢复到新的或现有的 Cloud SQL 实例

对于这些备份,保留期限由备份类型决定,并且在实例删除后无法更改。对于标准备份,按需备份会无限期保留,直到手动删除备份或删除包含备份的项目为止。对于增强型备份,按需备份会根据所选的保留规则进行保留。 实例删除后,自动备份将以滚动方式删除,每天删除一个备份。滚动式时间段是根据删除前实例的保留设置定义的,具体时长从 1 天到 99 年不等,取决于实例所选的备份选项。例如,如果实例的自动备份保留设置设为 7,则最新的自动备份会在实例删除 7 天后被删除。

您可以随时手动删除保留的备份。不过,如果您删除保留的备份,则无法恢复已删除的备份。

由于在 Cloud SQL 中删除实例后仍可使用实例名称,因此保留的备份将存储在您的 Google Cloud 项目中,并带有一个名为 instance_deletion_time 的字段。借助此字段,您可以确定特定备份是属于有效实例还是已删除实例。您还可以更新备份的说明,以便更轻松地管理备份。

恢复备份

如果自动备份政策没有提供良好的备份,Cloud SQL 还会尝试保留每个活跃实例的至少一个最新每日备份。您可以通过联系 Google Cloud Customer Care 来使用此备份进行恢复。

备份和数据完整性检查

Cloud SQL 会自动在后台执行数据库完整性检查,以识别任何潜在的数据完整性问题。完整性检查是通过恢复客户启动的备份恢复备份的采样以离线过程完成的。

事务日志保留

事务日志保留以天为单位。对于 Cloud SQL 企业 Plus 版实例,范围介于 1 到 35 天之间,默认值为 14 天。对于 Cloud SQL 企业版实例,范围介于 1 到 7 天之间,默认值为 7 天。对于 Cloud SQL 企业 Plus 版和 Cloud SQL 企业版实例,事务日志保留设置必须小于备份保留设置。

副本的备份

备份不适用于副本实例。由于副本实例是主实例的副本,因此备份会与主实例一起维护。如果副本实例因故障切换或切换而被提升为独立实例,则该实例会启用备份功能,并且需要自己的备份配置。提升后的副本不会继承主实例的备份配置,也无法访问主实例的备份。

备份选项

Cloud SQL 提供两种备份服务选项来管理实例的备份:标准备份和增强型备份。您可以根据实例的要求和需求,在标准备份和增强型备份选项之间进行选择。虽然实例无法同时使用这两种备份选项,但 Cloud SQL 可让您根据需要在这两种备份选项之间切换。

下表简要介绍了每种备份选项可用的功能:

特性 标准备份 增强型备份
备份保险柜 -
使用保留锁定强制保留 -
在删除项目时保留备份 -
跨项目集中管理备份 -
备份保留期限 1 年 无限制
自动备份时间表 每天 每小时、每天、每周、每月、每年
使用日志进行时间点恢复
跨区域备份和恢复。 -
按需备份
多区域备份 -
在删除实例时保留所有备份
实例删除中的最终备份
CMEK 支持 -

如需详细了解这些备份选项,请参阅标准备份增强型备份

增强型备份

借助增强型备份,您可以使用 Backup and DR 在一个中央备份项目中管理和存储跨各个项目的 Cloud SQL 实例的所有备份。Backup and DR 可在一个位置集中管理、监控和报告日常备份操作。备份存储在备份保险柜中,这是 Google 管理的安全且独立的存储资源,由 Backup and DR 管理,备份方案管理备份和恢复设置。这样可提供独立于源项目的不可更改且不可删除的备份。如需详细了解备份如何与 Backup and DR 搭配使用,请参阅 Backup and DR 概览

增强型备份使用 Backup and DR 创建一个集中式备份项目,您可以在其中跨 Cloud SQL 实例管理备份方案备份保险柜。这些方案可以跨多个项目进行关联。

将备份方案附加到 Cloud SQL 实例时,现有的备份和恢复设置会被备份方案覆盖。包含备份和恢复设置的方案存储在集中式备份项目中,当方案在 Cloud SQL 实例上处于有效状态时创建的任何备份都存储在备份项目中的备份保险柜中。

由于 Backup and DR 在单独的 Google Cloud 项目中进行管理,因此当源项目或工作负载项目删除时,备份会受到保护。角色和职责由 Backup and DR Admin 管理,与 Cloud SQL Admin 角色和职责分开。

您可以在实例删除后保留备份,也可以在实例删除之前对其进行最终备份。作为增强型备份的一部分而创建的所有备份都可用于在实例处于运行状态时或在实例删除后恢复实例。

备份保留

使用增强型备份时,您可以在备份保险柜中保留备份长达 99 年。备份保险柜的最短强制保留期限为 1 天到 99 年。

备份存储

备份存储在称为备份保险柜的集中位置。备份保险柜是一个安全且独立的存储空间,由 Backup and DR 管理。备份保险柜允许您将备份保留 1 天到 99 年。如需了解详情,请参阅备份保险柜

备份费用

在增强型备份中,备份费用取决于存储在备份保险柜中的备份总大小。这些备份是根据实例关联的备份方案中的备份配置创建的。总费用由 Backup and DR 根据 Backup and DR 价格计算得出。

限制

使用增强型备份时,存在以下限制:

  • 备份保险柜和 Cloud SQL 实例必须位于同一区域。
  • 如需更改实例的关联备份方案,需要先删除现有的备份方案关联来将实例更改为标准备份,然后再关联新的备份方案。
  • 您无法为使用增强型备份的实例创建灾难恢复 (DR) 副本
  • 如果您的实例具有灾难恢复 (DR) 副本,则无法为该实例启用增强型备份。
  • 您无法将备份方案与副本实例关联。
  • 如果您的实例使用增强型备份,则无法将该实例降级为副本。

标准备份

标准备份是由 Cloud SQL 与您的 Cloud SQL 实例一起管理的备份。Cloud SQL 备份是增量备份,仅包含自上次备份以来发生了更改的数据。默认情况下,除了按需备份之外,Cloud SQL 还为每个 Cloud SQL 企业版实例保留 7 个自动备份,并为每个 Cloud SQL 企业 Plus 版实例保留 15 个自动备份。您可以配置要保留的自动备份数量(从 1 个到 365 个)。

删除实例时,您可以在删除实例时保留所有备份,并对数据进行最终备份。这样,您就可以重新创建您删除的任何实例。不过,如果您未保留备份或在删除实例之前未执行最终备份,Cloud SQL 会自动删除所有实例备份。

备份保留

按需备份不会自动删除。此类备份会一直留存,直到您手动删除它们,或者直到实例被删除为止。由于按需备份不会自动删除,因此可能会对您的结算费用产生长期影响。

通过在实例的备份设置中配置保留期限,自动备份可以保留 1 到 365 天。虽然事务日志以天为单位计数,但不能保证自动备份会在一天内进行。

如果您为按需备份和自动备份启用了“在实例删除后保留备份”,则这些备份会遵循相同的保留设置:自动备份的保留期限为 1 到 365 天,按需备份的保留期限为无限期。如需了解详情,请参阅在删除实例后保留备份

日志每天完全清除一次,不会持续清除。当日志保留天数与备份数量相同时,可能导致日志保留不足。例如,如果日志保留天数设置为 7 天并且备份保留数量设置为七次备份,则意味着将保留六到七天的日志。

我们建议将备份数量设置为日志保留天数至少加 1,以保证日志至少保留指定的最少天数。

如需详细了解如何为新实例或现有实例启用保留的备份,请参阅管理保留的备份。如需详细了解如何从保留的备份恢复实例,请参阅从保留的备份恢复

备份存储

在单区域配置中,备份会在该区域内的不同可用区之间复制。在多区域配置中,建议备份与实例位于同一区域,以最大限度地缩短延迟时间,并避免因组织政策或基于位置的限制而导致备份失败。

对于采用高可用性 (HA) 配置或非高可用性配置的实例,备份都存储在同一位置。在高可用性配置中,即使发生故障切换或切换到次要实例,您仍然可以访问实例的备份。

您可以按如下方式定义备份位置:

默认备份位置

如果未指定存储位置,则备份将存储地理位置最靠近 Cloud SQL 实例位置的多区域中。例如,如果 Cloud SQL 实例位于 us-central1,则默认情况下,备份存储在 us 多区域中。但是,像 australia-southeast1 这样的默认位置不在多区域范围之内。最接近的多区域是 asia

自定义备份位置

Cloud SQL 可让您为备份数据选择自定义位置。如果您的组织需要遵守的数据驻留法规要求您将备份保留在特定地理边界内,那么这项功能就非常有用。如果您的组织有此类要求,它可能会使用资源位置限制组织政策。启用此政策后,如果您尝试使用的地理位置不符合此政策,您会在备份页面上看到提醒。如果您看到此提醒,则需要将备份位置更改为该政策允许的位置。

为备份选择自定义位置时,请考虑以下事项:

  • 费用:实例中的一个集群可能位于比其他集群费用更低的区域。
  • 邻近应用服务器:您可能需要将备份存储到尽可能靠近传送应用的位置。
  • 存储空间利用率:随着备份不断增大,您需要有足够的存储空间来存储备份。根据工作负载,您可能有不同大小或不同磁盘用量的集群。这可能会影响您对集群的选择。

如需查看有效地区值的完整列表,请参阅实例位置。如需查看多地区值的完整列表,请参阅多地区位置

如需详细了解如何设置备份位置以及查看实例备份位置,请参阅为备份设置自定义位置查看备份位置

备份速率限制

Cloud SQL 限制数据磁盘上的备份操作的速率。每个项目每个实例每 50 分钟最多执行五项备份操作。如果备份操作失败,则不计入此配额。如果达到限制,操作将失败并显示错误消息,指示何时可以重试。

我们来看看 Cloud SQL 如何对备份执行速率限制。

Cloud SQL 使用存储桶中的令牌来确定任一时段内可以执行多少次备份操作。每个实例都有一个存储桶。存储桶中最多有五个令牌可用于备份操作。每隔 10 分钟,系统就会向存储桶添加一个新令牌。如果存储桶已满,则令牌会溢出。

每次您发出备份操作时,系统都会从存储桶授予令牌。如果操作成功,则系统会从存储桶中移除令牌。如果失败,令牌会返回到存储桶。下图展示了其工作原理:

令牌的工作原理

备份与导出

备份由 Cloud SQL 根据保留政策进行管理,并与 Cloud SQL 实例分开存储。Cloud SQL 备份与导出的数据不同,后者会上传到 Cloud Storage,您可以在其中管理其生命周期。备份包含实例的整个磁盘。对于导出操作,您可以选择特定的内容。

备份和恢复操作不能用于将数据库升级到更高版本。您只能从备份恢复到与备份时具有相同数据库版本的实例。

如需升级到更高版本,请考虑使用 Database Migration Service导出数据库,然后导入到新的 Cloud SQL 实例。

备份费用

默认情况下,除了按需备份之外,Cloud SQL 还为每个 Cloud SQL 企业版实例保留 7 个自动备份,并为每个 Cloud SQL 企业 Plus 版实例保留 15 个自动备份。您可以配置要保留的自动备份数量(从 1 个到 365 个)。与其他类型的实例相比,我们的备份存储费用更低。

如需详细了解与备份相关的价格,请参阅价格页面

备份大小

除第一次备份外,所有 Cloud SQL 备份都是增量备份。这些备份仅包含自上次备份以来发生了更改的数据。最早备份的大小与数据库大小相似,但后续备份的大小取决于数据的更改速率。删除最早的备份后,下一个最早备份的大小将会增加,成为完整备份,并进行调整以捕获备份之间的差异。后续的每个增量备份也会更新为与新的完整备份一致。

您可以查看单个备份的大小。备份大小表示每个备份的计费大小。

备份和数据完整性检查

Cloud SQL 会自动在后台执行定期数据库完整性检查,以识别任何潜在的数据完整性问题。这些检查作为离线流程完成,会恢复客户启动的备份或恢复备份的采样。

问题排查

问题 问题排查
您无法查看当前操作的状态。 Google Cloud 控制台仅在操作完成后报告成功或失败,而不会显示警告或其他更新。

运行 gcloud sql operations list 命令以列出给定 Cloud SQL 实例的所有操作。

您想要了解发起按需备份操作的人员。 界面未显示开始操作的用户。

查看日志并按文本进行过滤以查找用户。您可能需要对私密信息使用审核日志。相关日志文件包括:

  • cloudsql.googleapis.com/postgres.log
  • 如果启用了 Cloud Audit Logs,并且您具有查看这些日志的必要权限,那么 cloudaudit.googleapis.com/activity 也可以使用。
实例被删除后,您将无法再备份该实例。

如果您删除实例而没有对数据进行最终备份,则无法恢复数据。但是,如果您恢复实例,Cloud SQL 也会恢复备份。如需详细了解如何恢复已删除的实例,请参阅在删除实例后保留备份

如果您已完成导出操作,请创建新实例,然后执行导入操作以重新创建数据库。导出数据将写入 Cloud Storage,导入数据从此处进行读取。

自动备份停滞了数小时,无法取消。 备份可能需要很长时间,具体取决于数据库大小。

如果您确实需要取消该操作,可以要求客户服务对实例执行 force restart

如果 SQL 转储文件中引用的一个或多个用户不存在,恢复操作可能会失败。 在恢复 SQL 转储之前,拥有对象或获得了对转储数据库中的对象权限的所有数据库用户都必须存在于目标数据库中。否则,恢复操作将无法使用原始所有权或权限重新创建对象。

在恢复 SQL 转储之前,先创建数据库用户

您想要将自动备份的天数从 7 天增加到 30 天,或更长时间。 您可以配置要保留的自动备份的数量(从 1 到 365)。系统会根据配置的保留期限值定期删除自动备份。遗憾的是,这也意味着当前可见的备份是所有可以用于恢复的自动备份。

如需无限期地保留备份,您可以创建按需备份,因为它们的删除方式与自动备份不同。按需备份会无限期保留。也就是说,按需备份会一直保留,直到被删除或它们所属的实例被删除为止。由于该类型的备份不会自动删除,因此可能会影响结算。

自动备份失败,但您未收到电子邮件通知。 如需让 Cloud SQL 通知您备份的状态,请配置基于日志的提醒
实例反复失败,因为它在故障状态和备份恢复状态之间循环。恢复后尝试连接并使用数据库失败。
  • 打开的连接可能过多。造成连接过多的原因可能是由于在连接过程中发生错误,而没有用于清除无效连接的 autovacuum 设置。
  • 如果任何自定义代码使用的重试逻辑不会在几次失败后停止,则可能会发生循环。
  • 流量可能过多。使用连接池和其他最佳连接做法

可以尝试的操作:

  1. 验证数据库是否是autovacuum 设置的
  2. 检查是否在自定义代码中设置了任何连接重试逻辑。
  3. 关停流量,直到数据库恢复,然后缓慢恢复流量。
您发现执行备份/恢复操作时丢失数据。 表创建为未记录。例如:

CREATE UNLOGGED TABLE ...

从备份中还原时不包含这些表:

  • 在高可用性实例上,未记录的表的内容无法进行故障切换。
  • 未记录的表在 postgres 崩溃后无法继续存在。
  • 未记录的表不会被复制到读取副本。
  • 在备份还原期间,系统会自动擦除未记录的表。

解决方法是,如果您想要通过备份恢复这些表,请避免使用未记录的表。如果您要从包含未记录的表的数据库进行恢复,则可以将数据库转储到一个文件,并在将转储文件修改为 ALTER TABLE 后将数据重新加载到这些表上的 SET LOGGED

如果您选择在删除实例时进行最终备份,则无法删除实例。 删除实例时,您需要确认是否要在删除实例之前对实例进行最终备份。如果您使用 final-backup 实例设置启用了最终备份,那么在删除实例时所做的选择必须与您为实例启用最终备份时设置的最终备份实例配置相匹配。如需缓解此问题,请执行以下其中一项操作:
  • 将最终备份值设置为与实例的现有备份配置一致。
  • 删除实例时,将“最终备份”字段留空。如果您将此字段留空,Cloud SQL 会采用实例设置中设置的最终备份配置来执行最终备份并定义其保留期限。
如需查看实例的最终备份实例配置,请参阅查看实例信息
在成功创建具有最终备份设置的主实例后,无法创建副本实例。 如果您创建的新实例启用了最终备份实例设置,则必须更新最终备份组织政策,以仅将备份配置应用于主实例。 副本实例不支持最终备份。
如需了解详情,请参阅 Cloud SQL 组织政策

后续步骤