备份概览

本页面介绍了 Cloud SQL 实例备份的工作原理。其中介绍了如何使用备份将数据恢复到相同或不同的实例。

如需查看有关安排备份或创建按需备份的分步说明,请参阅创建和管理按需备份与自动备份

如需简要了解如何使用备份将数据恢复到实例,请参阅使用备份进行恢复

备份的用途

备份可帮助您将丢失的数据恢复到 Cloud SQL 实例。您还可以通过备份恢复存在问题的实例。为包含必要数据的任何实例启用自动备份。备份可防止数据丢失或损坏。

备份费用

Cloud SQL 可为一个实例保留最多 7 个自动备份和所有按需备份。备份所占用的存储空间按折扣费率计费。如需了解详情,请参阅价格页面

备份与导出

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

备份大小简介

Cloud SQL 备份是增量备份。这些备份仅包含自上次备份以来发生了更改的数据。最早备份的大小与数据库的大小相似。后续备份的大小取决于数据的更改速率。删除最早的备份后,下一个最早备份的大小将会增加,因此仍然存在完整备份。

备份类型

Cloud SQL 执行两种类型的备份:

按需备份

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

按需备份不像自动备份那样自动删除。 此类备份会一直留存到您删除它们或其实例被删除为止。由于按需备份不会自动删除,因此如果您不删除此类备份,它们将会长期影响您的结算费用。

自动备份

自动备份使用一个 4 小时的备份时段。备份会在该时段内启动。尽量将备份安排在实例活动最少的时候。

自动备份每天进行一次,并且会保留七天。七天后,系统会删除最早的备份。

备份的存储位置

备份位置包括:

默认备份位置

默认情况下,Cloud SQL 会将备份数据存储在两个地区以实现冗余。一个地区可以是实例所在的地区。另一个地区则应不同。如果一个大洲有两个地区,则备份数据保留在同一大洲。由于澳大利亚只有一个地区,因此悉尼地区的备份数据会存储到亚洲的某个位置,圣保罗地区的备份数据会存储在美国的某个位置。

自定义备份位置

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

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

请参阅为备份设置自定义位置查看备份的位置

能否导出备份?

不可以,您无法导出备份。只能导出实例数据。请参阅从 Cloud SQL 导出数据

关于特殊备份用户

Cloud SQL 会为每个实例创建一个特殊数据库用户 cloudsqladmin,并为其生成唯一的实例专用密码。Cloud SQL 会以 cloudsqladmin 用户身份登录来执行自动备份。

备份对实例操作的影响

写入和其他操作不受备份操作的影响。

问题排查

点击表中的链接可查看详细信息:

针对此问题… 可能的原因… 请尝试以下操作…
无法查看当前操作状态。 用户界面仅显示成功或失败。 使用相关数据库命令了解详情。
找不到操作发起者。 用户界面未显示开始操作的人员。 使用审核日志记录查找。
自动备份期间磁盘空间不足。 实例已达到硬盘空间限制。 检查文件系统大小和配额
删除实例后无法执行备份。 实例已删除。 通过导出重新创建,或者在宽限期内与客户服务联系。
自动备份似乎停滞了。 备份时间与数据库大小相关。 如果您确实需要取消该操作,请与客户服务联系
恢复失败。 转储文件可能包含尚不存在的数据库用户。 在恢复之前先创建数据库用户
操作对此实例无效。 目标实例大小小于来源实例大小。 增加目标实例大小
增加保留自动备份的天数。 仅保留 7 个自动备份。 自行管理手动备份
备份失败时发生未知错误。 备份可能已超时。 请查看这些标志
未接收到有关备份失败的通知。 没有默认通知。 设置自定义提醒
实例在故障状态和备份恢复状态之间循环。 流量过多或打开的连接过多。 验证 autovacuum 设置并重试逻辑
备份中的数据缺失。 备份中不包含未记录的表。 请勿使用未记录的表

无法查看当前操作状态

您无法在 Google Cloud Console 中查看操作状态。

可能的原因

Google Cloud Console 在完成后仅报告成功或失败,不会返回警告。

可以尝试的操作

连接到数据库并运行 SHOW WARNINGS


找不到操作发起者

您想要了解发起按需备份操作的人员。

可能的原因

Google Cloud Console 中的实例操作页面未显示发起操作的人员。

可以尝试的操作

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

  • cloudsql.googleapis.com/postgres.log
  • 如果启用了 Cloud Audit Logs,则 cloudaudit.googleapis.com/activity 可能也可用。


自动备份期间磁盘空间不足

您看到错误消息 [ERROR] InnoDB: Write to file ./ibtmp1 failed at offset XXXX, YYYY bytes should have been written, only 0 were written.

可能的原因

实例在自动备份期间达到了硬限制。临时文件在备份期间可能超出可用磁盘空间。

可以尝试的操作

检查确认磁盘未满,或者磁盘配额未用尽。您可以手动增加磁盘大小或启用存储空间自动扩容功能。


删除实例后无法执行备份

删除实例后,您无法执行备份。

可能的原因

实例已删除。

可以尝试的操作

  • Cloud SQL 实例清除的宽限期为四天。在此期间,客户服务可以重新创建实例。清除实例后,将无法恢复数据。
  • 如果您已完成导出,则可以创建新实例,然后执行导入以重新创建数据库。导出数据将写入 Cloud Storage,导入数据从此处进行读取。

自动备份停滞

自动备份停滞了数小时,无法取消。

可能的原因

备份可能需要很长时间,具体取决于数据库大小。

可以尝试的操作

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


从备份恢复失败

如果 SQL 转储文件中引用的一个或多个用户不存在,恢复操作可能会失败。

可能的原因

在恢复 SQL 转储之前,拥有对象或获得了对转储数据库中的对象权限的所有数据库用户都必须存在。如果不存在,则恢复将无法重新创建具有原始所有权和/或权限的对象。

可以尝试的操作

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


操作对此实例无效

HTTP Error 400: This operation isn't valid for this instance 进行 API 调用时看到错误消息 instances.restoreBackup

可能的原因

您无法将备份恢复到存储空间大小 (XX GB) 小于备份大小 (YY GB) 的实例。

可以尝试的操作

对目标实例进行修改以增加其存储空间大小。


实例在故障状态和备份恢复状态之间循环

实例反复失败,因为它在故障状态和备份恢复状态之间循环。恢复后尝试连接并使用数据库失败。

可能的原因

  • 打开的连接可能过多。造成连接过多的原因可能是由于在连接过程中发生错误,而没有用于清除无效连接的 autovacuum 设置。
  • 如果任何自定义代码使用的重试逻辑不会在几次失败后停止,则可能会发生循环。
  • 流量可能过多。使用连接池和其他最佳连接做法

可以尝试的操作

  1. 验证数据库是否是autovacuum 设置的
  2. 检查是否在自定义代码中设置了任何连接重试逻辑。
  3. 关停流量,直到数据库恢复,然后缓慢恢复流量。

备份中的数据缺失

您发现执行备份/恢复操作时丢失数据。

可能的原因

表创建为未记录。例如:

CREATE UNLOGGED TABLES

这些表不包括在备份中。

可以尝试的操作

请勿使用未记录的表。从 CREATE TABLE 命令中移除 UNLOGGED


增加保留自动备份的天数

您想要将自动备份的天数从 7 天增加到 30 天,或更长时间。

可能的原因

系统仅保留 7 个备份。由于保留备份的费用和空间占用,备份会定期进行清除。遗憾的是,这也意味着当前可见的备份是所有可以用于恢复的自动备份。

可以尝试的操作

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


备份失败时发生未知错误

备份失败,您会看到 Unknown error

可能的原因

创建备份已经超时十分钟。自动备份设置了十分钟的超时时间,备份应在该时间段内完成。

可以尝试的操作

有两个标志会影响备份创建:checkpoint_timeoutcheckpoint_completion_target。在备份开始时,slow 检查点会运行并将 checkpoint_completion_target 乘以 checkpoint_timeout

例如 900 sec * 0.9 sec = 810 sec = 13.5 min。因此会发生超时。在这种情况下,减小 checkpoint_completion_target 的值可以解决该问题。

未接收到有关备份失败的通知

自动备份失败,并且未收到任何通知。

可能的原因

如果自动备份失败,Cloud SQL 实例的 Details 页面中将显示 Operation error 消息。如果备份失败,则不会发送电子邮件通知。

可以尝试的操作

您可以创建 Monitoring 提醒,也可以使用 Error Reporting 通知来设置您自己的自定义通知。

后续步骤