5

2 개의 다른 클라우드 SQL 인스턴스에 연결하기 위해 클라우드 SQL 프록시를 사용하려고합니다 ...Cloud SQL 프록시를 사용하여 여러 CloudSQL 인스턴스에 연결 하시겠습니까?

문서에서 나는 Use -instances parameter. For multiple instances, use a comma-separated list.에 대한 회선을 발견했으나 그 모양을 만드는 방법을 모릅니다. https://cloud.google.com/sql/docs/sql-proxy. 나는 구글 컨테이너 엔진을 사용하고, 단일 CloudSQL 인스턴스와는 잘 작동 :

-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 

하지만 그들은 모두 다양한 제공 :

- 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 섹션을 시도했습니다 오류; 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 설정이이 포트에있는 노드 사이의 통신을 허용하는지 확인하십시오 (기본적으로 true, GKE를 사용하지 않음).

대부분의 mysql 드라이버는 기본적으로 포트 3306에 연결되지만 다른 포트를 지정하는 방법이 있습니다. 두 번째 데이터베이스에 대해 선택한 다른 포트에 코드를 연결해야합니다.

+0

지금까지 멋진 작품입니다! 감사! – glesage

+0

감사합니다.이 코드를 사용하여 1) 읽기/쓰기 트래픽의 마스터 데이터베이스 2) 읽기 전용 트래픽의 읽기 전용 복제본으로 연결합니다. 놀랍게도이 답변은 내가 그 정보를 찾을 수있는 유일한 장소입니다. – jorfus