排查 Cloud SQL 问题

本页面包含有关对支持的数据库引擎的 Cloud SQL 问题进行故障排除的提示。其中一些提示仅适用于特定的数据库引擎,而其他提示则适用于所有数据库引擎。

如需了解特定数据库引擎的问题排查提示,请参阅各自的相关页面:

检查您的疑问或问题是否已在以下某个页面中得到解决:

本页面包含以下主题:

备份与恢复

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

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

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

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

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

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

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

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

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

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

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

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

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

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

可以尝试的操作:

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

CREATE UNLOGGED TABLE ...

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

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

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

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

克隆

问题 问题排查
克隆失败并显示 constraints/sql.restrictAuthorizedNetworks 错误。 克隆操作被 Authorized Networks 配置阻止。在 Google Cloud 控制台的“连接”部分中为公共 IP 地址配置了 Authorized Networks,并且出于安全考虑,不允许克隆。

如果可以,请移除 Cloud SQL 实例中的所有 Authorized Networks 条目。否则,请创建副本(不包含 Authorized Networks 条目)。

错误消息:Failed to create subnetwork. Couldn't find free blocks in allocated IP ranges. Please allocate new ranges for this service provider. Help Token: [help-token-id].

您正尝试使用 Google Cloud 控制台克隆具有专用 IP 地址的实例,但您未指定要使用的已分配 IP 范围,并且未创建具有指定范围的来源实例。因此,克隆的实例是在随机范围内创建的。

使用 gcloud 克隆实例,并为
--allocated-ip-range-name 参数提供值。如需了解详情,请参阅克隆具有专用 IP 的实例

连接

问题 问题排查