загрузка данных из экземпляров виртуальной машины без внешнего ip в большой запрос

#mysql #google-cloud-platform #google-bigquery #google-compute-engine #google-workflows

# #mysql #google-облачная платформа #google-bigquery #google-compute-engine #google-рабочие процессы

Вопрос:

у меня есть цель подключиться и загрузить данные в большой запрос из экземпляров виртуальной машины (в этих экземплярах установлен сервер maria db). я могу получить доступ к базе данных, используя переадресацию tcp ip с помощью этой команды на моем терминале (экземпляры, не имеющие внешнего IP-адреса по соображениям безопасности):

 gcloud beta compute start-iap-tunnel my-instances 3306 --local-host-port=localhost:3309
 

после этого я открываю mysql workbench, набираю root пользователя и пароль, затем показываю базу данных, выполняю запрос, сохраняю в csv, последний — загружаю csv в большой запрос.

есть предложения по автоматизации этого процесса?

Ответ №1:

Если у вашей виртуальной машины нет общедоступного IP-адреса, виртуальная машина не может получить доступ к общедоступному api BigQuery в общедоступном DNS. Итак, используйте private API!!

Для этого вам нужно перейти на ваш VPC и выбрать подсеть, в которой развернута ваша виртуальная машина Compute Engine.

Нажмите «Редактировать» и включите частный доступ Google к ON введите описание изображения здесь

Теперь вы можете вызывать API BigQuery через внутреннюю сеть и без общедоступного IP. используйте CLI или скрипт для выполнения задания загрузки.

Комментарии:

1. спасибо, но я не разбираюсь в кодировании, я хочу минимизировать кодирование

2. ??? Вам нечего кодировать!! Но если вы хотите получить доступ к Google Cloud API с виртуальной машиной без общедоступного IP-адреса, это решение

Ответ №2:

Стиль Devops с использованием облачных рабочих процессов.

Вы можете автоматизировать это с помощью облачных рабочих процессов и шагов Cloud Build.

Опубликовано полное руководство по запуску команды оболочки на виртуальной машине с облачными рабочими процессами, а также другое руководство по автоматизации передачи файлов из облачного хранилища в BigQuery с использованием облачных рабочих процессов.

Вместо выполнения команды оболочки вы можете выполнить цепочку операций для

  1. подключение к IAP
  2. запустите команду SELECT INTO FILE as csv (экранируя то, что нужно сделать)
  3. переместите файл в облачное хранилище
  4. импорт в BigQuery с использованием load API

Таким образом, вы не несете никаких затрат на загрузку BigQuery, поскольку загрузка данных в BQ бесплатна. Вы понесете расходы на облачное хранилище, но только на время существования файла, и после импорта вы можете его удалить.

Использование внешних источников данных.

Возможно, вы захотите настроить облачное SQL-соединение с вашей базой данных. Посмотрите, работает ли для вашей настройки, выполнив шаги, определенные здесь .

Вам нужно следовать руководству и на панели «Внешний источник данных» ввести необходимую информацию о подключении, такую как идентификатор экземпляра cloud SQL, пользователь, пароль.

Если соединение установлено, вы можете использовать синтаксис EXTERNAL_QUERY для чтения данных из экземпляра Cloud SQL и записи таблицы BigQuery. Вы понесете расходы на это, поскольку запрос оплачивается за данные, которые также считываются из облачного SQL.

 SELECT * FROM EXTERNAL_QUERY("connection_id",
"select * from db.table;");
 

вы можете автоматизировать этот шаг с помощью запланированных запросов.

https://cloud.google.com/bigquery/docs/cloud-sql-federated-queries#setting-up-cloud-sql-database-connections

Комментарии:

1. Спасибо за предложение, я прочитаю об этом, кстати, я знаю, что большой запрос может подключать внешний источник данных, такой как cloud sql, а clod sql может подключаться из экземпляров виртуальной машины, что с этим?

2. Я обновил свой ответ, чтобы отразить это.

3. спасибо, что соединение из облачного sql работает для меня, но я понятия не имею, почему база данных не может отображаться (я уверен, что подключенный облачный sql из экземпляров виртуальной машины), я следую этой ссылке шага