标签: google-cloud-sql

如何为 MySql Google Cloud SQL 设置时区

尝试从开发者控制台创建新的服装标志 - 不起作用。从命令行绑定: gcloud sqlinstances patch --database-flags time_zone 不起作用,出现错误:“invalidFlagName”

google-cloud-sql

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

如何连接到postgresql google cloud sql实例?需要使用 pg_restore 命令导入 postgresql dump

我有一个 google cloud sql postgresql 实例。当我尝试导入 postgresql dump 时出现以下错误。

在此输入图像描述

我可以使用下面给出的命令连接到实例。

gcloud sql connect instance-name --user postgres
Run Code Online (Sandbox Code Playgroud)

它带我到 psql 命令行客户端,在那里我无法使用像pg_restore这样的数据库恢复命令

有谁知道如何实际连接到 Google Cloud SQL 实例以便我可以执行诸如 pg_restore 之类的操作?

database postgresql google-cloud-sql google-cloud-platform

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

Cloud SQL 代理和权限不足

我正在尝试在 Google 的容器引擎 (GKE) 上部署我的 Spring Boot/JHipster 应用程序。我已经弄清楚了大部分事情,但是我的数据库实例(一个在 Google Cloud SQL 上运行的 PostgreSQL 实例,带有 Google SQL 代理)有问题。

我已按照此处和此处的说明设置我的应用程序。

  1. 我已经在云中设置了我的 PostreSQL 实例,并创建了我的应用程序的数据库和用户。
  2. 我创建了一个具有 Cloud SQL 客户端角色的 SQL 服务——我获取了 JSON 密钥,并用它来创建我的 cloudsql-instance-credentials。我还创建了我的 cloudsql-db-credentials。
  3. 我已将其他位添加到我的部署 yaml 文件中。我基本上从这个 GitHub 示例中克隆了 yaml 文件,并用我自己的 Docker 镜像(托管在 Google Container Registry 中)替换了对 wordpress 的所有引用。我还更新了代理块,如下所示:

deployment.yaml 片段:

  - image: gcr.io/cloudsql-docker/gce-proxy:1.09
      name: cloudsql-proxy
          command: ["/cloud_sql_proxy", "--dir=/cloudsql",
                    "-instances=[my-project]:us-central1:[my-sql-instance-id]=tcp:5432",
                    "-credential_file=/secrets/cloudsql/credentials.json"]
Run Code Online (Sandbox Code Playgroud)

最后,我更新了我的 Spring Boot 配置 yaml 文件,如下所示:

datasource:
    type: com.zaxxer.hikari.HikariDataSource
    url: jdbc:postgresql://google/[my-database]?socketFactory=com.google.cloud.sql.postgres.SocketFactory&socketFactoryArg=[my-project]:us-central1:[my-sql-instance-id]
    username: ${DB_USER}
    password: ${DB_PASSWORD}
Run Code Online (Sandbox Code Playgroud)

当 …

java google-cloud-sql spring-boot kubernetes google-kubernetes-engine

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

Cloud SQL 实例连接在本地工作,但不在 App Engine 上工作

我正在尝试在 Google Cloud App Engine 上托管作为 Node.js 应用程序实现的 API。API 使用的数据库是 PostgreSQL 9.6 数据库,该数据库由 Cloud SQL 实例托管。数据库通过 .js 连接到 Node.js API Knex。

当托管在 App Engine 上时,不需要与数据库有任何联系的 API 端点可以正常工作。但是当需要联系数据库完成API调用时,日志中出现如下错误:

未处理的拒绝 TimeoutError:Knex:获取连接超时。游泳池可能已经满了。您是否错过了 .transacting(trx) 电话?

但是,如果我使用Knex本地连接到 Cloud SQL 实例并通过 localhost:3000 寻址 API,则需要数据库的 API 调用完全可以正常完成。这将验证 Cloud SQL 上的 PostgreSQL 数据库实例是否工作正常,以及 App Engine 上托管的 Node.js 应用程序是否导致与 Cloud SQL 实例的连接失败。

我像这样连接到数据库:

module.exports = require('knex')({
        client: 'pg',
        debug:  true,
        connection: {
          host : '35.194.32.254', 
          user : 'postgres',
          password : 'mypassword',
          database : 'mydatabase'
        },
      }); …
Run Code Online (Sandbox Code Playgroud)

google-app-engine node.js google-cloud-sql knex.js google-cloud-platform

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

AWS Aurora 云数据库服务器可以处理多少表/数据库?

目前我们在 Google Cloud 上,我们在他们的单个 Cloud SQL 实例上有 5000 个数据库,服务器每隔几个小时就会停止,并且由于表的数量,它不会启动几个小时。

根据他们最近修改的文档,他们支持每个实例最多 10.000 个表,在我们的例子中,我们最多可以有 250 个数据库(我们每个数据库有 40 个表)。

我们正在尝试寻找其他解决方案来满足我们的需求,我们有 40.000 个数据库,并且想要一个可扩展的云解决方案,与 mysql/postgresql 兼容。

Aurora 能解决这个问题吗?

amazon-web-services google-cloud-sql google-cloud-platform amazon-aurora

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

将 Sequelize 连接到 Google Cloud SQL

有谁知道如何从 Sequelize 连接到 Google Cloud SQL?

  sequelize = new Sequelize(process.env.TEST_DB || 'postgres', 'blah', null, {
    dialect: 'postgres',
    operatorsAliases: Sequelize.Op,
    host: process.env.DB_HOST || 'localhost',
    define: {
      underscored: true
    },
  });
  connected = true;
Run Code Online (Sandbox Code Playgroud)

deployment postgresql sequelize.js google-cloud-sql

4
推荐指数
2
解决办法
4937
查看次数

无法连接到代理“未知权威签名的证书”

我正在尝试通过 Kubernetes 部署上的 cloudsql-proxy 容器连接到 CloudSQL 实例。我已经安装了 cloudsql 凭据和GOOGLE_APPLICATION_CREDENTIALS设置的值。

但是,我的日志中仍然收到以下错误:

2018/10/08 20:07:28 Failed to connect to database: Post https://www.googleapis.com/sql/v1beta4/projects/[projectID]/instances/[appName]/createEphemeral?alt=json&prettyPrint=false: oauth2: cannot fetch token: Post https://oauth2.googleapis.com/token: x509: certificate signed by unknown authority
Run Code Online (Sandbox Code Playgroud)

我的连接字符串如下所示:

[dbUser]:[dbPassword]@cloudsql([instanceName])/[dbName]]?charset=utf8&parseTime=True&loc=Local
Run Code Online (Sandbox Code Playgroud)

代理拨号器被影子导入为:

_ github.com/GoogleCloudPlatform/cloudsql-proxy/proxy/dialers/mysql
Run Code Online (Sandbox Code Playgroud)

任何人都知道可能会丢失什么?

编辑:

部署规范看起来像这样(JSON 格式):

{
  "replicas": 1,
  "selector": {
    ...
  },
  "template": {
    ...
    "spec": {
      "containers": [
        {
          "image": "[app-docker-imager]",
          "name": "...",
          "env": [
            ...
            {
              "name": "MYSQL_PASSWORD",
              ...
            },
            {
              "name": "MYSQL_USER",
              ...
            },
            {
              "name": "GOOGLE_APPLICATION_CREDENTIALS",
              "value": "..."
            } …
Run Code Online (Sandbox Code Playgroud)

go google-cloud-sql google-cloud-platform kubernetes google-kubernetes-engine

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

Flask SQLalchemy 无法使用 Unix 套接字连接到 Google Cloud Postgresql 数据库

我在我的谷歌应用引擎标准环境项目中使用 Flask SQLalchemy 来尝试连接到我的 GCP Postgresql 数据库.. 根据谷歌文档,可以以这种格式创建 url

# postgres+pg8000://<db_user>:<db_pass>@/<db_name>?unix_socket=/cloudsql/<cloud_sql_instance_name>
Run Code Online (Sandbox Code Playgroud)

下面是我的代码

from flask import Flask, request, jsonify
import constants

app = Flask(__name__)

# Database configuration from GCP postgres+pg8000
DB_URL = 'postgres+pg8000://{user}:{pw}@/{db}?unix_socket=/cloudsql/{instance_name}'.format(user=user,pw=password,db=dbname, instance_name=instance_name)

app.config['SQLALCHEMY_DATABASE_URI'] = DB_URL
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False  # silence the 
deprecation warning
sqldb = SQLAlchemy(app)
Run Code Online (Sandbox Code Playgroud)

这是我不断收到的错误:

File "/env/lib/python3.7/site-packages/sqlalchemy/engine/default.py", line 412, in connect return self.dbapi.connect(*cargs, **cparams) TypeError: connect() got an unexpected keyword argument 'unix_socket'
Run Code Online (Sandbox Code Playgroud)

postgresql google-app-engine python-3.x flask-sqlalchemy google-cloud-sql

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

将 cloudsql-proxy 与 GKE 一起使用时无法获取令牌错误

我正在使用启用了 istio 附加组件的 GKE。使用 websocket 时,Myapp 以某种方式给出了 503 错误。我开始认为 websocket 可能正在工作,但数据库连接没有工作,这会导致 503,因为 cloudsql-proxy 日志给出了错误:

$ kubectl logs myapp-54d6696fb4-bmp5m cloudsql-proxy
2019/01/04 21:56:47 using credential file for authentication; email=proxy-user@myproject.iam.gserviceaccount.com
2019/01/04 21:56:47 Listening on 127.0.0.1:5432 for myproject:europe-west4:mydatabase
2019/01/04 21:56:47 Ready for new connections
2019/01/04 21:56:51 New connection for "myproject:europe-west4:mydatabase"
2019/01/04 21:56:51 couldn't connect to "myproject:europe-west4:mydatabase": Post https://www.googleapis.com/sql/v1beta4/projects/myproject/instances/mydatabase/createEphemeral?alt=json: oauth2: cannot fetch token: Post https://oauth2.googleapis.com/token: read tcp 10.44.11.21:60728->108.177.126.95:443: read: connection reset by peer
2019/01/04 22:14:56 New connection for "myproject:europe-west4:mydatabase"
2019/01/04 22:14:56 couldn't connect to "myproject:europe-west4:mydatabase": …
Run Code Online (Sandbox Code Playgroud)

google-cloud-sql google-cloud-platform kubernetes google-kubernetes-engine cloud-sql-proxy

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

使用 Google Cloud SQL 数据库时,私有 IP + SSL 或云代理 sidecar 之间有区别吗?

在尝试评估如何从 Google Kubernetes Engine pod 连接到 Cloud SQL 数据库时,有几种方法可以做到这一点。一种是使用sidecar云代理。另一种方法是使用私有 IP 并在两者之间使用 SSL 连接。两者都有明确的案例吗?或者它们都提供相同的功能?有没有一种被认为是“最佳实践”?

Cloud SQL 代理边车

该云SQL代理三轮建立一个TCP连接到被谷歌的基础设施托管的代理服务。然后,这会将您连接到 Google 网络上的云 SQL 实例。

优点

  • 无需管理应用程序中的加密材料即可建立安全连接
  • 连接到实例,您无需管理 DNS 记录或 IP 地址

缺点

  • 您必须创建一个密钥来存储服务帐户密钥。
  • 您必须在 pod 旁边管理一个 sidecar 实例,如果失败,您将无法再连接到您的数据库
  • 由于您拥有代理层的层数而增加了延迟

私有IP + SSL

使用私有 IP并将实例连接到您的 VPC 允许您使用内部 IP 地址,该地址未公开路由,并将流量保持在您的 VPC 实例中。最重要的是,设置到您的数据库的仅SSL连接以确保点对点的流量安全。

优点

  • 与数据库的低延迟连接,因为它是点对点连接
  • 您管理服务之间的密钥
  • 无需外部依赖项或系统即可在两者之间进行连接

缺点

  • 您必须在连接内管理 SSL 证书
  • 您必须验证集群中的 IP 和 DNS 记录设置是否正确

我错过了什么吗?这两个确实提供相同的东西吗?两者之间没有绝对明确的赢家,您可以选择最适合您风格的那个吗?

google-cloud-sql google-cloud-platform cloud-sql-proxy

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