Programa una transferencia de MySQL
El conector de MySQL del Servicio de transferencia de datos de BigQuery te permite transferir datos de tu instancia de MySQL a BigQuery. Admite 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. El conector de MySQL del Servicio de transferencia de datos de BigQuery también te permite crear trabajos de transferencia de datos recurrentes y on demand para transferir datos de una base de datos de MySQL a BigQuery.
Antes de comenzar
- Crea un usuario en la base de datos de MySQL.
- Verifica si completaste todas las acciones necesarias para habilitar el Servicio de transferencia de datos de BigQuery.
- Crea un conjunto de datos de BigQuery para almacenar tus datos.
- Asegúrate de tener los roles necesarios para completar las tareas de este documento.
Roles obligatorios
Si quieres configurar las notificaciones de ejecución de transferencias para Pub/Sub, asegúrate de tener el permiso pubsub.topics.setIamPolicy
de Identity and Access Management (IAM). Los permisos de Pub/Sub no son necesarios si solo configuras las notificaciones por correo electrónico. Para obtener más información, consulta la sección sobre notificaciones de ejecución del Servicio de transferencia de datos de BigQuery.
Para obtener los permisos que necesitas para crear una transferencia de datos de MySQL,
pídele a tu administrador que te otorgue el rol de IAM de
administrador de BigQuery (roles/bigquery.admin
) en tu proyecto.
Para obtener más información sobre cómo otorgar roles, consulta Administra 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 son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para crear una transferencia de datos de MySQL:
-
bigquery.transfers.update
-
bigquery.datasets.get
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Conexiones de red
Si no hay una dirección IP pública disponible para la conexión de la base de datos de MySQL, debes configurar un adjunto de red.
Para obtener instrucciones detalladas sobre la configuración de red requerida, consulta los siguientes documentos:
- Si realizas la transferencia desde Cloud SQL, consulta Cómo configurar el acceso a la instancia de Cloud SQL.
- Si realizas la transferencia desde AWS, consulta Cómo configurar la VPN y el archivo adjunto de red de AWS-Google Cloud .
- Si realizas la transferencia desde Azure, consulta Cómo configurar la VPN y el archivo adjunto de red de Azure aGoogle Cloud .
Limitaciones
Las transferencias de datos de MySQL están sujetas a las siguientes limitaciones:
- El parámetro de configuración
max_connections
de MySQL determina la cantidad máxima de conexiones simultáneas a una base de datos MySQL. De forma predeterminada, se establece en 151 conexiones, pero se puede configurar en un límite más alto según sea necesario. Como resultado, la cantidad de ejecuciones de transferencias simultáneas a una sola base de datos de MySQL se limita a esa cantidad máxima. Esta limitación también significa que la cantidad de trabajos de transferencia simultáneos debe limitarse a un valor inferior a la cantidad máxima de conexiones simultáneas que admite la base de datos de MySQL. - En MySQL, algunos tipos de datos se asignan al tipo de cadena en BigQuery para evitar pérdidas 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.
Configura una transferencia de datos de MySQL
Selecciona una de las siguientes opciones:
Console
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 configuración de la transferencia (Transfer config name), en Nombre visible (Display name), ingresa el nombre de la transferencia. El nombre de la transferencia puede ser cualquier valor que te permita identificarla si es necesario hacerle modificaciones más tarde.
En la sección Opciones de programación, haz lo siguiente:
- Selecciona una frecuencia de repetición. Si seleccionas las opciones Horas, Días (opción predeterminada), Semanas o Meses, también debes especificar una frecuencia. También puedes seleccionar la opción Personalizado para crear una frecuencia de repetición más específica. Si seleccionas la opción Según demanda, esta transferencia de datos solo se ejecuta cuando activas la transferencia de forma manual.
- Si corresponde, selecciona la opción Comenzar ahora o Comenzar a una hora determinada y proporciona una fecha de inicio y una hora de ejecución.
En la sección Configuración de destino, en Conjunto de datos, selecciona el conjunto de datos que creaste para almacenar tus datos o haz clic en Crear conjunto de datos nuevo y crea uno para usarlo como conjunto de datos de destino.
En la sección Detalles de fuente de datos, haz lo siguiente:
- En Adjunto de red, selecciona un adjunto de red existente o haz clic en Crear adjunto de red. Para obtener más información, consulta la sección Conexiones de red de este documento.
- En Host, ingresa el nombre de host o la dirección IP del servidor de la base de datos de MySQL.
- En Número de puerto, ingresa el número de puerto del servidor de la base de datos MySQL.
- En Nombre de la base de datos, ingresa el nombre de la base de datos de MySQL.
- En Nombre de usuario, ingresa el nombre de usuario del usuario de MySQL que inicia la conexión a la base de datos de MySQL.
- En Contraseña, ingresa la contraseña del usuario de MySQL que inicia la conexión de la base de datos de MySQL.
- En Modo de encriptación, selecciona Completo en el menú para habilitar la validación completa de SSL cuando te conectes a la base de datos de MySQL, o selecciona Inhabilitar para que no se realice la validación de SSL.
Para que se transfieran los objetos de MySQL, haz una de las siguientes acciones:
- Haz clic en Explorar para seleccionar las tablas de MySQL que se requieren para la transferencia y, luego, haz clic en Seleccionar.
- Ingresa manualmente los nombres de las tablas de los objetos de MySQL que deseas transferir.
Opcional: En el menú Cuenta de servicio, especifica una cuenta de servicio personalizada para autorizar la transferencia. Asegúrate de que la cuenta de servicio que se usa tenga todos los roles y permisos necesarios. Para obtener más información, consulta Cómo transferir el propietario como una cuenta de servicio.
Opcional: En la sección Opciones de notificación, haz lo siguiente:
- Para habilitar las notificaciones por correo electrónico, haz clic en el botón de activar o desactivar Notificaciones por correo electrónico para ponerlo en la posición de activado. Cuando habilitas esta opción, el administrador de transferencias recibe una notificación por correo electrónico cuando falla una ejecución de transferencia.
- Para configurar las notificaciones de ejecución de Pub/Sub para tu transferencia, haz clic en el botón de activar o desactivar Notificaciones de Pub/Sub para ponerlo en la posición de activado. Puedes seleccionar el nombre del tema o hacer clic en Crear un tema para crear uno.
Haz clic en Guardar.
bq
Ingresa el comando bq mk
y suministra la marca de creación de transferencias --transfer_config
.
bq mk \ --transfer_config \ --project_id=PROJECT_ID \ --data_source=DATA_SOURCE \ --display_name=DISPLAY_NAME \ --target_dataset=DATASET \ --params='PARAMETERS'
Reemplaza lo siguiente:
- PROJECT_ID (opcional): El ID de tu proyecto de Google Cloud .
Si no se proporciona la marca
--project_id
para especificar un proyecto en particular, se usa el proyecto predeterminado. - DATA_SOURCE: Es 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 con facilidad si es necesario hacerle modificaciones más tarde.
- DATASET: el conjunto de datos de destino para la configuración de transferencia de datos.
PARAMETERS son los parámetros de la configuración de transferencia creada en formato JSON. Por ejemplo:
--params='{"param":"param_value"}'
Los siguientes son los parámetros para una transferencia de MySQL:networkAttachment
(opcional): Es el nombre del adjunto de red para conectarse a la base de datos de MySQL.connector.database
: Es el nombre de la base de datos de MySQL.connector.endpoint.host
: El nombre de host o la dirección IP de la base de datos.connector.endpoint.port
: Es el número de puerto de la base de datos.connector.authentication.username
: Es el nombre de usuario del usuario de la base de datos.connector.authentication.password
: La contraseña del usuario de la base de datos. connector.connectionTypeconnector.connectionType
(opcional): Es el tipo de conexión para determinar la URL de conexión. Puede serSERVICE
,SID
oTNS
. Si no se proporciona, el valor predeterminado esSERVICE
.connector.encryptionMode
: Es el modo de encriptación. Puede serFULL
para la validación completa de SSL cuando te conectas a la base de datos de MySQL oDISABLE
para no realizar la validación de SSL.assets
: Es una lista de los nombres de las tablas de MySQL que se transferirán desde la base de datos de 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
.
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 tu transferencia de datos, consulta Problemas de transferencia de MySQL.
¿Qué sigue?
- Si deseas obtener una descripción general del Servicio de transferencia de datos de BigQuery, consulta ¿Qué es el Servicio de transferencia de datos de BigQuery?.
- Para obtener información sobre el uso de las transferencias (por ejemplo, cómo obtener información sobre una configuración de transferencia, mostrar distintas configuraciones o visualizar su historial de ejecuciones), consulta Manejar transferencias.
- Obtén más información sobre cómo cargar datos con operaciones entre nubes.