#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 с использованием облачных рабочих процессов.
Вместо выполнения команды оболочки вы можете выполнить цепочку операций для
- подключение к IAP
- запустите команду SELECT INTO FILE as csv (экранируя то, что нужно сделать)
- переместите файл в облачное хранилище
- импорт в BigQuery с использованием load API
Таким образом, вы не несете никаких затрат на загрузку BigQuery, поскольку загрузка данных в BQ бесплатна. Вы понесете расходы на облачное хранилище, но только на время существования файла, и после импорта вы можете его удалить.
Использование внешних источников данных.
Возможно, вы захотите настроить облачное SQL-соединение с вашей базой данных. Посмотрите, работает ли для вашей настройки, выполнив шаги, определенные здесь .
Вам нужно следовать руководству и на панели «Внешний источник данных» ввести необходимую информацию о подключении, такую как идентификатор экземпляра cloud SQL, пользователь, пароль.
Если соединение установлено, вы можете использовать синтаксис EXTERNAL_QUERY для чтения данных из экземпляра Cloud SQL и записи таблицы BigQuery. Вы понесете расходы на это, поскольку запрос оплачивается за данные, которые также считываются из облачного SQL.
SELECT * FROM EXTERNAL_QUERY("connection_id",
"select * from db.table;");
вы можете автоматизировать этот шаг с помощью запланированных запросов.
Комментарии:
1. Спасибо за предложение, я прочитаю об этом, кстати, я знаю, что большой запрос может подключать внешний источник данных, такой как cloud sql, а clod sql может подключаться из экземпляров виртуальной машины, что с этим?
2. Я обновил свой ответ, чтобы отразить это.
3. спасибо, что соединение из облачного sql работает для меня, но я понятия не имею, почему база данных не может отображаться (я уверен, что подключенный облачный sql из экземпляров виртуальной машины), я следую этой ссылке шага