Configuración de Base de Datos
FeedbackPulse SaaS utiliza MySQL o MariaDB como base de datos principal.
✅ Bases de Datos Compatibles
| Base de Datos | Versión | Estado |
|---|---|---|
| MySQL | 8.0+ | ✅ Totalmente compatible (recomendado) |
| MariaDB | 10.6+ | ✅ Totalmente compatible |
| PostgreSQL | 15+ | ⚠️ Experimental (las migraciones pueden necesitar ajustes) |
| SQLite | 3.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
| Problema | Solución |
|---|---|
SQLSTATE[HY000] [2002] Connection refused | Usa 127.0.0.1 en lugar de localhost |
SQLSTATE[HY000] [1045] Access denied | Verifica el usuario/contraseña, asegúrate de que el usuario tenga privilegios |
SQLSTATE[42S01] Table already exists | La 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:
- Ve a
Admin → Copias de Seguridad - Haz clic en Crear Copia de Seguridad
- 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