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 enter image description here

    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

    1. conectar a IAP
    2. ejecutar el SELECT INTO FILE como comando csv (el escapar de lo que necesita ser hecho)
    3. mover el archivo a Cloud Storage
    4. 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.

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

    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:
    Crea un script de Bash que realice las siguientes acciones:
    • 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:
    Puedes utilizar herramientas como 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:
    Puedes usar herramientas como 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:
    Asegúrate de gestionar adecuadamente las credenciales de acceso y la seguridad de la conexión IAP. Considera la posibilidad de encriptar los datos sensibles en el proceso de exportación y subida de datos.

    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 puerto 3309. 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