datos de carga de casos vm sin ip externo a grandes consultas
Tengo el objetivo de conectar y cargar datos a grandes consultas desde instancias vm (estos casos instalados servidor maria db). Puedo acceder a la base de datos usando tcp ip reenviando con este comando en mi terminal (las instancias que no tienen ip externo por razones de seguridad):
gcloud beta compute start-iap-tunnel my-instances 3306 --local-host-port=localhost:3309
después de eso estoy abierto mysql workbench raíz de usuario y contraseña, entonces el programa de bases de datos, haciendo consultas, guardar en csv, el último es subir el csv a la gran consulta.
¿Alguna sugerencia de automatizar este proceso?
Pregunta hecha hace 3 años, 5 meses, 0 días - Por pixelprodigy
4 Respuestas:
-
Si su VM no tiene IP pública, el VM no puede acceder al público BigQuery api en el DNS público. ¡Usa la API privada!
Para ello, usted necesita ir a su VPC, y seleccionar la subred donde se implementa su VM de Compute Engine.
Haga clic en Editar y encender el acceso privado de Google a ON
Ahora puede llamar a la API BigQuery, a través de la red interna y sin IP pública. use el CLI o script para lograr el trabajo de carga.
Respondida el Dec 17, 2020 a las 14:56 - por gitguru
Votos positivos: 0 | Votos negativos: 0 -
Estilo Devops usando Cloud Workflows.
Puede automatizar esto usando Flujos de trabajo en la nubey los pasos con Cloud Build.
Hay una guía completa publicada cómo ejecutar un comando de shell en un VM con Cloud Workflows, también otro cómo automatizar archivos de Almacenamiento en la nube a BigQuery usando Cloud Workflows.
En lugar de ejecutar el comando shell, puede tener la cadena de operaciones a
- conectar a IAP
- ejecutar el SELECT INTO FILE como comando csv (el escapar de lo que necesita ser hecho)
- mover el archivo a Cloud Storage
- importar en BigQuery usando la API de carga
De esta manera no incurrirá en costos de carga para BigQuery ya que cargar datos a BQ es gratuito. Usted incurrirá en costos para almacenamiento en la nube, pero sólo por el tiempo que el archivo existe y una vez importado puede eliminarlo.
Utilizando fuentes de datos externas.
Es posible que desee configurar una conexión Cloud SQL con su base de datos. Vea si funciona para su configuración haciendo los pasos definidos Aquí..
Necesitas seguir la guía y en el panel de fuente de datos externo, introducir la información de conexión necesaria como cloud SQL instance id, usuario, contraseña.
Si se establece la conexión, puede utilizar EXTERNAL_ Sintaxis QUERY para leer datos de instancia de Cloud SQL y escribir una tabla BigQuery. Usted incurrirá en costos para hacer esto, ya que la consulta se factura por los datos que se leen de Cloud SQL también.
SELECT * FROM EXTERNAL_QUERY("connection_id", "select * from db.table;");
puede automatizar este paso con las consultas programadas.
Respondida el Dec 17, 2020 a las 15:03 - por codemaster89
Votos positivos: 0 | Votos negativos: 0 -
Para automatizar este proceso de carga de datos a grandes consultas desde instancias VM sin IP externa, puedes considerar la siguiente solución:
- Script de Bash para la conexión IAP y exportación de datos:
- Establecer la conexión IAP a la instancia VM utilizando el comando `gcloud compute start-iap-tunnel`.
- Exportar los datos de la base de datos a un archivo CSV utilizando comandos de MySQL o herramientas como `mysql` o `mysqldump`.
- Cerrar la conexión IAP.
- Automatización con programación de tareas:
cron
en sistemas Linux para programar la ejecución periódica o en momentos específicos del día del script de Bash creado en el paso anterior.- Subida automática del CSV a la gran consulta:
gsutil
de Google Cloud para subir el archivo CSV generado a Google Cloud Storage y luego cargarlo en la gran consulta desde allí.- Seguridad y consideraciones adicionales:
Con estas recomendaciones, podrás automatizar el proceso de carga de datos a grandes consultas desde instancias VM sin IP externa. ¡Espero que esta información te sea útil para resolver tu requerimiento! Si tienes más preguntas o necesitas ayuda adicional, no dudes en preguntar.
Respondida el Dec 18, 2020 a las 14:53 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Automatizar el proceso de carga de datos de instancias VM sin IP externa a BigQuery
Paso 1: Configurar SSH Tunneling
Utiliza
gcloud beta compute start-iap-tunnel
para crear un túnel SSH a la instancia VM. Redirige el puerto 3306 de la VM al puerto 3309 local.Paso 2: Conectarse a la base de datos remota
Abre MySQL Workbench y conéctate a la base de datos remota utilizando la dirección IP local
127.0.0.1
y el puerto3309
. Proporciona el nombre de usuario y la contraseña de la base de datos raíz.Paso 3: Automatizar consultas y exportación de CSV
Utiliza una herramienta como Python o Shell Script para automatizar las consultas de bases de datos, por ejemplo:
python import mysql.connector
Conéctate a la base de datos remota
conn = mysql.connector.connect( host='127.0.0.1', port=3309, user='root', password='contraseña' )Ejecuta una consulta y guarda los resultados en un archivo CSV
cursor = conn.cursor() cursor.execute('SELECT FROM tabla') with open('datos.csv', 'w') as f: writer = csv.writer(f) writer.writerows(cursor.fetchall())Cierra la conexión
cursor.close() conn.close()Paso 4: Cargar CSV a BigQuery
Utiliza la herramienta
bq
o la API de BigQuery para cargar los datos CSV en un conjunto de datos de BigQuery.shell bq load --source_format=CSV mi_conjunto_de_datos.mi_tabla datos.csv
Paso 5: Crear un script o programa
Combina los pasos anteriores en un script o programa que se pueda ejecutar automáticamente. Programa el script para que se ejecute regularmente, por ejemplo, mediante Cron o Cloud Scheduler.
Consejos:
Asegúrate de que el servidor MySQL esté configurado para permitir conexiones desde el host local. Utiliza una cuenta de servicio para las conexiones de BigQuery para evitar la autenticación manual. Monitoriza el proceso para garantizar que se ejecuta correctamente y notificar cualquier error.
Respondida el Dec 18, 2020 a las 15:04 - por Gemini
Votos positivos: 0 | Votos negativos: 0