数据库
首页 > 数据库> > mysql-使用Cloud sql代理连接到多个CloudSQL实例?

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

作者:互联网

我正在尝试使用Cloud sql代理连接到2个不同的Cloud sql实例…

在文档中,我找到了关于Use -instances参数的一行.对于多个实例,请使用逗号分隔的列表.但不确定如何使外观. https://cloud.google.com/sql/docs/sql-proxy.我使用的是Google Container引擎,并且使用单个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:3306、ER_DBACCESS_DENIED_ERROR和ER_ACCESS_DENIED_ERROR

任何帮助深表感谢!

解决方法:

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

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

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

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

标签:google-cloud-sql,mysql,google-cloud-platform,cloud-sql-proxy
来源: https://codeday.me/bug/20191010/1887728.html