Google Cloud SQL PostgreSQL数据库的连接数相对较少.根据计划,这大概在25到500之间,而Google Cloud SQL中的MySQL限制在250到4000之间,非常快地达到4000.
我们目前为在Kubernetes上运行的不同客户提供了许多试用实例,并由相同的Google Cloud SQL Postgres服务器提供支持.每个实例使用一组单独的数据库,角色和连接(每个服务一个).我们已经达到了我们计划的连接限制(50),我们甚至没有达到内存或CPU限制.连接池似乎不是一个选项,因为连接与不同的用户.我现在想知道为什么限制如此之低以及是否有办法增加限制而不必升级到更昂贵的计划.
由于用于 PostgreSQL 的 Google Cloud SQL 没有为我们提供超级用户(甚至不是 postgres 用户),因此我无法从 pg_stat_activity 看到其他会话正在运行哪些查询,也无法在需要时终止其他会话。
例如:
postgres@testdb=> select pg_terminate_backend(1584);
ERROR: 42501: must be a member of the role whose process is being terminated or member of pg_signal_backend
LOCATION: pg_terminate_backend, misc.c:319
Time: 23.800 ms
Run Code Online (Sandbox Code Playgroud)
没有真正的超级用户访问权限,我们如何在 Cloud SQL PostgreSQL 实例中做这些事情?只有 cloudsqladmin 帐户是超级用户,AFAIK 我不能成为:
postgres@testdb=> \dg
List of roles
Role name | Attributes | Member of
-------------------+------------------------------------------------------------+---------------------
cloudsqladmin | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
cloudsqlagent | Create role, Create DB | {cloudsqlsuperuser} …Run Code Online (Sandbox Code Playgroud) 我已经在 Google Cloud SQL 上设置了一个 PostgreSQL 实例,并且现在将其设置为仅允许 SSL 连接。我可以通过 psql 从我的工作站以及 R Studio 等一些应用程序进行连接。
不过,我尝试通过 GCloud Shell 进行连接,但似乎没有看到任何使用 SSL 连接的选项。有管理认证的选项,我创建了另一个客户端密钥并在我的云 shell 帐户中下载了它的文件,我只是没有看到使用它们建立连接的选项。如果没有它,只会告诉我没有用于“无 SSL”连接的 HBA。
这是我所看到的(有些内容被混淆了):
don@cloudshell:~ (xxx)$ gcloud sql connect foo --user=postgres
Whitelisting your IP for incoming connection for 5 minutes...done.
Connecting to database with SQL user [postgres].Password for user postgres:
psql: FATAL: connection requires a valid client certificate
FATAL: pg_hba.conf rejects connection for host "a.b.c.d", user "postgres", database "postgres", SSL off
Run Code Online (Sandbox Code Playgroud)