标签: google-cloud-sql

错误:无法删除角色“user1”,因为某些对象依赖于它

在我的 Google Cloud SQL 数据库实例 (Postgres 9.6) 上,我无法通过 GCP Console 删除通过 GCP Console 创建的用户/角色。当我尝试时,控制台显示一条通知,显示“用户已删除”,然后经过进一步检查,我发现操作失败并出现“未知错误”。实例的错误日志显示以下错误:

06:42:36.347 UTC [199]: [1-1] db=cloudsqladmin,user=cloudsqlagent ERROR:  role "user1" cannot be dropped because some objects depend on it
06:42:36.347 UTC [199]: [2-1] db=cloudsqladmin,user=cloudsqlagent DETAIL:  privileges for database mydb
24 objects in database mydb
Run Code Online (Sandbox Code Playgroud)

可以通过运行看到 24 个对象

06:42:36.347 UTC [199]: [1-1] db=cloudsqladmin,user=cloudsqlagent ERROR:  role "user1" cannot be dropped because some objects depend on it
06:42:36.347 UTC [199]: [2-1] db=cloudsqladmin,user=cloudsqlagent DETAIL:  privileges for database mydb
24 objects …
Run Code Online (Sandbox Code Playgroud)

postgresql google-cloud-sql postgresql-9.6

6
推荐指数
1
解决办法
8190
查看次数

Mysql 查询在 SELECT IN (xx,xxx,xx) 中使用 33594 个参数在 200 毫秒内运行,但在使用 33595 个或更多参数时运行数小时,为什么?

我们遇到了一个小故障,导致设备产生了意外数量的数据。我们的代码最终沿着 SELEXT * from XXX WHERE yyy IN (xxx,xxx,xxx....,xxxx) 的行创建一个选择查询,这应该获取过去 5 天的数据,这通常根本不是问题,因为WHERE 字段已建立索引。

我们突然开始出现大量缓慢的查询并使服务器陷入困境。在我们中止查询之前,查询运行了大约 5000 秒。弄清楚发生了什么后发现,如果我们在 IN () 子句中有一个最多包含 33594 个参数的查询,则一切正常,查询会在 200 毫秒内完成。如果我们添加一个参数,选择似乎会永远运行。我们没有让一个无限期地运行直到它完成,所以我不确定它是否会完成,但它们似乎至少持续几个小时......

select 内的数据约为 361.04KB。我们在 Google Cloud SQL 上运行 MYSQL MYSQL_8_0_31

关于可能导致这种行为的任何想法?

mysql select google-cloud-sql

6
推荐指数
2
解决办法
3547
查看次数

Galera集群进入谷歌云平台

我们有一个 galera 集群,有 3 个节点,在 3 台不同的物理机器上,但都位于同一个数据中心。

据我了解,他们过去部署此功能的原因是为了提高可用性和可靠性,DC 故障不是问题。每个节点都安装在使用 12 个内核和 4Gb RAM 的 VM 上。(根据我所做的监控,我们可以将使用的内核数量减少到 4 个)

我们被要求将其迁移到 Google Cloup Platform 以摆脱操作任务。我可以创建 3 个计算引擎实例并部署 galera 集群,GCP 甚至有 Percona XtraDB Cluster 一键部署服务,但与具有复制和备份的 Cloud SQL 实例相比,我很难看到附加值。我对扩展重负载系统不是很熟悉。

托管在这些节点中的数据库非常关键,应确保最大的可用性和可靠性。

为了将此架构迁移到 GCP,我应该采用什么策略?

percona cloud galera google-cloud-sql

4
推荐指数
1
解决办法
888
查看次数

将列设置为从另一个表中随机选择的值

考虑一下:

UPDATE dest
SET dest_col = (SELECT s.src_col FROM source s
                WHERE s.name = 'abc'
                ORDER BY random() LIMIT 1 OFFSET 0);
Run Code Online (Sandbox Code Playgroud)

我的目标:将每一行设置dest.dest_col为从子查询匹配的所有值中随机选取的值。

为了实现这一点,我添加了ORDER BY random() LIMIT 1. 但这是通过选择一个随机值一次,然后将其设置到dest.dest_col.

我尝试添加OFFSET 0(在其他答案中建议作为防止 Postgres 优化子查询的方法),但这似乎没有任何效果。

另请注意,我需要它才能在 GCP 上运行的 PostgreSQL 上工作。

postgresql google-cloud-sql

4
推荐指数
1
解决办法
6592
查看次数

Postgres 中的高效键值存储

我想使用 Postgres(CloudSQL 中的 11)作为高效的键值存储。我有大约 200GB 的字典(平均大小为 10kB,结构可以不同并且可以嵌套)。我正在考虑利用改进的哈希索引。这是架构:

\n\n
        CREATE EXTENSION IF NOT EXISTS "uuid-ossp";\n\n        CREATE TABLE IF NOT EXISTS key_val (\n            id uuid DEFAULT uuid_generate_v4(),\n            value jsonb,\n            EXCLUDE using hash (id with =)\n        );\n\n        CREATE INDEX IF NOT EXISTS idx_key_val ON key_val USING hash (id);\n
Run Code Online (Sandbox Code Playgroud)\n\n

获取、更新和插入非常简单,但我不知道如何实现高效的更新插入。

\n\n
INSERT INTO key_val VALUES ($1, $2) ON CONFLICT ON CONSTRAINT key_val_id_excl DO UPDATE SET value = ($2)\n
Run Code Online (Sandbox Code Playgroud)\n\n

结果是WrongObjectTypeError ON CONFLICT DO UPDATE not supported with exclusion constraints

\n\n

可能的解决方案:

\n\n …

postgresql upsert json hashing google-cloud-sql

4
推荐指数
1
解决办法
1万
查看次数