Banco de dados 0 visualizações

Como agendar consultas automáticas com eventos programados (Event Scheduler) do MySQL

Ver no WHMCS

Como agendar consultas automáticas com o Event Scheduler do MySQL 🧙‍♂️

Oi! Aqui é a Sensei da GeHost 😊 Hoje eu vou te mostrar um truque bem legal do MySQL: o Event Scheduler, que é como se fosse um "robozinho" dentro do seu banco de dados, programado pra rodar comandos SQL sozinho, em horários que você define — sem você precisar ficar clicando em nada.

Pense nele como um alarme automático: "todo dia às 3h da manhã, apague os registros temporários" ou "toda semana, gere um resumo das vendas numa tabela nova". Você programa uma vez, e ele faz isso pra sempre (ou até você mandar parar).

Dica da Sensei: isso é um recurso mais técnico do MySQL. Se você não tem muita familiaridade com SQL, vale a pena pedir ajuda de alguém de confiança ou do seu desenvolvedor antes de criar eventos que alterem dados — assim evitamos sustos! 💛

Pra que serve isso na prática?

  • Limpar tabelas de log ou sessões antigas automaticamente;
  • Atualizar contadores, estatísticas ou resumos em horários fixos;
  • Arquivar dados antigos numa tabela de histórico;
  • Rodar rotinas de manutenção do seu sistema/site sem precisar de um script externo.

Passo a passo

1. Acesse seu banco de dados

Primeiro, entre no cPanel da sua hospedagem (login e senha que você recebeu no e-mail de boas-vindas) e vá até a área de Bancos de Dados MySQL ou use o phpMyAdmin, que é onde a mágica acontece.

Tela de Bancos de Dados MySQL no cPanel

2. Confirme se o Event Scheduler está ativado

Dentro do phpMyAdmin, selecione o seu banco e vá até a aba SQL. Rode este comandinho pra checar:

SHOW VARIABLES LIKE 'event_scheduler';

Se aparecer ON, já está tudo pronto! Se aparecer OFF, não se preocupe — em ambientes de hospedagem compartilhada esse ajuste geralmente é controlado pelo servidor. Se você precisar habilitar, é só chamar a gente pelo suporte que a equipe confere isso pra você.

3. Crie seu primeiro evento

Ainda na aba SQL, você escreve o comando CREATE EVENT. Um exemplo simples, de um evento que roda todo dia à meia-noite e apaga registros de uma tabela de logs com mais de 30 dias:

CREATE EVENT limpar_logs_antigos
ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_TIMESTAMP
DO
  DELETE FROM logs WHERE data_criacao < NOW() - INTERVAL 30 DAY;

Vamos entender cada parte, sem juridiquês:

  1. CREATE EVENT limpar_logs_antigos — aqui você dá um nome pro seu evento (escolha algo que descreva o que ele faz);
  2. ON SCHEDULE EVERY 1 DAY — define a frequência (pode ser EVERY 1 HOUR, EVERY 1 WEEK, etc);
  3. STARTS CURRENT_TIMESTAMP — a partir de quando ele começa a rodar;
  4. DO ... — o comando SQL que ele vai executar sozinho, sempre nesse intervalo.
Dica da Sensei: teste SEMPRE o comando SQL de dentro do DO rodando ele manualmente primeiro (numa tabela de teste, se possível), pra ter certeza de que ele faz exatamente o que você espera. Evento automático rodando um comando errado pode apagar dado que você não queria!

4. Confira se o evento foi criado

Pra ver todos os eventos cadastrados no seu banco, rode:

SHOW EVENTS;

Você vai ver uma listinha com o nome do evento, o status (ENABLED = ativo) e a próxima execução.

5. Pausar, retomar ou apagar um evento

Se um dia você quiser dar uma pausa no evento (sem apagar ele):

ALTER EVENT limpar_logs_antigos DISABLE;

Pra ligar de novo:

ALTER EVENT limpar_logs_antigos ENABLE;

E se quiser removê-lo de vez:

DROP EVENT limpar_logs_antigos;

Exemplos de agendamento mais usados

  • EVERY 1 HOUR — de hora em hora;
  • EVERY 1 DAY — uma vez por dia;
  • EVERY 1 WEEK — uma vez por semana;
  • EVERY 1 MONTH — uma vez por mês;
  • ON SCHEDULE AT '2026-08-01 03:00:00' — pra rodar só UMA vez, numa data e hora específica.
Dica da Sensei: prefira agendar rotinas pesadas (tipo limpeza de tabelas grandes) pra horários de baixo movimento do seu site, de madrugada por exemplo — assim seu banco de dados não fica sobrecarregado num horário de pico. 🌙

Quando pedir ajuda pra gente

Se você não tem certeza se o Event Scheduler está habilitado no seu plano, se o comando SQL parece arriscado, ou se algo não funcionou como esperado, é só chamar o suporte da GeHost pelo painel.gehost.com.br que a equipe te ajuda a revisar com calma. Também vale lembrar que todo serviço entregue pela GeHost já vem com 30 dias de suporte grátis após a entrega — aproveite esse período pra tirar qualquer dúvida! 💛

Prontinho! Agora seu banco de dados tem um "ajudante" trabalhando 24 horas por dia pra você, sem precisar de scripts externos nem de você acordar de madrugada pra rodar comando nenhum. Qualquer dúvida, a Sensei tá por aqui! 🥋

Precisa de Ajuda?

Nossa equipe está pronta para resolver suas dúvidas.