RESPONSABILIDADES PRINCIPALES DE UN DBA ORIENTADAS A MYSQL

Más allá de la seguridad, el DBA tiene un conjunto de responsabilidades operativas y de planificación que mantienen la base de datos MySQL disponible, eficiente y alineada con el negocio.

Administración y mantenimiento

Incluye la instalación, configuración, actualización y soporte del software MySQL.

Ejemplo MySQL:

-- Verificar versión y estado
SELECT VERSION();
SHOW VARIABLES LIKE 'version%';

-- Aplicar cambio de configuración dinámico
SET GLOBAL max_connections = 300;
SET GLOBAL innodb_buffer_pool_size = 4294967296; -- 4GB

-- Verificar el cambio
SHOW VARIABLES LIKE 'max_connections';

Gestión de datos

El DBA gestiona importación/exportación, backups y recuperación.

Ejemplo MySQL:

-- Backup lógico de una base de datos
-- (ejecutar desde terminal)
mysqldump -u root -p --single-transaction --routines --triggers mi_empresa > backup_mi_empresa.sql

-- Restaurar
mysql -u root -p mi_empresa < backup_mi_empresa.sql

-- Backup solo de estructura
mysqldump -u root -p --no-data mi_empresa > estructura.sql

Control de acceso

Diseña e implementa usuarios, roles y privilegios siguiendo el principio de mínimo privilegio.

Ejemplo MySQL:

-- Crear rol y usuario
CREATE ROLE 'app_lectura';
GRANT SELECT ON mi_empresa.* TO 'app_lectura';

CREATE USER 'app_user'@'%' IDENTIFIED BY 'ClaveSegura2026!';
GRANT 'app_lectura' TO 'app_user'@'%';
SET DEFAULT ROLE 'app_lectura' TO 'app_user'@'%';

-- Verificar privilegios
SHOW GRANTS FOR 'app_user'@'%';

Planificación

Anticipa el crecimiento de capacidad, espacio en disco y necesidades del negocio.

Ejemplo MySQL:

-- Tamaño de las bases de datos y tablas
SELECT 
  table_schema AS 'Base de Datos',
  ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 'Tamaño (MB)'
FROM information_schema.TABLES
GROUP BY table_schema
ORDER BY SUM(data_length + index_length) DESC;

-- Tamaño de las tablas más grandes
SELECT 
  TABLE_NAME,
  ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS 'Tamaño (MB)'
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'mi_empresa'
ORDER BY (DATA_LENGTH + INDEX_LENGTH) DESC
LIMIT 10;

Supervisión

Monitorea logs, rendimiento y genera alertas.

Ejemplo MySQL:

-- Ver procesos activos
SHOW FULL PROCESSLIST;

-- Consultas lentas recientes (performance_schema)
SELECT 
  DIGEST_TEXT,
  COUNT_STAR AS ejecuciones,
  ROUND(AVG_TIMER_WAIT/1000000000, 2) AS avg_ms
FROM performance_schema.events_statements_summary_by_digest
ORDER BY AVG_TIMER_WAIT DESC
LIMIT 10;

-- Estado de InnoDB
SHOW ENGINE INNODB STATUS\G

Optimización

Realiza tuning de consultas, índices y configuración.

Ejemplo MySQL:

-- Analizar una consulta
EXPLAIN FORMAT=JSON
SELECT c.nombre, p.fecha, p.total
FROM clientes c
JOIN pedidos p ON c.id = p.cliente_id
WHERE p.fecha >= '2026-01-01';

-- Crear índice para mejorar rendimiento
CREATE INDEX idx_pedidos_fecha ON pedidos(fecha);

-- Actualizar estadísticas
ANALYZE TABLE pedidos;