标签: google-cloud-sql

使用 SQLAlchemy 通过 unix 套接字连接到数据库

我正在尝试使用云函数中的 SQLAlchemy 连接到我的云 SQL 数据库,但我似乎无法计算出正确的连接字符串。

DATABASE_URL=postgres://$DB_USER:$_DB_PWD@/$DB_NAME?unix_socket=/cloudsql/$DB_INSTANCE
Run Code Online (Sandbox Code Playgroud)

这给了我错误:

pyscopg2.ProgrammingError: invalid dns: invalid connection option "unix_socket"
Run Code Online (Sandbox Code Playgroud)

通过 unix socket 连接到 Postgresql 9.6 DB 的正确方法是什么pyscopg2

postgresql sqlalchemy unix-socket google-cloud-sql google-cloud-functions

13
推荐指数
1
解决办法
4004
查看次数

无法识别的配置参数“默认表访问方法”谷歌云

我尝试将一些文件导入 PostgreSQL 数据库,但出现此错误:

Falha Importar: 
SET 
SET 
SET 
SET 
SET 
set_config ------------ 
(1 row) 
SET 
SET 
SET 
SET 
SET 
Import error: exit status 3 ERROR: unrecognized configuration parameter "default_table_access_method"
Run Code Online (Sandbox Code Playgroud)

postgresql google-cloud-sql google-cloud-platform

13
推荐指数
2
解决办法
8167
查看次数

Google Cloud SQL Postgres - 随机减慢来自Google Compute/Kubernetes的查询速度

我一直在用Postgresql测试Google Cloud SQL,但我有随机查询需要~3s而不是几ms.

我做的故障排除:

  • 查询本身不是问题,重新运行相同的查询将起作用.
  • 索引已正确设置.数据库也非常小,即使没有任何索引也不应该这样做.
  • Kubernetes容器通过SQL代理连接到数据库(我遵循此https://cloud.google.com/sql/docs/postgres/connect-kubernetes-engine).虽然当我尝试直接连接到数据库时遇到同样的问题,但这不是问题.
  • 我配置net.ipv4.tcp_keepalive_time为60以确保连接没有丢失.
  • 我还有一个永远不会断开连接的连接池,以确保它不是来自那个.
  • 当我直接通过我的本地Postgresql客户端运行查询时,我从来没有遇到过这个问题.
  • 在本地开发和连接到本地数据库时,我没有这个问题.

我得到的是:我觉得我的Google Compute实例和我的Google SQL实例之间存在一些奇怪的连接/链接问题,我似乎无法弄明白.任何的想法?

编辑:我也每30秒在我的SQL Cloud实例中注意到这些日志: ERROR: recovery is not in progress HINT: Recovery control functions can only be executed during recovery. STATEMENT: SELECT pg_is_xlog_replay_paused(), current_timestamp

postgresql google-cloud-sql

12
推荐指数
1
解决办法
591
查看次数

无法将PostgreSQL10转储导入9.6数据库

我需要以某种方式将v10转储文件转换为9.6兼容的文件

谷歌的Cloud SQL运行PostgreSQL版本9.6,我的数据库自创建以来一直在版本10上运行.

问题:当我尝试将数据库导入Cloud SQL时,我得到了an unknown error has occurred.死亡信息.

我已经尝试在导入到Cloud SQL时评论我的postgis /其他扩展,但无济于事.

我尝试过使用psql my_96_db < my_10.sql并得到大量的错误,如下所示:

...
CREATE TABLE
ERROR:  syntax error at or near "AS"
LINE 2:     AS integer
            ^
ERROR:  relation "authentication_phonecontact_id_seq" does not exist
CREATE TABLE
...
Run Code Online (Sandbox Code Playgroud)

我已尝试在我的v10 pg_dump -Fc命令上使用postgres 9.6的pg_restore ,但它无法成功导入9.6数据库.输出中许多故障之一的一个例子是

pg_restore: [archiver (db)] could not execute query: ERROR:  relation "public.authentication_referral_id_seq" does not exist
LINE 1: SELECT pg_catalog.setval('public.authentication_referral_id_...
                                 ^
    Command was: SELECT pg_catalog.setval('public.authentication_referral_id_seq', 1, false);
Run Code Online (Sandbox Code Playgroud)

postgresql version google-cloud-sql

12
推荐指数
2
解决办法
6181
查看次数

CloudRun 突然得到`Improper path /cloudsql/{SQL_CONNECTION_NAME} to connect to Postgres Cloud SQL instance "{SQL_CONNECTION_NAME}"`

几个月来,我们一直在完全托管的 CloudRun 上使用 NestJS 和 TypeORM 运行服务,没有出现任何问题。昨天下午Improper path /cloudsql/{SQL_CONNECTION_NAME} to connect to Postgres Cloud SQL instance "{SQL_CONNECTION_NAME}",我们的日志开始出现错误。

我们没有围绕此时间戳进行任何服务器/SQL 更改。目前对服务没有影响,所以我们不确定这是否是一个严重的问题。

这个错误不是来自我们的代码,我们的第三方模块不应该知道我们是否使用 Cloud SQL,所以我不知道这个错误来自哪里。

我的假设是 Cloud SQL 代理或 Cloud Run 中使用的任何 SQL 客户端都会导致此错误。在使用“gcloud run deploy”CLI 命令进行部署时,我们使用 --add-cloudsql-instances 标志。

问题链接在这里

postgresql google-cloud-sql google-cloud-platform typeorm google-cloud-run

12
推荐指数
1
解决办法
446
查看次数

更改Google Cloud SQL CURRENT_TIMESTAMP时区?

CURRENT_TIMESTAMP在Google Cloud SQL中使用,根据Google的说法,它会返回服务器的当前时间.

目前,随着它返回的时间,它看起来像服务器在UTC -1(即在大西洋).这不是很有帮助.

当我打电话时,如何更改时区并让它显示正确的时间(即我自己选择的时区)CURRENT_TIMESTAMP

mysql google-cloud-sql

11
推荐指数
2
解决办法
7501
查看次数

Google云sql实例超级权限错误

我是谷歌应用程序引擎的新手请帮我解决我的问题

我在导入SQL文件时在Google云sql中创建了一个实例,然后它显示我这样的错误.

ERWOR 1227(42000)第1088行:拒绝访问; 您需要(至少一个)此操作的SUPER权限

如何为我的实例添加超级权限.

google-app-engine google-cloud-sql

11
推荐指数
2
解决办法
8721
查看次数

有没有办法通过docker容器内的代理访问谷歌云SQL

我有多个docker机器(dev,staging)在运行Django服务器的Google Compute Engine上运行(这需要访问Google Cloud SQL访问权限).我运行了多个Google Cloud SQL实例,每个实例都由我的Google Compute Engine实例上的各个docker机器使用.

目前我通过将我的计算引擎IP列入白名单来访问Cloud SQL.但我不想使用IP明显的原因,即,我不使用静态IP为我的开发机器.

但现在想用google_cloud_proxy方式获取访问权限.但是我该怎么做!GCP提供了多种访问Google Cloud SQL实例的方法.但它们都不适合我的用例:

我有这个选项https://cloud.google.com/sql/docs/mysql/connect-compute-engine ; 但是这个

  1. 只给我的计算机引擎访问SQL实例; 我必须从我的Docker访问.
  2. 这不支持我在同一计算引擎机器上代理多个SQL实例; 如果可能的话,我希望在docker中做这个代理.

那么,如何访问Docker中的CLoud SQL?如果docker compose是一个更好的开始方式; 实施kubernetes是多么容易(我使用谷歌容器引擎进行生产)

google-cloud-sql google-compute-engine google-cloud-platform

11
推荐指数
1
解决办法
3730
查看次数

Google App Engine .Net Core 2.0应用无法访问Google Cloud SQL数据库

我在Google App Engine Flexible Environment中运行了一个dotnet core 2.0应用程序.在同一个Google项目中,我有一个Cloud SQL - MySQL数据库.在Cloud SQL Instance详细信息页面的"授权"选项卡下,它指出

此项目中的应用程序:全部授权.

但是,除非我将0.0.0.0/0路由添加到授权网络部分,否则我无法从我的应用程序访问数据库.

如何在不向全世界打开数据库的情况下为我的应用程序数据库访问提供什么?


来自Jeffery Rennie的更新2018-05-21(已接受答复)

App Engine现在支持使用端口号而不是unix域套接字连接到Cloud SQL实例.所以现在,您可以添加以下内容app.yaml:

beta_settings:
    cloud_sql_instances: "your-project-id:us-central1:instance-name=tcp:5432"
Run Code Online (Sandbox Code Playgroud)

Host=cloudsql在appsettings.json中的连接字符串中指定:

"ConnectionString": "Uid=aspnetuser;Pwd=;Host=cloudsql;Database=visitors"
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,端口是5432,这是PostgreSQL数据库的默认端口.对于MySQL数据库,请使用端口3306.

可以在此处找到有关部署到App Engine的说明的完整示例:

https://github.com/GoogleCloudPlatform/dotnet-docs-samples/tree/master/appengine/flexible/CloudSql

google-app-engine google-cloud-sql google-cloud-platform .net-core app-engine-flexible

11
推荐指数
1
解决办法
1191
查看次数

在Google Cloud SQL PostgreSQL实例上记录慢查询

我工作的公司使用Google Cloud SQL来管理他们在生产中的SQL数据库.

我们遇到了性能问题,我认为查看/监控超过特定阈值(例如250ms)的所有查询是一个好主意(除其他事项外).

通过查看PostgreSQL文档,我认为这log_min_duration_statement似乎是我需要的标志.

log_min_duration_statement(整数)

如果语句运行至少指定的毫秒数,则会记录每个已完成语句的持续时间.将此值设置为零将打印所有语句持续时间.

但是从Cloud SQL文档来看,我看到只能设置一组窄的数据库标志(如每个数据库实例一样),但正如你在这里 看到的那样,log_min_duration_statement不是那些支持的标志.

所以这就是问题所在.如何使用Google Cloud SQL记录/监控慢速PostgreSQL查询?如果不可能,那么您建议我使用哪种工具/方法来获得类似的结果?

postgresql performance monitoring google-cloud-sql

11
推荐指数
2
解决办法
2707
查看次数