Cargar datos de MySQL en BigQuery
Puede cargar datos de MySQL en BigQuery mediante el conector de BigQuery Data Transfer Service para MySQL. Es compatible con instancias de MySQL alojadas en tu entorno local, en Cloud SQL y en otros proveedores de servicios en la nube pública, como Amazon Web Services (AWS) y Microsoft Azure. Con BigQuery Data Transfer Service, puedes programar tareas de transferencia periódicas que añadan tus datos más recientes de MySQL a BigQuery.
Antes de empezar
- Crea un usuario en la base de datos MySQL.
- Comprueba que has completado todas las acciones necesarias para habilitar BigQuery Data Transfer Service.
- Crea un conjunto de datos de BigQuery para almacenar tus datos.
- Comprueba que tienes los roles necesarios para completar las tareas de este documento.
Roles obligatorios
Si tienes previsto configurar notificaciones de ejecuciones de transferencias para Pub/Sub, asegúrate de que tienes el permiso de pubsub.topics.setIamPolicy
Gestión de Identidades y Accesos (IAM). No se necesitan permisos de Pub/Sub si solo configuras notificaciones por correo electrónico. Para obtener más información, consulta el artículo sobre las notificaciones de ejecución de BigQuery Data Transfer Service.
Para obtener los permisos que necesitas para crear una transferencia de datos de MySQL, pide a tu administrador que te asigne el rol de gestión de identidades y accesos Administrador de BigQuery (roles/bigquery.admin
) en tu proyecto.
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
Este rol predefinido contiene los permisos necesarios para crear una transferencia de datos de MySQL. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
Para crear una transferencia de datos de MySQL, se necesitan los siguientes permisos:
-
bigquery.transfers.update
-
bigquery.datasets.get
También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.
Conexiones de red
Si no hay ninguna dirección IP pública disponible para la conexión de la base de datos MySQL, debes configurar un adjunto de red.
Para obtener instrucciones detalladas sobre la configuración de red necesaria, consulta los siguientes documentos:
- Si vas a transferir datos desde Cloud SQL, consulta el artículo Configurar el acceso a la instancia de Cloud SQL.
- Si vas a transferir datos desde AWS, consulta Configurar la VPN de AWS-Google Cloud y la conexión de red.
- Si vas a hacer la transferencia desde Azure, consulta Configurar la VPN de AzureGoogle Cloud y la conexión de red.
Limitaciones
Las transferencias de datos de MySQL están sujetas a las siguientes limitaciones:
- El número máximo de conexiones simultáneas a una base de datos MySQL viene determinado por el parámetro de configuración de MySQL
max_connections
. De forma predeterminada, este valor es de 151 conexiones, pero se puede configurar con un límite superior según sea necesario. Por lo tanto, el número de ejecuciones de transferencia simultáneas a una sola base de datos MySQL está limitado a esa cantidad máxima. Esta limitación también implica que el número de trabajos de transferencia simultáneos debe ser inferior al número máximo de conexiones simultáneas admitidas por la base de datos MySQL. - En MySQL, algunos tipos de datos se asignan al tipo de cadena en BigQuery para evitar la pérdida de datos. Por ejemplo, los tipos numéricos definidos en MySQL que no tienen una precisión y una escala definidas se asignan al tipo de cadena en BigQuery.
- Una configuración de transferencia solo puede admitir una ejecución de transferencia de datos a la vez. Si se programa una segunda transferencia de datos para que se ejecute antes de que se complete la primera, solo se completará la primera transferencia de datos y se omitirán las demás transferencias de datos que se solapen con la primera.
- Para evitar que se omitan transferencias en una misma configuración de transferencia, le recomendamos que aumente el tiempo que transcurre entre las transferencias de grandes cantidades de datos configurando la frecuencia de repetición.
Cargar datos de MySQL en BigQuery
Añada datos de MySQL a BigQuery configurando una transferencia con una de las siguientes opciones:
Consola
Ve a la página Transferencias de datos.
Haz clic en
Crear transferencia.En la sección Tipo de fuente, en Fuente, selecciona MySQL.
En la sección Nombre de la configuración de transferencia, en Nombre visible, indica un nombre para la transferencia. El nombre de la transferencia puede ser cualquier valor que te permita identificarla si necesitas modificarla más adelante.
En la sección Opciones de programación, haga lo siguiente:
- Selecciona una frecuencia de repetición. Si selecciona la opción Horas, Días (opción predeterminada), Semanas o Meses, también debe especificar una frecuencia. También puedes seleccionar la opción Personalizar para crear una frecuencia de repetición más específica. Si seleccionas la opción Bajo demanda, esta transferencia de datos solo se realizará cuando la inicies manualmente.
- Si procede, selecciona la opción Empezar ahora o Empezar a una hora determinada y proporciona una fecha de inicio y un tiempo de ejecución.
En la sección Configuración de destino, en Conjunto de datos, selecciona el conjunto de datos que has creado para almacenar los datos o haz clic en Crear conjunto de datos y crea uno para usarlo como conjunto de datos de destino.
En la sección Detalles de la fuente de datos, haga lo siguiente:
- En Red adjunta, selecciona una red adjunta o haz clic en Crear red adjunta. Para obtener más información, consulta la sección Conexiones de red de este documento.
- En Host (Host), introduce el nombre de host o la dirección IP del servidor de la base de datos MySQL.
- En Número de puerto, introduce el número de puerto del servidor de la base de datos MySQL.
- En Nombre de la base de datos, introduce el nombre de la base de datos MySQL.
- En Nombre de usuario, introduce el nombre de usuario de MySQL que inicia la conexión con la base de datos MySQL.
- En Password (Contraseña), introduce la contraseña del usuario de MySQL que inicia la conexión con la base de datos MySQL.
- En Modo de cifrado, selecciona Completo en el menú para habilitar la validación SSL completa al conectarte a la base de datos MySQL o Inhabilitar para no usar la validación SSL.
En Objetos de MySQL que se van a transferir, haga una de las siguientes acciones:
- Haga clic en Examinar para seleccionar las tablas de MySQL que se necesiten para la transferencia y, a continuación, haga clic en Seleccionar.
- Introduce manualmente los nombres de las tablas de los objetos de MySQL que quieras transferir.
Opcional: En la sección Opciones de notificación, haz lo siguiente:
- Para habilitar las notificaciones por correo, haz clic en el interruptor Notificaciones por correo para activarlo. Si habilita esta opción, el administrador de las transferencias recibirá una notificación por correo cuando falle una ejecución de transferencia.
- Para configurar las notificaciones de Pub/Sub sobre la transferencia, activa el interruptor Notificaciones de Pub/Sub. Puedes seleccionar el tema o hacer clic en Crear un tema para crear uno.
Haz clic en Guardar.
bq
Introduce el comando bq mk
y proporciona la marca de creación de transferencia --transfer_config
:
bq mk --transfer_config --project_id=PROJECT_ID --data_source=DATA_SOURCE --display_name=DISPLAY_NAME --target_dataset=DATASET --params='PARAMETERS'
Haz los cambios siguientes:
- PROJECT_ID (opcional): el ID de tu proyecto Google Cloud .
Si no se proporciona la marca
--project_id
para especificar un proyecto concreto, se usará el proyecto predeterminado. - DATA_SOURCE: la fuente de datos, que es
mysql
. - DISPLAY_NAME: el nombre visible de la configuración de transferencia de datos. El nombre de la transferencia puede ser cualquier valor que te permita identificarla si necesitas modificarla más adelante.
- DATASET: el conjunto de datos de destino de la configuración de transferencia de datos.
PARAMETERS: los parámetros de la configuración de transferencia creada en formato JSON. Por ejemplo:
--params='{"param":"param_value"}'
. Estos son los parámetros de una transferencia de MySQL:networkAttachment
(opcional): el nombre del adjunto de red para conectarse a la base de datos MySQL.connector.database
: el nombre de la base de datos MySQL.connector.endpoint.host
: el nombre de host o la dirección IP de la base de datos.connector.endpoint.port
: número de puerto de la base de datos.connector.authentication.username
: nombre de usuario del usuario de la base de datos.connector.authentication.password
: contraseña del usuario de la base de datos. connector.connectionTypeconnector.connectionType
(opcional): el tipo de conexión para determinar la URL de conexión. Puede serSERVICE
,SID
oTNS
. Si no se proporciona ningún valor, se utilizaSERVICE
de forma predeterminada.connector.encryptionMode
: el modo de cifrado. Puede serFULL
para validar SSL por completo al conectarse a la base de datos MySQL oDISABLE
para no validar SSL.assets
: lista de los nombres de las tablas de MySQL que se transferirán de la base de datos MySQL como parte de la transferencia.
Por ejemplo, el siguiente comando crea una transferencia de MySQL llamada My Transfer
:
bq mk --transfer_config --target_dataset=mydataset --data_source=mysql --display_name='My Transfer' --params='{"assets":["DB1/DEPARTMENT","DB1/EMPLOYEES"], "connector.authentication.username": "User1", "connector.authentication.password":"ABC12345", "connector.encryptionMode":"FULL", "connector.database":"DB1", "connector.endpoint.host":"54.74.220.23", "connector.endpoint.port":3306}'
API
Usa el método projects.locations.transferConfigs.create
y proporciona una instancia del recurso TransferConfig
.
Para ejecutar manualmente una transferencia de datos fuera de tu programación habitual, puedes iniciar una ejecución de rellenado.
Asignación de tipos de datos
En la siguiente tabla se asignan los tipos de datos de MySQL a los tipos de datos de BigQuery correspondientes.
Tipo de datos de MySQL | Tipo de datos de BigQuery |
---|---|
BIT |
BOOLEAN |
TINYINT |
INTEGER |
BOOL , BOOLEAN |
BOOLEAN |
SMALLINT |
INTEGER |
MEDIUMINT |
INTEGER |
INT , INTEGER |
INTEGER |
BIGINT |
BIGNUMERIC |
FLOAT |
FLOAT |
DOUBLE |
FLOAT |
DECIMAL |
BIGNUMERIC |
DATE |
DATE |
DATETIME |
TIMESTAMP |
TIMESTAMP |
TIMESTAMP |
TIME |
TIME |
YEAR |
DATE |
CHAR |
STRING |
VARCHAR |
STRING |
BINARY |
BYTES |
VARBINARY |
BYTES |
TINYBLOB |
BYTES |
TINYTEXT |
STRING |
BLOB |
BYTES |
TEXT |
STRING |
MEDIUMBLOB |
BYTES |
MEDIUMTEXT |
STRING |
LONGBLOB |
BYTES |
LONGTEXT |
STRING |
ENUM |
STRING |
SET |
STRING |
Solucionar problemas
Si tienes problemas para configurar la transferencia de datos, consulta Problemas de transferencia de MySQL.
Siguientes pasos
- Para obtener una descripción general de BigQuery Data Transfer Service, consulta el artículo ¿Qué es BigQuery Data Transfer Service?
- Para obtener información sobre cómo usar las transferencias, como obtener información sobre una configuración de transferencia, enumerar configuraciones de transferencia y ver el historial de ejecuciones de una transferencia, consulta Gestionar transferencias.
- Consulta cómo cargar datos con operaciones entre nubes.