Acceso a la base de datos de Airflow

Cloud Composer 1 | Cloud Composer 2

En esta página, se explica cómo conectarse a una instancia de Cloud SQL que ejecuta la base de datos de Airflow de tu entorno de Cloud Composer y que ejecuta consultas de SQL.

Por ejemplo, es posible que desees ejecutar consultas directamente en la base de datos de Airflow, hacer copias de seguridad de la base de datos, recopilar estadísticas basadas en el contenido de la base de datos o recuperar cualquier otra información personalizada de la base de datos.

Para un entorno de Cloud Composer, una forma de hacerlo es conectarte a la base de datos de Airflow desde una VM en el clúster de GKE de tu entorno.

Obtén el nombre y la zona del clúster de tu entorno

  1. En la consola de Google Cloud, ve a la página Entornos.

    Ir a Entornos

  2. Selecciona tu entorno.

  3. Ve a la pestaña Configuración del entorno.

  4. El elemento Clúster de GKE enumera el nombre y la zona del clúster de GKE de tu entorno.

    Por ejemplo, si el valor de este parámetro es projects/example-project/zones/europe-west3-a/clusters/europe-west3-composer-exam--7b206598-gke, el nombre del clúster es europe-west3-composer-exam--7b206598-gke y la zona del clúster es europe-west3-a.

Obtén los parámetros de conexión de la base de datos

Airflow 2

  1. Accede a la interfaz web de Airflow para tu entorno.
  2. En la interfaz web de Airflow, ve a Administrador > Configuración.

  3. Busca el parámetro sql_alchemy_conn.

  4. Obtén el nombre de usuario, la contraseña y el nombre de la base de datos a partir del valor de este parámetro.

    Por ejemplo, si el valor de este parámetro es postgresql+psycopg2://root:example-password@127.0.0.1:3306/composer-1-17-0-airflow-2-0-1-400fa094, entonces el nombre de usuario es root, la contraseña es example-password y el nombre de la base de datos es composer-1-17-0-airflow-2-0-1-400fa094.

Airflow 1

  1. Accede a la interfaz web de Airflow para tu entorno.
  2. En la interfaz web de Airflow, ve a Administrador > Configuración.
  3. Busca el parámetro sql_alchemy_conn.
  4. Obtén el nombre de usuario, la contraseña y el nombre de la base de datos a partir del valor de este parámetro.

    Por ejemplo, si el valor de este parámetro es mysql+mysqldb://root:example-password@127.0.0.1/composer-1-16-2-airflow-1-10-14-3e9e2312?charset=utf8, entonces el nombre de usuario es root, la contraseña es example-password y el nombre de la base de datos es composer-1-16-2-airflow-1-10-14-3e9e2312.

Obtén la dirección de extremo de la base de datos

  1. En la consola de Google Cloud, ve a la página Kubernetes Engine > Puertas de enlace, Ingress y servicios:

    Ir a Ingress y Service

  2. Selecciona el servicio airflow-sqlproxy-service para tu clúster. Puedes usar el nombre del clúster o el rango de IP que se muestra para que los extremos busquen el elemento correcto.

  3. En la página Detalles del servicio, busca la dirección IP de un pod servidor. Aparece en la sección Pods de entrega, en la columna Endpoints.

Crea una instancia de VM

Crea una instancia de VM nueva con los siguientes parámetros:

  • Region. La misma región que tu clúster.

  • Zona. Selecciona la misma zona que tu clúster.

  • Disco de arranque. Selecciona una distribución de Linux, por ejemplo, Ubuntu 21.04 LTS.

  • Especifica una dirección IP en el rango de IP del clúster:

    1. Expande el elemento Administración, seguridad, discos, Herramientas de redes, instancia única.
    2. Ve a la pestaña Herramientas de redes.
    3. En Interfaces de red, expande el elemento de interfaz predeterminado.
    4. Expande Mostrar rangos de alias de IP.
    5. En el Rango de la subred, selecciona el rango de IP gke-services para tu clúster. Por ejemplo, gke-europe-west3-composer-exam7b206598-gke-services-115b26e7. En el paso anterior, obtienes el nombre del clúster.
    6. En el Rango de IP de alias, especifica una dirección IP para la instancia de VM que esté en el rango de direcciones IP del rango de subred especificado.

Conéctate a la instancia de VM e instala el paquete de cliente SQL

Airflow 2

  1. Conéctate a la instancia de VM que creaste en el paso anterior.

  2. Instala el paquete postgresql-client.

    sudo apt-get update
    sudo apt-get install postgresql-client
    

Airflow 1

  1. Conéctate a la instancia de VM que creaste en el paso anterior.

  2. Instala el paquete mysql-client.

    sudo apt-get update
    sudo apt-get install mysql-client
    

Conéctate a la base de datos de Airflow

Mientras estés conectado a la instancia de VM, ejecuta el siguiente comando para conectarte a la base de datos de Airflow:

Airflow 2

psql --user=USERNAME --password \
  --host=DB_ENDPOINT \
  --port=3306 \
  DB_NAME

Airflow 1

mysql --user=USERNAME --password \
  --host=DB_ENDPOINT \
  DB_NAME

Reemplaza los valores por los obtenidos en los pasos anteriores:

  • USERNAME por el nombre de usuario
  • DB_ENDPOINT por la dirección IP del extremo de la base de datos que obtuviste con anterioridad en esta guía
  • DB_NAME por el nombre de la base de datos

Ejecuta consultas de SQL

Aparecerá un mensaje. Puedes ejecutar consultas de SQL en esta ventana. Por ejemplo:

SELECT * FROM dag LIMIT 10;

Vuelca el contenido de la base de datos y los transfiere a un bucket

Para volcar el contenido de la base de datos a un archivo, ejecuta el siguiente comando:

Airflow 2

pg_dump --user=USERNAME --password \
  --host=DB_ENDPOINT \
  --port=3306 \
  DB_NAME > DUMP_FILE

Airflow 1

mysqldump --user=USERNAME --password \
  --host=DB_ENDPOINT \
  DB_NAME > DUMP_FILE

Reemplaza lo siguiente:

  • USERNAME por el nombre de usuario
  • DB_ENDPOINT por la dirección IP del extremo de la base de datos
  • DB_NAME por el nombre de la base de datos
  • DUMP_FILE por el nombre del archivo de volcado. Por ejemplo, dump.sql

Para transferir el archivo de volcado a un bucket de Cloud Storage, haz lo siguiente:

gsutil cp DUMP_FILE BUCKET_ADDRESS

Reemplaza lo siguiente:

  • DUMP_FILE por el nombre del archivo de volcado.
  • BUCKET_ADDRESS por la dirección del bucket. Por ejemplo, gs://europe-west3-db-dump

Como alternativa, puedes transferir el archivo de volcado de forma local con gcloud compute scp.

¿Qué sigue?