Despliegue, Carga y Monitoreo de MySQL
con Docker
Objetivo del laboratorio
Aprenderás a:
1. Desplegar un servidor MySQL en Docker.
2. Crear una base de datos con una tabla.
3. Generar tráfico automático hacia el servidor desde otro contenedor.
4. Monitorear el consumo de recursos (CPU, memoria, disco) desde Docker y desde
MySQL.
5. Evaluar el comportamiento del sistema bajo carga.
Requisitos
• Navegador web actualizado.
• Cuenta gratuita en DockerHub para usar Play With Docker.
• Conexión estable a Internet.
Parte 1: Ingresar a Play With Docker (PWD)
1. Ir a [Link]
2. Iniciar sesión con tu cuenta de DockerHub.
3. Hacer clic en Start.
4. Presionar + Add New Instance para crear una terminal (Máquina 1).
Parte 2: Desplegar MySQL en Docker
En la terminal de la Máquina 1, escribe:
docker run --name mysql-server -e MYSQL_ROOT_PASSWORD=admin123 -p
3306:3306 -d mysql:5.7
Verifica que está corriendo:
docker ps
Parte 3: Crear base de datos y tabla
Accede al contenedor:
docker exec -it mysql-server bash
Conéctate a MySQL:
mysql -u root -p
# Contraseña: admin123
Ejecuta los siguientes comandos:
CREATE DATABASE laboratorio;
USE laboratorio;
CREATE TABLE visitas (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(50),
momento TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Sal del cliente MySQL:
exit
Y del contenedor:
exit
Parte 4: Crear segunda instancia para simular tráfico
1. Clic en + Add New Instance (Máquina 2).
2. En esta nueva terminal:
apk add --no-cache mysql-client
Ahora crea un script para generar carga hacia el servidor MySQL.
Crear script
[Link]
vi [Link]
Presiona la tecla i para entrar en modo de inserción.
Pega el siguiente contenido (reemplaza IP_MAQUINA_1 por la IP de tu primera instancia):
#!/bin/sh
INICIO=$(date +%s)
DURACION=$((30 * 60)) # 30 minutos en segundos
while [ $(($(date +%s) - $INICIO)) -lt $DURACION ]; do
mysql -h IP_MAQUINA_1 -u root -padmin123 -e "USE laboratorio; INSERT
INTO visitas (nombre) VALUES ('CargaAutomatica');"
echo "Insert ejecutado en $(date)"
sleep 5
done
Una vez pegado el contenido, presiona Esc para salir del modo de inserción.
Escribe :wq y presiona Enter para guardar y salir del archivo.
Hazlo ejecutable y ejecútalo:
chmod +x [Link]
./[Link]
Este script insertará un dato cada 5 segundos durante 30 minutos.
Parte 5: Monitoreo desde Docker
En la Máquina 1, corre:
docker stats
🔹 Se muestra en tiempo real:
• Consumo de CPU.
• Memoria utilizada.
• Lectura/escritura en disco.
• Red usada.
Parte 6: Monitoreo desde MySQL
Vuelve a entrar al contenedor de MySQL:
docker exec -it mysql-server bash
mysql -u root -p
# Contraseña: admin123
Ver procesos activos
SHOW PROCESSLIST;
🔹 Puedes ver conexiones abiertas y consultas en ejecución.
Ver uso de buffers (memoria)
SHOW STATUS LIKE 'Innodb_buffer_pool%';
• Innodb_buffer_pool_reads: lecturas desde disco.
• Innodb_buffer_pool_read_requests: lecturas totales.
Ver uso de disco por base de datos
SELECT table_schema AS "Base de datos",
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Tamaño
en MB"
FROM information_schema.tables
GROUP BY table_schema;
Medir tiempo de ejecución de una consulta
SET PROFILING = 1;
SELECT * FROM visitas;
SHOW PROFILES;
🔹 Muestra duración de la consulta en milisegundos.
Limpieza final del entorno
Cuando hayas terminado:
docker stop mysql-server
docker rm mysql-server