5

我试图使用云SQL代理连接到2个不同的云SQL实例...使用Cloud sql代理连接到多个CloudSQL实例?

在文档中,我发现一条关于Use -instances parameter. For multiple instances, use a comma-separated list.的行,但不知道如何做出这样的外观。 https://cloud.google.com/sql/docs/sql-proxy。我使用谷歌集装箱发动机,并配有单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_ERRORER_ACCESS_DENIED_ERROR

任何帮助非常感谢!

回答

6

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

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

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

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

+0

到目前为止效果很好!谢谢! – glesage

+0

谢谢,我用它来连接一个容器到1)用于读/写通信的主数据库2)用于只读通信的只读副本。令人惊讶的是,这个答案是我能找到的唯一信息。 – jorfus

相关问题