我正在尝试使用云SQL代理连接到2个不同的云SQL实例...
在文档中,我找到了有关Use -instances parameter. For multiple instances, use a comma-separated list.
的行,但不确定如何使外观。https://cloud.google.com/sql/docs/sql-proxy。我正在使用Google Container Engine,并且使用单个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,但是您可以使用所需的任何端口!确保您的其余容器引擎配置允许在这些端口上的节点之间进行通信(默认情况下是正确的,我不使用GKE)。
大多数MySQL驱动程序默认情况下连接到端口3306,但可以指定另一个端口。您必须安排您的代码连接到选择第二个数据库的不同端口。
您可以在同一端口上创建两个实例,但是您必须定义其他IP:
-instances=project:region:db=tcp:127.0.0.1:3306,project:region:db-2=tcp:127.0.0.2:3306
您可以在github cloudsql-proxy存储库上看到一个示例。