LAS CONEXIONES SIMULTÁNEAS PUEDE CAUSAR UNA CAÍDA EN MariaDB, y perder la conexión del sitio web de WordPress con la Base de Datos, causando un ERROR DE CONEXIÓN CON LA BASE DE DATOS.
Arrancar, detener y reiniciar
Arrancar MariaDB sudo systemctl start mariadb
Detener MariaDB sudo systemctl stop mariadb
Reiniciar MariaDB sudo systemctl restart mariadb
Estado del servicio
- Ver estado (sin quedarse dentro del visor)bash
sudo systemctl status mariadb --no-pager - Ver si arranca al inicio del sistemabash
sudo systemctl is-enabled mariadb
Logs y errores
- Ver últimos registros de MariaDBbash
journalctl -u mariadb -n 50 --no-pager - Ver logs en tiempo realbash
journalctl -u mariadb -f
Comprobación de conexión
- Entrar al cliente MySQL/MariaDBbash
mysql -u root -p - Probar conexión remotabash
mysql -u usuario -p -h IP_DEL_VPS
Consejo: Si alguna vez te quedas “atrapado” viendo el estado con systemctl status, recuerda que basta con pulsar q para salir y volver al prompt.
Aquí tienes una mini‑guía de optimización de MariaDB para un VPS con 2 GB de RAM. Con estos ajustes tu servidor debería mantenerse estable y evitar que el sistema lo mate por falta de memoria.
⚙️ Configuración recomendada en /etc/mysql/mariadb.conf.d/50-server.cnf
Dentro del bloque [mysqld] añade o ajusta estas líneas:
ini
[mysqld]
# Memoria principal para InnoDB (ajustada a 256 MB para 2 GB de RAM)
innodb_buffer_pool_size = 256M
# Número máximo de conexiones simultáneas
max_connections = 100
# Tamaño máximo de tablas temporales en memoria
tmp_table_size = 64M
max_heap_table_size = 64M
# Caché de consultas (puede ayudar en sitios con muchas lecturas repetidas)
query_cache_size = 32M
query_cache_type = 1
# Limitar el tamaño del log binario si no usas replicación
expire_logs_days = 7
max_binlog_size = 100M
# Evitar que MariaDB consuma demasiada RAM en operaciones grandes
join_buffer_size = 2M
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 4M
Pasos para aplicar
Edita el archivo: sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Añade el bloque [mysqld] con los parámetros anteriores.
Guarda con Ctrl+O, confirma con Enter y sal con Ctrl+X.
Reinicia MariaDB: sudo systemctl restart mariadb sudo systemctl status mariadb --no-pager
Consejos adicionales
- Activa swap si tu VPS no la tiene, para evitar OOM‑kill:bash
sudo fallocate -l 1G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile - Monitoriza consumo con:bash
htop - Ajusta valores si notas que MariaDB sigue consumiendo demasiada RAM.
script automático pensado para tu VPS Debian con 2 GB de RAM. Este script ajusta los parámetros de MariaDB y activa un archivo de swap de 1 GB para evitar que el sistema vuelva a matar el proceso por falta de memoria.
Aquí tienes un script avanzado que no solo optimiza MariaDB y activa swap, sino que además monitoriza el servicioy lo reinicia automáticamente si detecta un fallo por OOM‑kill (falta de memoria).
Script avanzado: Optimización + Monitorización MariaDB
Guárdalo como mariadb_monitor.sh:
bash
#!/bin/bash
# Script avanzado para optimizar y monitorizar MariaDB en VPS Debian (2 GB RAM)
CONF="/etc/mysql/mariadb.conf.d/50-server.cnf"
echo "🔧 Ajustando configuración de MariaDB..."
# Añadir bloque [mysqld] si no existe
if ! grep -q "
\[mysqld\]
" $CONF; then
echo "[mysqld]" | sudo tee -a $CONF
fi
# Añadir parámetros optimizados
sudo tee -a $CONF > /dev/null <<EOL
innodb_buffer_pool_size = 256M
max_connections = 100
tmp_table_size = 64M
max_heap_table_size = 64M
query_cache_size = 32M
query_cache_type = 1
join_buffer_size = 2M
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 4M
EOL
echo "✅ Configuración añadida a $CONF"
# Reiniciar MariaDB
sudo systemctl restart mariadb
echo "✅ MariaDB reiniciado"
# Crear swap de 1 GB si no existe
if ! grep -q "/swapfile" /etc/fstab; then
echo "🔧 Creando archivo de swap de 1 GB..."
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo "/swapfile none swap sw 0 0" | sudo tee -a /etc/fstab
echo "✅ Swap activado y configurado en /etc/fstab"
else
echo "ℹ️ Swap ya está configurado en el sistema"
fi
# Monitorización: comprobar si MariaDB está activo
echo "🔍 Comprobando estado de MariaDB..."
if ! systemctl is-active --quiet mariadb; then
echo "⚠️ MariaDB no está activo. Intentando reinicio..."
sudo systemctl restart mariadb
if systemctl is-active --quiet mariadb; then
echo "✅ MariaDB reiniciado correctamente tras fallo."
else
echo "❌ Error: MariaDB no pudo reiniciarse. Revisa logs con: journalctl -u mariadb -xe"
fi
else
echo "✅ MariaDB está activo y funcionando."
fi
echo "🎉 Script completado. MariaDB optimizado y monitorizado."
Cómo usarlo
Crea el archivo: nano mariadb_monitor.sh
Pega el contenido.
Guarda con Ctrl+O, confirma con Enter, y sal con Ctrl+X.
Dale permisos de ejecución: chmod +x mariadb_monitor.sh
Ejecútalo:./mariadb_monitor.sh
Soluciones prácticas
1. Ajustar max_connections
- Con 2 GB de RAM puedes subirlo a 100 (como ya configuramos).
- No conviene subirlo demasiado, porque cada conexión consume memoria.
2. Usar un pool de conexiones
- Instala y configura un pool de conexiones (ej.
ProxySQLoMariaDB MaxScale). - Esto permite que las aplicaciones web reutilicen conexiones en lugar de abrir nuevas cada vez.
3. Optimizar consultas
- Revisa que las consultas SQL sean rápidas y usen índices.
- Evita consultas pesadas que bloqueen la base de datos.
4. Cachear resultados
- Usa memcached o Redis para cachear datos frecuentes y reducir la carga sobre MariaDB.
5. Escalar infraestructura
- Si el tráfico sigue creciendo, considera:
- Migrar a un VPS con más RAM.
- Usar un balanceador de carga con varias instancias de base de datos.