排查 Cloud SQL 问题

本页面包含一些排查 Cloud SQL 问题的提示,这些提示不特定于任何一种数据库引擎。

本页面包含以下主题:

备份与恢复

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

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

无法查看当前操作状态

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

可能的原因

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

可以尝试的操作

连接到数据库并运行 SHOW WARNINGS


找不到操作发起者

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

可能的原因

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

可以尝试的操作

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

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


删除实例后无法执行备份

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

可能的原因

实例已删除。

可以尝试的操作

  • 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 消息。备份失败时,系统不会发送电子邮件通知。

可以尝试的操作

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

克隆

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

针对此问题… 可能的原因… 请尝试以下操作…
克隆失败并显示 constraints/sql.restrictAuthorizedNetworks 错误。 被已获授权的网络配置阻止。 尝试以下某一选项

克隆失败并显示 constraints/sql.restrictAuthorizedNetworks 错误

克隆失败并显示 constraints/sql.restrictAuthorizedNetworks 错误。

可能的原因

克隆操作被 Authorized Networks 配置阻止。在 Google Cloud Console 的“连接”部分中为公共 IP 地址配置 Authorized Networks,并且出于安全考虑,不允许克隆。

可以尝试的操作

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

连接

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

针对此问题… 可能的原因… 请尝试以下操作…
Unauthorized to connect 错误。 可能存在多个根本原因 请参阅可以尝试的操作
网络关联失败。 未在项目中启用 Service Networking API 在项目中启用 Service Networking API
Remaining connection slots are reserved 已达到连接数上限。 增加 max_connections 标志
Set Service Networking service account as servicenetworking.serviceAgent role on consumer project 服务帐号的网络权限缺失或不正确。 停用 Service Networking API 并重新启用

连接被取消

您看到错误消息 Got an error reading communication packetsAborted connection xxx to db: DB_NAME

可能的原因

  • 网络不稳定。
  • 没有对 TCP keep-alive 命令的响应(客户端或服务器无响应,可能超载)。
  • 超出了数据库引擎的连接生命周期,服务器终止了该连接。

可以尝试的操作

应用必须能够容忍网络故障并遵循最佳做法,例如连接池和重试。大多数连接池程序会尽可能捕获这些错误。否则,应用必须正常重试或失败。

对于连接重试,我们建议使用以下方法:

  1. 指数退避算法。以指数方式增加每次重试之间的时间间隔。
  2. 另外,增加随机退避时间。
结合使用这些方法有助于减少限制。


没有连接权限

您看到错误消息 Unauthorized to connect

可能的原因

由于在多个级层进行授权,因此可能存在多个原因。

  • 在数据库级层,数据库用户必须存在且其密码必须一致。
  • 在项目级,用户可能缺少正确的 IAM 权限。
  • 在 Cloud SQL 级层,根本原因可能取决于您连接到实例的方式。如果您要通过公共 IP 直接连接到实例,则连接的来源 IP 必须在实例已获授权的网络中。

    默认允许专用 IP 连接,除非您从非 RFC 1918 地址进行连接。非 RFC 1918 客户端地址必须配置为已获授权的网络

    默认情况下,Cloud SQL 不会从 VPC 中获知非 RFC 1918 子网路由。您需要将网络对等互连更新到 Cloud SQL,以导出所有非 RFC 1918 路由。例如:

    gcloud compute networks peerings update cloudsql-[mysql/postgres]-googleapis-com --network=NETWORK --export-subnet-routes-with-public-ip --project=PROJECT
    

    如果您要通过 Cloud SQL 代理进行连接,请确保正确设置了 IAM 权限

  • 在网络级层,如果 Cloud SQL 实例使用公共 IP 地址,则连接的来源 IP 地址必须在已获授权的网络中。

可以尝试的操作

  • 检查用户名和密码。
  • 检查用户的 IAM 角色和权限。
  • 如果使用公共 IP,请确保来源在已获授权的网络中。

网络关联失败

您看到错误消息 Error: Network association failed due to the following error:在使用方项目中将 Service Networking 服务帐号设置为 servicenetworking.serviceAgent 角色。

可能的原因

未在项目中启用 Service Networking API

可以尝试的操作

在您的项目中启用 Service Networking API。如果您在尝试为 Cloud SQL 实例分配专用 IP 地址时看到此错误并且您使用共享 VPC,则还需要为宿主项目启用 Service Networking API


剩余连接槽已预留

您看到错误消息 FATAL: remaining connection slots are reserved for non-replication superuser connections

可能的原因

已达到连接数上限。

可以尝试的操作

修改 max_connections 标志的值。如果将 max_connections 增加到超过特定值,则可能会导致失去服务等级协议 (SLA) 支持


在使用方项目中将 Service Networking 服务帐号设置为 servicenetworking.serviceAgent 角色

您看到错误消息 set Service Networking service account as servicenetworking.serviceAgent role on consumer project.

可能的原因

用户或服务帐号权限不正确。自动设置脚本(例如 Terraform 配置脚本)中可能会发生这种情况。

可以尝试的操作

如需修复服务权限,请停用 Service Networking API,等待五分钟,然后重新启用。

创建实例

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

针对此问题… 可能的原因… 请尝试以下操作…
Internal error 缺少 Service Networking 服务帐号。 停用 Service Networking API,然后重新启用
Terraform 实例创建失败。 Terraform 配置错误。 检查并修复 Teraform 配置文件
Terraform 脚本中出现 HTTP Error 409 另一个操作已在进行中。 修复 Terraform 脚本,等待每项操作完成。
Unknown error 尝试创建的实例与最近删除的实例同名。或者尝试使用新的专用 IP 地址范围同时创建多个实例。 为该实例使用其他名称,或等到实例删除一周后再使用。使用不同名称连续重新创建失败的实例

内部错误

您看到错误消息 {"ResourceType":"sqladmin.v1beta4.instance", "ResourceErrorCode":"INTERNAL_ERROR","ResourceErrorMessage":null}

可能的原因

服务项目可能缺少此功能所需的 Service Networking 服务帐号。

可以尝试的操作

如需修复服务权限,请停用 Service Networking API,等待五分钟,然后重新启用。


Terraform 实例创建失败

Terraform 实例创建失败。

可能的原因

这通常是 Terraform 脚本本身的问题。

可以尝试的操作

检查并修复 Terraform 配置文件。


Terraform 脚本中出现 409 错误

您在 Terraform 脚本中看到错误消息 HTTP Error 409

可能的原因

Operation failed because another operation was already in progress

可以尝试的操作

对此脚本进行修改以停止执行,直到每项实例操作完成。让脚本轮询并等到针对前一个操作 ID 返回 200,然后再继续下一步。


未知错误

尝试创建实例时,您会看到类似于 Cloud SQL creation failed, error UNKNOWN 的错误消息。

可能的原因

您很可能正在尝试重新使用最近删除的实例的名称。实例名称在删除后的一周内不能重新使用。或者,当使用 Unknown error 仅创建了第一个实例而其他实例失败时,您尝试使用新的专用 IP 地址范围同时创建多个实例。

可以尝试的操作

为该实例使用其他名称,或者等待一周,然后使用该名称创建新实例。连续创建多个实例,而不是同时创建。

高可用性

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

针对此问题… 可能的原因… 请尝试以下操作…
找不到手动故障转移的指标。 只有自动故障转移会纳入指标
CPU 和 RAM 使用率接近 100% 实例机器大小对于负载而言过小。 升级实例机器大小

找不到手动故障转移的指标

您执行了手动故障转移,但在自动故障转移指标的 Metrics Explorer 中找不到相应的条目。

可能的原因

只有自动故障转移会纳入指标。手动启动的故障转移不会纳入指标。

可以尝试的操作


CPU 和 RAM 使用率接近 100%

Cloud SQL 实例资源(CPU 和 RAM)使用率接近 100%,导致高可用性实例发生故障。

可能的原因

实例机器大小对于负载而言过小。

可以尝试的操作

对实例进行修改以升级为更大的机器,从而获得更多 CPU 和内存。

导入和导出

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

针对此问题… 可能的原因… 请尝试以下操作…
无法查看当前操作状态。 用户界面仅显示成功或失败。 使用相关数据库命令了解详情。
导出时间太长。 Cloud SQL 不支持并发同步操作。 使用导出分流。了解详情
导入时间太长。 过多的有效连接可能会干扰导入操作。 关闭未使用的连接,或者在开始执行导入操作之前重启 Cloud SQL 实例。
导入失败。 导出的文件可能包含尚不存在的数据库用户。 在导入之前先创建数据库用户
连接在导出操作期间关闭。 查询必须在前 7 分钟内生成数据。 手动测试查询。了解详情
导出过程中出现未知错误。 可能存在带宽问题。 确保实例和 Cloud Storage 存储分区位于同一区域
您想要自动执行导出。 Cloud SQL 不提供自动执行导出的方法。 构建您自己的流水线来执行此功能。了解详情
ERROR_RDBMS: system error occurred Cloud Storage 权限或不存在的表。 检查权限或确保表存在

无法查看操作状态

您无法查看正在进行的操作的状态。

可能的原因

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

可以尝试的操作

连接到数据库并运行 SHOW WARNINGS


导出时间太长

导出时间太长,阻止了其他操作。

可能的原因

Cloud SQL 不支持并发同步操作。

可以尝试的操作

尝试一次导出较小的数据集。


导入时间太长

导入时间太长,阻止了其他操作。

可能的原因

过多的有效连接可能会干扰导入操作。连接会消耗 CPU 和内存,从而限制可用的资源。

可以尝试的操作

关闭未使用的操作。检查 CPU 和内存用量,以确保有大量的可用资源。确保将最多资源用于导入操作的最佳方法是在开始执行操作之前重启实例。重启后,系统会执行以下操作:

  • 关闭所有连接。
  • 结束任何可能正在消耗资源的任务。


导入失败

如果导出的 SQL 转储文件中引用的一个或多个用户不存在,则导入会失败。

可能的原因

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

可以尝试的操作

在导入 SQL 转储之前,先创建数据库用户


连接在导出操作期间关闭

连接在导出操作期间关闭。

可能的原因

与 Cloud Storage 的连接可能超时,因为在导出中运行的查询在导出启动后的 7 分钟内未生成任何数据。

可以尝试的操作

手动测试查询,方法是从任何客户端连接,然后使用以下命令将查询的输出发送到 STDOUT:

COPY (INSERT_YOUR_QUERY_HERE) TO STDOUT WITH ( FORMAT csv, DELIMITER ',', ENCODING 'UTF8', QUOTE '"', ESCAPE '"' )

这是预期行为,因为启动导出后,客户端应立即开始发送数据。在未发送数据情况下保持连接最终会断开连接,最后导致导出失败,使操作处于不确定状态。此外,以下是来自 gcloud 的错误消息:

operation is taking longer than expected


导出过程中出现未知错误

您在尝试将数据库导出到 Cloud Storage 存储分区时看到错误消息 Unknown error

可能的原因

转移可能由于带宽问题失败。

可以尝试的操作

Cloud SQL 实例可能与 Cloud Storage 存储分区位于不同区域。从一个大洲读取数据并将数据写入另一个大洲涉及很多网络用量,可能会导致类似的问题。检查实例和存储分区所在的区域。


想要自动执行导出

您想要自动执行导出。

可能的原因

Cloud SQL 不提供自动执行导出的方法。

可以尝试的操作

此处所述,您可以使用以下 Google Cloud 产品构建自己的自动导出系统:Cloud Scheduler、Pub/Sub、Cloud Functions。


出现 ERROR_RDBMS 系统错误

您看到错误消息 [ERROR_RDBMS] system error occurred

可能的原因

  • 用户可能没有所需的所有 Cloud Storage 权限。
  • 数据库表可能不存在。

可以尝试的操作

  1. 检查核实您对存储分区至少拥有 WRITER 权限,并且对导出文件至少拥有 READER 权限。如需详细了解如何在 Cloud Storage 中配置访问权限控制,请参阅创建和管理访问权限控制列表
  2. 确保表已存在。如果表已存在,请确认您对存储分区拥有正确的权限。

Logging

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

针对此问题… 可能的原因… 请尝试以下操作…
Logging 占用了大量 CPU 和内存。 Logging 需要进行调整。 尝试调整日志记录资源使用情况
未找到审核日志。 用户身份验证。 检查用户角色和权限
在日志中找不到操作信息。 审核日志未启用。 启用审核日志记录

Logging 占用了大量 CPU 和内存

Logging 占用了大量 CPU 和内存。

可能的原因

Logging 使用情况需要进行调整。

可以尝试的操作

log_statement 标志可以设置为“none”,logging_collector 标志可以设置为“off”。如果仍在进行日志记录,则可能存在其他与日志相关的标志可以调整。您可以修改实例来改动这些标志。


审核日志记录

您为 Cloud SQL 启用了审核日志记录,但在 Cloud Logging 中找不到任何审核日志

可能的原因

只有当操作是经过身份验证的用户进行的 API 调用(用于创建、修改或读取用户创建的数据),或者操作访问配置文件或资源元数据时,才会写入数据访问日志。

可以尝试的操作

检查执行操作的用户的角色和权限。


在日志中找不到操作信息

您想要详细了解某项操作。例如,用户已被删除,但您找不到谁执行了此操作。日志显示操作已开始,但未提供任何更多信息。

可能的原因

您必须为要记录的详细个人身份信息 (PII) 等启用审核日志记录。

可以尝试的操作

在项目中启用审核日志记录

管理实例

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

针对此问题… 可能的原因… 请尝试以下操作…
临时存储使自动存储空间增加。 启用了自动存储空间。 重启会删除临时文件,但不会减少存储空间。只有客户服务才能重置实例大小。了解详情
数据被自动删除。 有一个脚本正在某个位置运行并执行此操作。 尝试查找该脚本
无法删除实例。 可能存在多个根本原因 可以采用多个解决方案
实例因临时数据大小较大而停滞。 一次创建的临时表过多。 重启实例,然后尝试使用相关缓解方法
升级过程中出现严重错误。 可能存在多个原因。 日志可能会显示更多信息。您可能需要与客户服务联系,以强制重启。
实例在磁盘空间用尽后重启时停滞。 未启用存储空间自动扩容功能。 启用存储空间自动扩容功能
重启时关停速度缓慢。 60 秒后未终止的未完成连接可能会导致关停异常。 仅使用持续时间少于 60 秒的连接
Access denied for user 用户身份验证,或者可能是 SSL/TLS 证书已过期。 检查用户和证书状态。
无法删除用户。 有可能是用户拥有数据库中的对象。 您可能需要删除或重新分配对象
无法将专用 IP 地址分配给共享 VPC 中的现有实例。 实例地址在实例创建后与其项目相关联。 创建新的 Cloud SQL 实例来替换现有实例。
某些查询运行速度缓慢。 特定于数据库的问题或网络延迟。 查看相关建议
表明内存不足,但监控图表未显示。 某些 RAM 可能会被内部开销进程占用。 确保实例对您的工作负载拥有足够的开销


临时存储使自动存储空间增加

临时表使存储空间用量增加,自动存储空间也增加。

可能的原因

启用了自动存储空间。

可以尝试的操作

重启可以删除临时表,不会减小自动增加的存储空间。


数据被自动删除

您发现数据会定期被自动删除。

可能的原因

很有可能是某个脚本正在您的环境中的某个位置运行。

可以尝试的操作

查看删除时间点前后的日志,看看是否有在信息中心或其他自动化进程中运行的恶意脚本。


无法删除实例

您看到错误消息 ERROR: (gcloud.sql.instances.delete) HTTP Error 409: The instance or operation is not in an appropriate state to handle the request,或者实例可能具有 INSTANCE_RISKY_FLAG_CONFIG 标志状态。

可能的原因

  1. 另一项操作正在进行中。
  2. 只要使用至少一个 beta 标志,就会触发 INSTANCE_RISKY_FLAG_CONFIG 警告。

可以尝试的操作

  1. Cloud SQL 操作不会并发运行。等待其他操作完成。
  2. 移除存在风险的标志设置并重启实例。

系统因临时数据大小较大而停滞

系统因临时数据大小较大而停滞。

可能的原因

系统可以一次创建多个临时表,具体取决于查询和负载。

可以尝试的操作

遗憾的是,除了重启该服务,没有其他任何方法能缩小 ibtmp1 文件。

一种缓解方法是使用 ROW_FORMAT=COMPRESSED 标志创建临时表,这会将临时表存储在临时文件目录下的单表文件表空间中。但是,这样做的缺点是为每个临时表创建和移除单表文件表空间会降低性能。


升级过程中出现严重错误

升级实例上的资源时,您看到错误消息 ERROR_INTERNAL_FATAL

可能的原因

可能存在多个原因。

可以尝试的操作

日志可能会显示更多信息,但在任何情况下都可能需要客户服务来强制重新创建实例。


实例在磁盘空间用尽后重启时停滞

实例在磁盘空间用尽后重启时停滞

可能的原因

未启用存储空间自动扩容功能。

可以尝试的操作

如果实例的存储空间不足,并且未启用存储空间自动扩容功能,则实例将进入离线状态。为避免此问题,您可以对实例进行修改,以启用存储空间自动扩容功能。



重启时关停速度缓慢

重启时关停速度缓慢。

可能的原因

实例关停时,任何未在 60 秒内终止的未完成连接都会导致关停异常。

可以尝试的操作

通过仅使用持续时间少于 60 秒的连接,可以避免大多数异常关停,包括来自数据库命令提示符的连接。如果您将这些连接保持打开状态数小时或数天,则关停可能会异常。


用户访问被拒绝

您看到错误消息 Access denied for user 'XXX'@'XXX' (using password: XXX)

可能的原因

可能存在多个根本原因,包括:

  • 用户名(或密码)不正确。
  • 用户正在通过 @XXX 以外的其他网址进行连接。
  • 用户对要尝试连接的数据库没有正确的权限。

可以尝试的操作

  • 验证用户名和相应的密码
  • 检查连接的来源,查看它与用户获得了访问权限的位置是否匹配。
  • 在数据库中检查用户的授予权限。

无法删除用户

您无法删除数据库用户。

可能的原因

用户在数据库中有依赖于该用户的对象。您首先需要删除这些对象或将其重新分配给其他用户。

可以尝试的操作

确定哪些对象依赖于该用户,然后删除这些对象或将其重新分配给其他用户。


无法将专用 IP 地址分配给共享 VPC 中的现有实例

您无法将专用 IP 地址分配给共享 VPC 中的现有实例。

可能的原因

其原因是因为在创建 Cloud SQL 实例后,它会自动关联到租户项目,因此同一项目中的所有 Cloud SQL 实例也会如此。但是,如果创建的实例在共享 VPC 中使用专用 IP,它会关联到与共享 VPC 宿主项目相关的租户项目。

可以尝试的操作

您可以创建一个新的 Cloud SQL 实例来替换现有实例。


某些查询运行速度缓慢

CPU 使用率一直很高。

可能的原因

查询可能会由于多种原因而运行速度缓慢,主要是由于特定数据库方面。可能会涉及 Cloud SQL 的一个原因是当来源(写入或读取)资源和目的地 (Cloud SQL) 资源位于不同区域时发生网络延迟。

可以尝试的操作

请参阅一般性能提示,具体而言:

对于速度缓慢的数据库插入、更新或删除操作,请考虑以下事项:

  • 检查写入者和数据库的位置;长距离发送数据会导致延迟。
  • 检查读取者和数据库的位置;相对于写入性能,延迟对读取性能的影响更大
为了缩短延迟时间,建议您在同一区域中查找来源资源和目的地资源。


表明内存不足,但监控图表未显示

实例失败并报告 Out of memory,但控制台或 {monitoring_name} 图表似乎显示仍然有内存。

可能的原因

除了工作负载以外,其他因素(例如活跃连接和内部开销进程的数量)可能也会影响内存使用量。这些指标不一定会反映在监控图表中。

可以尝试的操作

确保该实例的开销足以满足您的工作负载和一些额外开销。

复制

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

针对此问题… 可能的原因… 请尝试以下操作…
创建时读取副本未开始复制。 启用二进制日志记录后,必须至少已创建一个备份。 启用二进制日志后,等到至少创建了一个备份
无法创建读取副本 - 未知错误。 可能存在多个根本原因。 查看日志以了解详情
磁盘已满。 主实例磁盘大小可能在副本创建期间变满。 将主实例升级为更大的磁盘。
副本实例占用的内存过多。 副本可以缓存经常请求的读取操作。 重启副本实例以收回临时内存空间。
已停止复制。 已达到存储空间上限,且未启用存储空间自动扩容功能。 启用存储空间自动扩容功能
复制延迟一直很高。 可能存在多个不同的根本原因 增加副本的实例大小或减少数据库的负载

创建时读取副本未开始复制

创建时读取副本未开始复制。

可能的原因

主实例必须至少具有一周的二进制日志,否则副本无法开始复制。

可以尝试的操作

等到有足够的二进制日志。


无法创建读取副本 - 未知错误

无法创建读取副本 - unknown error

可能的原因

日志文件中可能有更具体的错误信息。

可以尝试的操作

在 Cloud Logging 中查看日志以找到实际错误。如果错误为 set Service Networking service account as servicenetworking.serviceAgent role on consumer project,则停用 Service Networking API,然后重新启用。此操作会创建继续执行该过程所需的服务帐号。


磁盘已满

error: disk is full

可能的原因

主实例磁盘大小可能在副本创建期间变满。

可以尝试的操作

对主实例进行修改以将其升级为更大的磁盘。


副本实例占用的内存过多

副本实例占用的内存过多。

可能的原因

副本使用临时内存来缓存经常请求的读取操作,这可能会导致其占用的内存多于主实例。

可以尝试的操作

重启副本实例以收回临时内存空间。


已停止复制

已停止复制。

可能的原因

已达到存储空间上限并且 >automatic storage increase is disabled

可以尝试的操作

对实例进行修改以启用 automatic storage increase


复制延迟一直很高

复制延迟一直很高。

可能的原因

写入负载过高,副本无法处理。当副本上的 SQL 线程无法与 IO 线程保持同步时,会发生复制延迟。某些类型的查询和工作负载会导致指定架构出现暂时性或永久性的高复制延迟。以下列出了复制延迟的部分常见原因:

  • 所有表都必须具有唯一键/主键。每次更新此类没有唯一键/主键的表都会导致对副本进行全表扫描。
  • 由于大量更新堆积在副本上,因此 DELETE ... WHERE field < 50000000 等查询会导致基于行的复制出现复制延迟。

可以尝试的操作

对实例进行修改以增加副本的大小,或减少数据库的负载。