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

相關問題