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