Saltar al contenido principal

Configuración de Base de Datos

FeedbackPulse SaaS utiliza MySQL o MariaDB como base de datos principal.


✅ Bases de Datos Compatibles

Base de DatosVersiónEstado
MySQL8.0+✅ Totalmente compatible (recomendado)
MariaDB10.6+✅ Totalmente compatible
PostgreSQL15+⚠️ Experimental (las migraciones pueden necesitar ajustes)
SQLite3.35+⚠️ Solo para desarrollo (no para producción)

🔧 Crear la Base de Datos

Antes de ejecutar el instalador:

-- Conectar a MySQL
mysql -u root -p

-- Crear base de datos con el juego de caracteres adecuado
CREATE DATABASE feedbackpulse
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

-- Crear un usuario dedicado (recomendado por seguridad)
CREATE USER 'feedbackpulse'@'localhost'
IDENTIFIED BY 'your_strong_password_here';

-- Otorgar permisos
GRANT ALL PRIVILEGES ON feedbackpulse.*
TO 'feedbackpulse'@'localhost';

FLUSH PRIVILEGES;
EXIT;

⚠️ ¿Por qué utf8mb4? Admite el conjunto de caracteres Unicode completo incluyendo emojis. El feedback de los clientes a menudo contiene emojis, ¡así que esto es importante!


⚙️ Configuración de .env

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=feedbackpulse
DB_USERNAME=feedbackpulse
DB_PASSWORD=your_strong_password_here

Problemas Comunes

ProblemaSolución
SQLSTATE[HY000] [2002] Connection refusedUsa 127.0.0.1 en lugar de localhost
SQLSTATE[HY000] [1045] Access deniedVerifica el usuario/contraseña, asegúrate de que el usuario tenga privilegios
SQLSTATE[42S01] Table already existsLa base de datos no estaba vacía. Elimínala y vuelve a crearla, o usa el indicador --force
Los emojis se muestran como ????El juego de caracteres de la base de datos debe ser utf8mb4, no utf8

🔍 Optimización del Rendimiento de MySQL

Para servidores de producción con muchos inquilinos, optimiza MySQL:

# /etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
# Pool de buffers InnoDB (configura al 50-70% de la RAM disponible)
innodb_buffer_pool_size = 1G

# Tamaño del archivo de registro
innodb_log_file_size = 256M

# Máximo de conexiones (aumenta para plataformas de alto tráfico)
max_connections = 200

# Caché de consultas (deshabilitar en MySQL 8.0+, está obsoleto)
query_cache_type = 0

# Registro de consultas lentas (para depurar problemas de rendimiento)
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2

Reinicia MySQL:

sudo systemctl restart mysql

💾 Copia de Seguridad y Restauración

Usando el Panel de Administración

FeedbackPulse tiene una función de copia de seguridad integrada:

  1. Ve a Admin → Copias de Seguridad
  2. Haz clic en Crear Copia de Seguridad
  3. Descarga el archivo .sql.gz

Copia de Seguridad Manual

mysqldump -u feedbackpulse -p feedbackpulse | gzip > backup_$(date +%Y%m%d_%H%M%S).sql.gz

Restaurar

gunzip < backup_20240101_120000.sql.gz | mysql -u feedbackpulse -p feedbackpulse

⏭️ Próximos Pasos