使用Cloud sql代理连接到多个CloudSQL实例?

时间:2016-11-24 19:12:04

标签: mysql google-cloud-platform google-cloud-sql cloud-sql-proxy

我试图使用cloud sql代理连接到2个不同的云sql实例...

在文档中,我找到了关于Use -instances parameter. For multiple instances, use a comma-separated list.的一行,但不确定如何制作这种外观。 https://cloud.google.com/sql/docs/sql-proxy。我使用的是Google容器引擎,并且使用单个CloudSQL实例,效果很好:

- name: cloudsql-proxy
  image: b.gcr.io/cloudsql-docker/gce-proxy:1.05
  command: ["/cloud_sql_proxy", "--dir=/cloudsql",
            "-instances=starchup-147119:us-central1:first-db=tcp:3306",
            "-credential_file=/secrets/cloudsql/credentials.json"]
  volumeMounts:
  - name: cloudsql-oauth-credentials
    mountPath: /secrets/cloudsql
    readOnly: true
  - name: ssl-certs
    mountPath: /etc/ssl/certs

但对于多个人,我已尝试-instances部分:

-instances=starchup-147119:us-central1:first-db,starchup-147119:us-central1:second-db=tcp:3306  
and  
-instances=starchup-147119:us-central1:first-db=tcp:3306,starchup-147119:us-central1:second-db=tcp:3306

但他们都有各种错误; ECONNREFUSED 127.0.0.1:3306ER_DBACCESS_DENIED_ERRORER_ACCESS_DENIED_ERROR

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:14)

您不能在同一TCP端口上托管两个数据库。而是在逗号分隔列表中为每个数据库指定端口:

-instances=project:region:db=tcp:3306,project:region:db-2=tcp:3307

我在这里使用了3306和3307,但你可以使用你想要的任何端口!确保Container Engine配置的其余部分允许这些端口上的节点之间的通信(默认情况下可能是这样,我不使用GKE)。

大多数mysql驱动程序默认连接到端口3306,但可以指定另一个端口。您必须安排代码连接到您为第二个数据库选择的不同端口。

答案 1 :(得分:0)

您可以在同一个端口上创建两个实例,但您必须像这样定义不同的 IP:

-instances=project:region:db=tcp:127.0.0.1:3306,project:region:db-2=tcp:127.0.0.2:3306

您可以在 Github cloudsql-proxy repository 上看到一个示例。