5

Ich versuche, die Cloud SQL-Proxy zu verwenden, um 2 verschiedene Cloud SQL-Instanzen ...Verbinden mit mehreren CloudSQL-Instanzen mithilfe von Cloud sql proxy?

In der Dokumentation zu verbinden, fand ich eine Linie über Use -instances parameter. For multiple instances, use a comma-separated list. aber nicht sicher, wie die aussehen zu machen. https://cloud.google.com/sql/docs/sql-proxy. Ich verwende Google Container-Engine und mit einem einzigen CloudSQL Instanz es funktioniert super:

- 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 

Aber für mehrere ich den -instances Abschnitt als solcher versucht haben:

-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 

aber sie alle geben verschiedene Fehler; ECONNREFUSED 127.0.0.1:3306, ER_DBACCESS_DENIED_ERROR und ER_ACCESS_DENIED_ERROR

Jede Hilfe wird sehr geschätzt!

Antwort

6

Sie können nicht zwei Datenbanken auf demselben TCP-Port hosten. Stattdessen geben Sie Ports für jede Datenbank in der durch Kommata getrennte Liste:

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

habe ich 3306 und 3307 hier, aber Sie können alle Ports verwenden, die Sie wollen! Stellen Sie sicher, dass der Rest Ihrer Container Engine-Konfiguration die Kommunikation zwischen Knoten an diesen Ports ermöglicht (vielleicht ist das standardmäßig der Fall, ich verwende GKE nicht).

Die meisten mysql-Treiber stellen standardmäßig eine Verbindung zu Port 3306 her, können jedoch einen anderen Port angeben. Sie müssen dafür sorgen, dass Ihr Code eine Verbindung zu dem anderen Port herstellt, den Sie für die zweite Datenbank auswählen.

+0

Bis jetzt funktioniert super! Vielen Dank! – glesage

+0

Danke, ich benutze dies, um einen Pod mit 1) der Master-Datenbank für Lese-/Schreibverkehr 2) der schreibgeschützten Replik für schreibgeschützten Verkehr zu verbinden. Überraschenderweise ist diese Antwort der einzige Ort, den ich für diese Information finden könnte. – jorfus

Verwandte Themen