Pular para o conteúdo principal

Configuração do Banco de Dados

O FeedbackPulse SaaS usa MySQL ou MariaDB como banco de dados principal.


✅ Bancos de Dados Suportados

Banco de DadosVersãoStatus
MySQL8.0+✅ Totalmente suportado (recomendado)
MariaDB10.6+✅ Totalmente suportado
PostgreSQL15+⚠️ Experimental (as migrations podem precisar de ajustes)
SQLite3.35+⚠️ Apenas para desenvolvimento (não para produção)

🔧 Criando o Banco de Dados

Antes de executar o instalador:

-- Conectar ao MySQL
mysql -u root -p

-- Criar banco de dados com conjunto de caracteres adequado
CREATE DATABASE feedbackpulse
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

-- Criar um usuário dedicado (recomendado por segurança)
CREATE USER 'feedbackpulse'@'localhost'
IDENTIFIED BY 'your_strong_password_here';

-- Conceder permissões
GRANT ALL PRIVILEGES ON feedbackpulse.*
TO 'feedbackpulse'@'localhost';

FLUSH PRIVILEGES;
EXIT;

⚠️ Por que utf8mb4? Ele suporta o conjunto de caracteres Unicode completo, incluindo emojis. O feedback dos clientes frequentemente contém emojis, por isso isso é importante!


⚙️ Configuração do .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 Comuns

ProblemaSolução
SQLSTATE[HY000] [2002] Connection refusedUse 127.0.0.1 em vez de localhost
SQLSTATE[HY000] [1045] Access deniedVerifique usuário/senha e garanta que o usuário tenha privilégios
SQLSTATE[42S01] Table already existsO banco de dados não estava vazio. Exclua e recrie, ou use a flag --force
Caracteres de emoji exibidos como ????O charset do banco de dados deve ser utf8mb4, não utf8

🔍 Ajuste de Desempenho do MySQL

Para servidores de produção com muitos tenants, otimize o MySQL:

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

[mysqld]
# Buffer pool do InnoDB (defina como 50-70% da RAM disponível)
innodb_buffer_pool_size = 1G

# Tamanho do arquivo de log
innodb_log_file_size = 256M

# Conexões máximas (aumente para plataformas de alto tráfego)
max_connections = 200

# Cache de consulta (desabilite no MySQL 8.0+, está obsoleto)
query_cache_type = 0

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

Reinicie o MySQL:

sudo systemctl restart mysql

💾 Backup e Restauração

Usando o Painel de Admin

O FeedbackPulse tem um recurso de backup integrado:

  1. Vá para Admin → Backups
  2. Clique em Criar Backup
  3. Baixe o arquivo .sql.gz

Backup Manual

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

Restauração

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

⏭️ Próximos Passos