Controlador MySQL
Esta página describe la implementación del controlador MySQL en Gigantics y cómo los parámetros de conexión se corresponden con los campos de la interfaz.
Parámetros de conexión
| Campo UI | Implementación técnica | Descripción | Obligatorio | Valor por defecto |
|---|---|---|---|---|
| Host | host en la configuración de mysql2 | Nombre o IP del servidor MySQL | Sí | localhost |
| Puerto | port en la configuración | Puerto donde escucha MySQL | Sí | 3306 (de driverPorts) |
| Base de datos | database | Nombre de la base a conectar | Sí | – |
| Usuario | user | Usuario para autenticación | Sí | – |
| Contraseña | password | Contraseña del usuario | Sí | – |
Detalles técnicos
El controlador utiliza la biblioteca mysql2. Los parámetros anteriores se pasan tal cual al objeto de configuración.
Si se habilita un túnel SSH, primero se crea el túnel y después la conexión MySQL.
Opciones de autenticación
MySQL sólo requiere usuario y contraseña.
| Tipo | Campos UI | Descripción |
|---|---|---|
| Ninguno | – | Deshabilita autenticación (no recomendado) |
| Contraseña | Usuario / Contraseña | Autenticación estándar |
| Gestor de contraseñas | Campos específicos | Obtiene credenciales de un gestor externo |
Soporte de túnel SSH
El controlador admite túneles SSH para acceder a bases detrás de firewalls o redes privadas. Consulta la página de Túnel SSH para más información.
Puntos de la API que lo usan
- Creación de Tap (descubrimiento de origen)
- Creación de Sink (destino de datos anonimizados)
- Ejecución de Pipelines (extracción y carga)
Tablas grandes y reanudación
Esta sección recoge solo lo propio de MySQL. Cómo funcionan la reanudación, los rangos paralelos y las estimaciones de filas en todos los controladores se explica en Bases de datos grandes.
Lectura
- Las tablas se leen por bloques ordenados por la clave primaria, de modo que un job que se detiene se reanuda tras la última clave que guardó. Solo se usa la clave
PRIMARY: una tabla sin ella se lee con un único cursor y empieza de nuevo si el job se detiene. - Todas las columnas de la clave primaria deben ser de tipo entero o de texto (
char,varchar,text). No se usa una clave con alguna columnaENUMoSET(MySQL las ordena por posición, no por texto), ni con columnasdecimal,numeric,float,doubleo de fecha u hora. Las clavesBIGINTmayores que 2^53 se comparan con exactitud.
Rangos paralelos y estimación de filas
- Solo se cortan rangos para una clave de una única columna entera, repartida a partes iguales entre su mínimo y su máximo. Las tablas con clave compuesta o de texto se leen en un único flujo, y se pueden reanudar igualmente.
- La estimación de filas es
TABLE_ROWSdeINFORMATION_SCHEMA.TABLES, que en InnoDB es aproximada.
Carga
- Cada sesión que carga datos ejecuta
SET FOREIGN_KEY_CHECKS=0, así que las tablas se pueden cargar en cualquier orden. El ajuste solo dura lo que la sesión: si un job muere no queda nada desactivado. MySQL no comprueba después las filas cargadas contra las foreign keys. - La opción truncate ejecuta
TRUNCATE TABLEcon la comprobación de foreign keys desactivada, yDELETEsi falla. - Los triggers siguen activos.
Permisos
Para un sink MySQL con la opción truncate, el usuario de base de datos necesita el privilegio DROP sobre las tablas, que MySQL exige para TRUNCATE TABLE.
Parámetros personalizados (YAML)
Se pueden definir parámetros avanzados en YAML para afinar la conexión, el pool, SSL, etc.
Parámetros de conexión
# Configuración SSL
ssl:
rejectUnauthorized: false
ca: |
-----BEGIN CERTIFICATE-----
# Contenido CA
-----END CERTIFICATE-----
key: |
-----BEGIN PRIVATE KEY-----
# Clave privada cliente
-----END PRIVATE KEY-----
cert: |
-----BEGIN CERTIFICATE-----
# Certificado cliente
-----END CERTIFICATE-----
ciphers: "ECDHE-RSA-AES256-SHA:AES256-SHA"
minVersion: "TLSv1.2"
maxVersion: "TLSv1.3"
# Autenticación multifactor
password1: primera_clave
password2: codigo_otp
password3: datos_biometricos
# Opciones avanzadas
connectTimeout: 10000
charset: "UTF8MB4_UNICODE_CI"
compress: true
multipleStatements: false
timezone: "+00:00"
enableKeepAlive: true
keepAliveInitialDelay: 10000
supportBigNumbers: true
bigNumberStrings: true
dateStrings: falseConfiguración del pool
connectionLimit: 10
maxIdle: 10
idleTimeout: 60000
queueLimit: 0
waitForConnections: trueEjemplos
SSL estricto
ssl:
rejectUnauthorized: true
ca: ${file:/ruta/ca.pem}
cert: ${file:/ruta/cliente.pem}
key: ${file:/ruta/clave.pem}Soporte de números grandes
supportBigNumbers: true
bigNumberStrings: true
decimalNumbers: true
timezone: "UTC"
connectionLimit: 15
idleTimeout: 30000