¿Por qué alojar MariaDB en un VPS?
MariaDB es un fork comunitario de MySQL, 100 % de código abierto, reconocido por su rendimiento, su fiabilidad y su compatibilidad total con las aplicaciones MySQL existentes. Alojado en un VPS, le libera de las restricciones del alojamiento compartido: sin límite de conexiones impuesto, sin cuotas arbitrarias sobre el tamaño de las bases de datos, y con la posibilidad de ajustar con precisión los parámetros del motor InnoDB según su carga real. Usted mantiene el control de sus copias de seguridad, sus usuarios y la seguridad de red, sin depender de un proveedor externo para cada operación de mantenimiento.
Hoy están disponibles dos versiones LTS: MariaDB 11.4 LTS (lanzada en mayo de 2024, soporte garantizado hasta 2028+) y MariaDB 10.11 LTS (soporte hasta febrero de 2028). Ambas son estables para producción; la 11.4 incorpora el abandono definitivo del cliente mysql en favor de mariadb, mejor paralelismo de hilos y mejoras en InnoDB.
Lo que puede hacer con MariaDB en su VPS
- Alojar varias bases de datos para distintos proyectos o clientes en una sola instancia, con aislamiento por usuario de MariaDB
- Conectar su aplicación Laravel, Symfony, WordPress o cualquier otro framework a través del puerto estándar 3306, en local o desde un servidor remoto protegido por firewall
- Realizar copias de seguridad automatizadas con
mariadb-dumpy almacenarlas comprimidas con retención configurable - Configurar la replicación maestro-esclavo para garantizar la alta disponibilidad o descargar las lecturas intensivas
- Optimizar el rendimiento ajustando
innodb_buffer_pool_size,innodb_log_file_sizeymax_connectionsdirectamente en/etc/mysql/conf.d/ - Gestionar sus bases de datos con interfaces gráficas como phpMyAdmin, Adminer o DBeaver conectadas de forma remota a través de un túnel SSH seguro
Requisitos previos
Antes de comenzar, compruebe que dispone de los siguientes elementos:
- Un VPS ServOrbit: 2 GB de RAM mínimo (uso ligero o pruebas), 4 GB recomendados en producción. MariaDB en sí consume poco, pero el pool de búferes InnoDB (innodb_buffer_pool_size) debe representar el 60-70 % de la RAM disponible para ser eficaz — en 2 GB quedan menos de 1,2 GB útiles después del sistema operativo.
- Acceso SSH root o sudo a su VPS.
- Una versión reciente de MariaDB: MariaDB 11.4 LTS (mayo de 2024, soporte hasta 2028+) o MariaDB 10.11 LTS (soporte hasta febrero de 2028). Evite 10.6 e inferiores en producción: se acercan al fin de soporte.
- Un firewall activo (UFW o equivalente): el puerto 3306 no debe estar nunca expuesto directamente a Internet.
Instalar MariaDB en su VPS ServOrbit
Contratar un VPS Cloud ServOrbit
Vaya a /vps-cloud y elija el plan adaptado a su carga. Para una instancia MariaDB de producción, un VPS con 2 vCPU y 4 GB de RAM es un buen punto de partida. Finalice el pedido y anote las credenciales SSH (IP, usuario, contraseña o clave) enviadas por correo electrónico.
Conectarse al VPS por SSH
Abra un terminal y conéctese a su VPS:
ssh root@<your-ip>Si utiliza una clave SSH en lugar de contraseña:
ssh -i ~/.ssh/my_key root@<your-ip>Una vez conectado, compruebe la versión del sistema y los recursos disponibles:
free -mpara la memoria,nprocpara los núcleos.Acceder al Marketplace en su área de cliente
Inicie sesión en su área de cliente ServOrbit y navegue hasta la sección «Mis VPS». Seleccione el VPS que acaba de contratar y haga clic en la pestaña «Marketplace» para acceder al catálogo de aplicaciones disponibles con instalación en 1 clic.
Seleccionar MariaDB e iniciar la instalación
En el Marketplace, busque «MariaDB» y haga clic en la ficha de la aplicación. Compruebe la versión propuesta (se recomienda MariaDB 10.11 LTS o 11.4 LTS) y haga clic en «Instalar». El sistema aprovisiona automáticamente MariaDB en su VPS, configura el servicio systemd y genera una contraseña root aleatoria que se le comunica al final de la instalación.
Proteger la instalación con mysql_secure_installation
Desde su sesión SSH, ejecute:
mysql_secure_installationEste script interactivo le guía para definir o reforzar la contraseña root, eliminar los usuarios anónimos, desactivar la conexión root remota y eliminar la base de datos de prueba. Estos pasos son imprescindibles antes de cualquier uso en producción.
Conectarse al shell de MariaDB
Desde MariaDB 11, el cliente se llama
mariadb(ya nomysql). Ambos funcionan bajo 10.11, peromariadbes el comando canónico:mariadb -u root -pIntroduzca la contraseña root definida en el paso anterior. Ahora está en el shell SQL interactivo (
MariaDB [(none)]>).Crear una base de datos con utf8mb4
Cree siempre las bases de datos con codificación
utf8mb4y cotejoutf8mb4_unicode_cipara el tratamiento correcto de todos los caracteres (incluidos los emojis):CREATE DATABASE my_app CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; SHOW DATABASES;SHOW DATABASES;confirma que su base de datos aparece en la lista.Crear un usuario de aplicación dedicado
Nunca utilice
rootdesde su aplicación. Cree un usuario limitado a su base de datos:CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'strong_password'; GRANT ALL PRIVILEGES ON my_app.* TO 'appuser'@'localhost'; FLUSH PRIVILEGES;Su aplicación ya puede conectarse mediante el host
127.0.0.1, puerto3306, con estas credenciales.Verificar que MariaDB se inicia automáticamente
Asegúrese de que el servicio se reinicia tras un reinicio del VPS:
systemctl enable mariadb systemctl status mariadbLa salida debe mostrar
active (running). Si el servicio no está activado al inicio,systemctl enable mariadblo configura.
Copias de seguridad automatizadas con mariadb-dump
Una base de datos sin copias de seguridad automatizadas es una bomba de relojería. El siguiente script crea una copia de seguridad comprimida cada noche con retención de 7 días.
Cree el script de copia de seguridad en /usr/local/bin/backup-mariadb.sh:
#!/bin/bash
BACKUP_DIR="/var/backups/mariadb"
DATE=$(date +%Y%m%d_%H%M%S)
DB_USER="root"
DB_PASS="your_root_password"
RETENTION=7
mkdir -p "$BACKUP_DIR"
DATABASES=$(mariadb -u"$DB_USER" -p"$DB_PASS" -e "SHOW DATABASES;" 2>/dev/null | \
grep -vE "^(Database|information_schema|performance_schema|mysql|sys)$")
for DB in $DATABASES; do
mariadb-dump \
-u"$DB_USER" -p"$DB_PASS" \
--single-transaction \
--quick \
--routines \
--triggers \
"$DB" | gzip > "$BACKUP_DIR/${DB}_${DATE}.sql.gz"
done
find "$BACKUP_DIR" -name "*.sql.gz" -mtime +$RETENTION -deleteHaga el script ejecutable y añada una tarea cron para ejecutarlo cada noche a las 02:00:
chmod +x /usr/local/bin/backup-mariadb.sh
crontab -eAñada la siguiente línea:
0 2 * * * /usr/local/bin/backup-mariadb.sh >> /var/log/backup-mariadb.log 2>&1Para restaurar una base de datos desde una copia de seguridad:
zcat /var/backups/mariadb/my_app_20261007_020000.sql.gz | mariadb -u root -p my_appOptimización: configurar InnoDB
La configuración predeterminada de MariaDB es muy conservadora (solo unas decenas de MB para innodb_buffer_pool_size). En un VPS de producción, ajuste los parámetros InnoDB para aprovechar la memoria disponible.
Cree el archivo /etc/mysql/conf.d/performance.cnf:
[mysqld]
# InnoDB buffer pool: 60-70% of total RAM
# On 4 GB RAM → 2.5 GB
innodb_buffer_pool_size = 2560M
innodb_log_file_size = 640M
innodb_log_files_in_group = 2
# Query cache disabled on MariaDB 10.3+
query_cache_size = 0
query_cache_type = 0
max_connections = 150
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /var/log/mysql/mariadb-slow.logAjuste innodb_buffer_pool_size según la RAM de su VPS: en 2 GB, use 1228M; en 8 GB, use 5632M.
Reinicie MariaDB para aplicar la configuración:
systemctl restart mariadbVerifique que los parámetros se han aplicado correctamente:
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW VARIABLES LIKE 'query_cache_size';Acceso remoto seguro
Por defecto, MariaDB solo escucha en 127.0.0.1 — esta es la configuración segura por defecto. Para el acceso desde una aplicación en otro servidor, existen dos enfoques.
Opción 1 — Túnel SSH (recomendada, sin abrir el puerto 3306)
Desde su máquina local o servidor de aplicaciones:
ssh -L 3306:127.0.0.1:3306 -N root@<mariadb-vps-ip>Su aplicación se conecta entonces a 127.0.0.1:3306 localmente — el túnel SSH cifra el tráfico. Añada -f para poner el túnel en segundo plano.
Opción 2 — Conexión entre VPS con allowlisting de IP
Si su aplicación se ejecuta en otro VPS ServOrbit, abra el puerto únicamente para la IP de ese servidor:
# En /etc/mysql/conf.d/network.cnf
[mysqld]
bind-address = 0.0.0.0ufw allow from <app-ip> to any port 3306Cree el usuario MariaDB limitado a la IP del servidor de aplicaciones:
CREATE USER 'app'@'<app-ip>' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON my_app.* TO 'app'@'<app-ip>';
FLUSH PRIVILEGES;Resolución de problemas
Estos son los cuatro errores más frecuentes al operar MariaDB en un VPS, y cómo resolverlos.
1. Can't connect to local MariaDB server through socket
El servicio MariaDB no está en ejecución o el socket no se encuentra.
systemctl status mariadb
systemctl start mariadbSi el servicio se niega a iniciar, lea los registros:
journalctl -xe -u mariadb --no-pager | tail -402. Too many connections
El número de conexiones simultáneas ha alcanzado el límite. Aumente max_connections en /etc/mysql/conf.d/performance.cnf y recargue:
systemctl reload mariadb3. Table '<name>' is marked as crashed
Una tabla MyISAM está dañada. Repárela:
mysqlcheck -u root -p --repair my_app table_name4. Access denied for user 'root'@'localhost'
Contraseña root olvidada. Restablézcala en modo sin autenticación:
systemctl stop mariadb
mysqld_safe --skip-grant-tables &
mariadb -u rootLuego en el shell de MariaDB:
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;
EXIT;Reinicie MariaDB normalmente: systemctl restart mariadb.
MariaDB 11.4 LTS vs MariaDB 10.11 LTS vs MySQL 8.0
Desplace la tabla
| Criterio | MariaDB 11.4 LTS | MariaDB 10.11 LTS | MySQL 8.0 |
|---|---|---|---|
| Licencia | GPL v2 (comunitaria) | GPL v2 (comunitaria) | GPL v2 / Comercial (Oracle) |
| Soporte hasta | 2028+ (LTS, mayo 2024) | Febrero 2028 (LTS) | Abril 2026 (próximo EOL) |
| Cliente CLI | `mariadb` (mysql obsoleto) | `mariadb` y `mysql` | `mysql` |
| Rendimiento InnoDB | Mejorado (threadpool nativo) | Estable y probado | Bueno, optimizado por Oracle |
| Compatibilidad MySQL | Muy alta (drop-in) | Muy alta (drop-in) | Referencia |
| JSON nativo | Sí (desde MariaDB 10.2) | Sí | Sí (columnas JSON) |
| Recomendación | Proyectos nuevos, migración desde MySQL 8.0 | Producción existente, máxima estabilidad | Si dependencia Oracle/cloud específica |
Nunca exponga el puerto 3306 directamente en Internet: configure su firewall para permitir las conexiones a MariaDB únicamente en local (127.0.0.1) o a través de un túnel SSH. Active también el registro de consultas lentas (slow_query_log = 1, long_query_time = 1) desde el principio para identificar rápidamente las consultas que hay que optimizar antes de que afecten a sus usuarios.
La documentación oficial
Para la configuración avanzada, las opciones propias de la herramienta y los cambios de versión, consulte la documentación oficial de MariaDB. Esta guía cubre la puesta en línea en un VPS ServOrbit; la documentación del editor sigue siendo la referencia para los ajustes finos.