Подключение к нескольким экземплярам CloudSQL с помощью прокси-сервера Cloud sql?

Я пытаюсь использовать прокси-сервер облачного sql для подключения к 2 различным экземплярам облачного sql ...

В документации я нашел строку о Use -instances parameter. For multiple instances, use a comma-separated list., но не знаю, как это сделать. https://cloud.google.com/sql/docs/sql-proxy . Я использую движок Google Container, и с одним экземпляром 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

Любая помощь высоко ценится!


person glesage    schedule 24.11.2016    source источник


Ответы (2)


У вас не может быть двух баз данных, размещенных на одном TCP-порту. Вместо этого укажите порты для каждой базы данных в списке, разделенном запятыми:

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

Здесь я использовал 3306 и 3307, но вы можете использовать любые порты, какие захотите! Убедитесь, что остальная часть вашей конфигурации Container Engine разрешает связь между узлами на этих портах (возможно, это правда по умолчанию, я не использую GKE).

Большинство драйверов mysql по умолчанию подключаются к порту 3306, но имеют возможность указать другой порт. Вам нужно будет организовать подключение вашего кода к другому порту, который вы выберете для второй базы данных.

person Carrotman42    schedule 25.11.2016
comment
Спасибо, я использую это для подключения модуля к 1) основной базе данных для трафика чтения / записи 2) реплике только для чтения для трафика только для чтения. Удивительно, но этот ответ - единственное место, где я смог найти эту информацию. - person jorfus; 14.12.2017
comment
Мне отказано в доступе из-за двух подключений к разным базам данных в одном экземпляре. Как вы думаете, поможет ли использование другого порта? Еще не совсем понимаю концепцию пути к сокету. - person ahong; 12.01.2019
comment
лучше использовать maxscale :) - person c4f4t0r; 31.10.2019

Вы можете создать два экземпляра на одном и том же порте, но вам нужно определить другой IP-адрес, например:

-instances=project:region:db=tcp:127.0.0.1:3306,project:region:db-2=tcp:127.0.0.2:3306

Вы можете увидеть пример в репозитории Github cloudsql-proxy.

person RousseauAlexandre    schedule 27.05.2021