本页面列出了 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 不会保留来自导入的数据。
数据导入和导出问题
对于 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,以保证日志至少保留指定的最少天数。
与 Cloud Monitoring 或 Cloud Logging 相关的问题
具有以下区域名称的实例在某些上下文中不正确显示,如下所示:
us-central1
显示为us-central
europe-west1
显示为europe
asia-east1
显示为asia
此问题在以下情况下发生:
- Cloud Monitoring 中的提醒
- Metrics Explorer
- Cloud Logging
您可以使用资源元数据标签来缓解 Cloud Monitoring 和 Metrics Explorer 中提醒的问题。使用系统元数据标签
region
,而不是 cloudsql_database 受监控的资源标签region
。