Skip to main content
[ PIER ]

MySQL

La base de datos relacional más desplegada del mundo.

Database Listo para clúster #sql#relational

MySQL es una base de datos SQL madura, rápida y probada en batalla que mueve WordPress, Joomla, Drupal, Magento y un sinfín de aplicaciones LAMP. Pier despliega la imagen Docker oficial con backups automáticos, gestión por base de datos y réplicas en un clic vía la imagen InnoDB Cluster.

Desplegar con Pier

  1. 1 Abre el panel de Pier y haz clic en Add service.
  2. 2 Elige MySQL en la lista de plantillas.
  3. 3 Elige la versión, asigna un nombre al servicio y Pier provisionará automáticamente el contenedor, el almacenamiento y los puertos.
  4. 4 Vincula un dominio si quieres HTTPS. Traefik genera el certificado de Let's Encrypt automáticamente.

¿Qué es MySQL?

MySQL es la base de datos relacional más desplegada de la historia. WordPress corre sobre ella. También aproximadamente la mitad del top millón de sitios web. Construida originalmente en 1995 en Suecia, adquirida por Sun en 2008 y luego Oracle en 2010, MySQL está ahora en su release 9.x con desarrollo continuo.

Para la mayoría de aplicaciones LAMP y PHP, MySQL es el camino de menor resistencia — cada host, cada framework, cada CMS lo espera. Donde PostgreSQL gana en features avanzadas, MySQL gana en ubicuidad y familiaridad operativa.

Cómo lo despliega Pier

Pier usa la imagen Docker oficial mysql, montando /var/lib/mysql como volumen de datos. El default es latest (actualmente MySQL 9.x); las builds 8-oracle y 8.0 están disponibles para despliegues 8.x estrictos. Para clústers, Pier cambia a la imagen bitnami/mysql que soporta replicación primary-replica de fábrica (2 a 5 nodos en total).

Pier genera una contraseña root fuerte en la creación, expone 3306 internamente y (opcionalmente) publica vía Traefik. Los backups corren mysqldump --single-transaction en horario y pueden subirse a cualquier store compatible con S3.

Cuándo NO usar MySQL

Para apps embebidas — SQLite es más simple. Para tipos complejos y conformidad con estándares SQL — PostgreSQL es más fuerte. Para cargas puramente key-value o cache — Redis. MySQL es la respuesta correcta cuando necesitas una base de datos relacional familiar y bien soportada, sin necesidades exóticas de esquema.

Características clave

Motor transaccional InnoDB

Locking a nivel de fila, MVCC, foreign keys, recuperación tras crash. Intercambiable en caliente con el motor legacy MyISAM para datasets de solo lectura.

Replicación lista de fábrica

Primary/replica vía binlog, semi-sync, group replication y multi-source. La imagen bitnami/mysql usada en modo clúster gestiona la topología automáticamente.

Window functions y CTEs (8.0+)

Window functions SQL-99 completas, CTEs recursivos, funciones JSON y EXPLAIN ANALYZE. La línea 8.x cerró la mayoría del gap con PostgreSQL.

Ecosistema y herramientas

Cada stack de hosting incluye cliente MySQL — phpMyAdmin, DBeaver, MySQL Workbench, JetBrains DataGrip, todas las herramientas de backup, todos los ORMs. Contratar es más fácil que con cualquier otra base de datos.

Soporte JSON

Tipo de columna JSON nativo con expresiones de path, indexado en columnas virtuales generadas, JSON_TABLE() para proyectar documentos en filas relacionales.

Performance Schema

Instrumentación integrada — slow query log, EXPLAIN ANALYZE, vistas sys schema, tablas performance_schema. Tunea sin profilers externos.

Casos de uso

Aplicaciones WordPress y PHP

El backend por defecto para WordPress, WooCommerce, Magento, Drupal, Joomla, MediaWiki, phpBB. Cada framework PHP usa MySQL por defecto.

Backend genérico de aplicaciones web

Rails, Django, Laravel, Symfony, Express — cada framework web tiene soporte de primera clase para MySQL.

SaaS multi-tenant

Una base de datos por tenant o una columna de clave de fila por tenant. Combinado con réplicas de lectura para offload analítico.

Origen BI para dashboards

Metabase, Superset, Grafana, Looker — cada herramienta BI tiene conectores nativos para MySQL.

Objetivo de migración legacy

Al portar desde sistemas Oracle/SQL Server más antiguos, MySQL es el aterrizaje OSS más compatible gracias al soporte maduro de ANSI/ISO SQL.

Ejemplos de código

Crear tabla InnoDB + UTF-8 sql
CREATE TABLE posts (
  id        BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  slug      VARCHAR(200) NOT NULL UNIQUE,
  title     VARCHAR(255) NOT NULL,
  body      MEDIUMTEXT,
  meta      JSON,
  created   DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
  KEY idx_created (created)
) ENGINE=InnoDB
  DEFAULT CHARSET=utf8mb4
  COLLATE=utf8mb4_unicode_ci;
Consulta sobre columna JSON sql
SELECT id, title,
       JSON_EXTRACT(meta, '$.tags') AS tags,
       JSON_UNQUOTE(JSON_EXTRACT(meta, '$.author')) AS author
FROM posts
WHERE JSON_CONTAINS(meta, '"featured"', '$.flags');
Window function (total acumulado) sql
SELECT id, amount,
       SUM(amount) OVER (
         PARTITION BY customer_id
         ORDER BY created
       ) AS running_total
FROM invoices;
Backup con mysqldump bash
# Pier lo corre automáticamente en horario — también vale para uno único:
docker exec -i pier-mysql \
  mysqldump -u root -p"$MYSQL_ROOT_PASSWORD" \
            --single-transaction --routines --triggers appdb \
  | gzip > appdb-$(date +%F).sql.gz

Comparativa

vs PostgreSQL Postgres tiene un sistema de tipos más rico (JSONB, arrays, ranges), conformidad SQL más estricta e indexación más avanzada. MySQL es más rápido para cargas simples read-heavy estilo WordPress y tiene un ecosistema de hosting más amplio.
vs MariaDB MariaDB es un fork comunitario de MySQL con compatibilidad binaria hasta 5.x y features divergentes después (clúster Galera, motor ColumnStore). Usa MariaDB si quieres un fork de gobernanza totalmente abierta; MySQL si quieres releases bendecidas por Oracle.
vs SQLite SQLite es imbatible para apps embebidas mono-proceso. MySQL toma el relevo cuando necesitas escritores concurrentes, acceso por red, replicación o datos mayores que la RAM.
vs MySQL gestionado en cloud (RDS, Cloud SQL) Autohospedar en Pier es 10–30× más barato para cargas pequeñas/medianas. Pierdes la UI gestionada pero ganas control, backups a tu propio S3 y flexibilidad de versión completa.

Preguntas frecuentes

¿Qué versión de MySQL despliega Pier?
El default es `latest` (actualmente MySQL 9.x). 8-oracle y 8.0 también disponibles. Fija una versión mayor en producción para que futuras actualizaciones de imagen no te muevan de línea de release.
¿Puedo correr réplicas?
Sí — la plantilla MySQL soporta clústers de 2 a 5 nodos (1 primary + N réplicas de lectura) vía la imagen bitnami/mysql con replicación primary-replica InnoDB.
¿Cómo funcionan los backups automáticos?
Pier corre `mysqldump --single-transaction` en horario, comprime con gzip y (opcionalmente) sube a S3. Backups por base de datos y cluster-wide son configurables.
¿Puerto y connection string por defecto?
3306/tcp. Pier expone `mysql://root:password@host:3306/db` en la página de detalle del servicio; la contraseña root se autogenera.
¿Puedo conectar con phpMyAdmin o DBeaver?
Sí, cualquier cliente MySQL funciona. O expón el puerto vía Traefik (con cuidado — las DBs no deberían exponerse a internet) o tunelea por SSH para acceso administrativo.
¿Puedo migrar de MariaDB a MySQL o viceversa?
Hasta MySQL 5.x son casi drop-in. De MySQL 8+ a MariaDB 10+ requiere más atención — dump como SQL, restore en el otro lado, audita cualquier feature específica de motor de almacenamiento.
¿Cómo tuneo el InnoDB buffer pool?
Configura `innodb_buffer_pool_size` al 50–70% de la memoria del contenedor vía my.cnf custom o overrides de entorno. Pier no lo expone directamente hoy — usa un mount de archivo de config.

Servicios relacionados

Desplegar en tu VPS

MySQL es una base de datos SQL madura, rápida y probada en batalla que mueve WordPress, Joomla, Drupal, Magento y un sinfín de aplicaciones LAMP. Pier despliega la imagen Docker oficial con backups automáticos, gestión por base de datos y réplicas en un clic vía la imagen InnoDB Cluster.

Desplegar este servicio →