已知问题

本页面列出了 Cloud SQL for PostgreSQL 的已知问题,以及可以避免这些问题或从这些问题中恢复的方法。

如果您在自己的实例中遇到问题,请确保同时查看诊断问题中的信息。

实例连接问题

  • SSL/TLS 证书已过期

    如果您的实例配置为使用 SSL,请转到 Google Cloud 控制台中的“Cloud SQL 实例”页面并打开该实例。打开实例的连接页面,选择安全标签页,并确保您的服务器证书有效。如果证书已过期,您必须添加一个新证书并轮替至该证书。

  • Cloud SQL Auth 代理版本

    如果您使用 Cloud SQL Auth 代理建立连接,请确保使用的是最新版本。如需了解详情,请参阅保持 Cloud SQL Auth 代理为最新版本

  • 无权连接

    如果您尝试连接到该项目中不存在的实例,则错误消息将仅指示您无权访问该实例。

  • 无法创建 Cloud SQL 实例

    如果您看到 Failed to create subnetwork. Router status is temporarily unavailable. Please try again later. Help Token: [token-ID] 错误消息,请尝试再次创建 Cloud SQL 实例。

  • 以下仅适用于默认用户('postgres'): gcloud sql connect --user

    如果您尝试使用任何其他用户连接此命令,则错误消息会显示 FATAL: database 'user' does not exist。解决方法是使用默认用户('postgres')进行连接,然后使用 "\c" psql 命令以其他用户身份重新连接。

  • 启用 IAM 数据库代理身份验证后,PostgreSQL 连接挂起。

    使用 TCP 套接字启动 Cloud SQL 身份验证代理并带有 -enable_iam_login 标志时,PostgreSQL 客户端在 TCP 连接期间会挂起。一种解决方法是在 PostgreSQL 连接字符串中使用 sslmode=disable。例如:

    psql "host=127.0.0.1 dbname=postgres user=me@google.com sslmode=disable"

    另一个解决方法是使用 Unix 套接字启动 Cloud SQL Auth 代理。此解决方法会关闭 PostgreSQL SSL 加密,让 Cloud SQL Auth 代理改为执行 SSL 加密。

管理问题

  • 一次只能对实例运行一个长时间运行的 Cloud SQL 导入或导出操作。启动操作时,请确保不需要对实例执行其他操作。此外,启动操作后,您可以取消操作

    PostgreSQL 在单个事务中导入数据。因此,如果您取消导入操作,则 Cloud SQL 不会保留来自导入的数据。

    数据导入和导出问题

    • 如果您的 Cloud SQL 实例使用 PostgreSQL 17,但您的数据库使用 PostgreSQL 16 及更低版本,则无法使用 Cloud SQL 将这些数据库导入到您的实例中。为此,请使用 Database Migration Service

    • 如果您使用 Database Migration Service 将 PostgreSQL 17 数据库导入 Cloud SQL,则该数据库会作为 PostgreSQL 16 数据库导入。

    • 对于 PostgreSQL 版本 15 及更高版本,如果目标数据库是通过 template0 创建,则导入数据可能会失败,并且您可能会看到 permission denied for schema public 错误消息。如需解决此问题,请运行 GRANT ALL ON SCHEMA public TO cloudsqlsuperuser SQL 命令向 cloudsqlsuperuser 用户提供公共架构特权。

    • 导出许多大型对象会导致实例无响应

      如果数据库包含许多大型对象 (blob),则导出数据库可能会占用大量内存,从而导致实例无响应。即使 blob 为空,也可能发生这种情况。

    • Cloud SQL 不支持自定义表空间,但支持从自定义表空间迁移到目标实例中的默认表空间 pg_default。例如,如果您拥有一个名为 dbspace 且位于 /home/data 的表空间,则迁移后,dbspace 中的所有数据都会迁移到 pg_default。但是,Cloud SQL 将不会在其磁盘上创建名为“dbspace”的表空间。

    • 如果您要尝试从大型数据库(例如,具有 500 GB 或更多数据的数据库)导入和导出数据,则导入和导出操作可能需要很长时间才能完成。此外,在导入或导出过程中,您无法执行其他操作(例如备份操作)。提高导入和导出过程性能的一个可能选项是使用 gcloud 或 API 恢复之前的备份

    • Cloud Storage 支持最大 5 TB 的单个对象大小。如果您的数据库大于 5 TB,则导出到 Cloud Storage 的操作会失败。在这种情况下,您需要将导出文件细分为几个较小的部分。

    事务日志和磁盘增长

    日志每天完全清除一次,不会持续清除。当将日志保留天数配置为与备份数量相同时,可能会丢失一天的记录,具体取决于备份的发生时间。例如,如果日志保留天数设置为 7 天并且备份保留数量设置为七次备份,则意味着将保留六到七天的日志。

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

    具有以下区域名称的实例在某些上下文中不正确显示,如下所示:

    • us-central1 显示为 us-central
    • europe-west1 显示为 europe
    • asia-east1 显示为 asia

    此问题在以下情况下发生:

    • Cloud Monitoring 中的提醒
    • Metrics Explorer
    • Cloud Logging

    您可以使用资源元数据标签来缓解 Cloud Monitoring 和 Metrics Explorer 中提醒的问题。使用系统元数据标签 region,而不是 cloudsql_database 受监控的资源标签 region