备份概览

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

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

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

备份的用途

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

某些操作(如克隆和副本创建操作)也需要启用自动备份以及二进制日志记录功能。

备份费用

默认情况下,Cloud SQL 会为一个实例保留 7 天的自动备份以及所有按需备份。您可以配置要保留的自动备份的数量。与其他类型的实例相比,我们的备份存储费用更低。

如需了解详情,请参阅价格页面

备份与导出

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

备份大小简介

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

备份类型

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

按需备份

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

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

如需查看按需备份操作的状态,请执行以下操作:

  1. 使用 gcloud sql operations list 命令获取操作 ID。
  2. 使用 gcloud sql operations describe 命令获取操作的状态。
或者
  1. 使用 REST operations.list API 调用获取操作 ID
  2. 使用 REST operations.get API 调用获取操作的状态。

自动备份

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

只要实例在备份时段内运行,自动备份就会每天进行,并默认最多保留 7 个最新备份。您可以配置要保留的自动备份数量(从 1 个到 365 个)。

如果实例停止超过 36 小时,则自动备份会停止。您可以通过默认设置更改备份和事务日志保留值。了解详情

备份的存储位置

备份位置包括:

默认备份位置

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

自定义备份位置

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

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

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

自动备份和事务日志保留

自动备份用于恢复 Cloud SQL 实例。自动备份和事务日志的组合用于执行时间点恢复

虽然事务日志以天为单位计数,但不能保证自动备份会在日期边界进行。这些保留设置使用不同的单位。自动备份保留是一个计数,可以设置为 1 到 365 个备份。事务日志保留以天为单位,可以设置为 1 到 7 天。两项设置的默认值均为 7。

下限值可用于测试实例,因为日志和备份的删除速度更快。对于事务日志,磁盘大小不会因下限值而增大。对自动备份保留使用较高的值可让您从更早过去的时间恢复。

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

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

对数据库的高写入活动可能会生成大量事务日志,这可能会占用大量磁盘空间,并可能会导致用于已启用自动增加存储的实例的磁盘用量增加。建议调整实例存储大小以考虑事务日志保留量。

请参阅设置自动备份保留

请参阅设置事务日志保留

能否导出备份?

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

关于特殊备份用户

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

备份对实例操作的影响

对于 MySQL 实例,备份不使用 FLUSH TABLES WITH READ LOCK 标志。这意味着,备份操作不会影响写入和其他操作。

通常,备份会在几秒钟内完成,但如果自上次备份以来有大量数据写入,则备份会需要较长时间才能完成。

如果在尝试备份时存在待处理的操作,则 Cloud SQL 通常会在该时段内进行多次尝试以完成备份。导入、导出、更新(如实例元数据更改)和实例重启等长时间运行的 Cloud SQL 实例操作会阻止创建备份。

在长时间运行的操作(如加载数据)期间,您可以暂时停用自动备份功能。

问题排查

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

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

无法查看当前操作状态

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

可能的问题

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

可以尝试的操作

连接到数据库并运行 SHOW WARNINGS


找不到操作发起者

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

可能的问题

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

可以尝试的操作

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

  • cloudsql.googlapis.com/mysql-general.log
  • cloudsql.googleapis.com/mysql.err
  • 如果启用了 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) 的实例。

可以尝试的操作

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


增加保留自动备份的天数

您想要将自动备份的天数从 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 消息。

可以尝试的操作

您可以通过 REST APIgcloud 命令查找备份的状态。例如,首先列出实例的备份,然后按 ID 描述特定备份:

gcloud sql --project=PROJECT_ID backups list --instance=INSTANCE_ID
gcloud sql --project=PROJECT_ID backups describe BACKUP-ID --instance=INSTANCE_ID

后续步骤