Os artigos que publico são para servir de base ao aprendizado.
Existem ferramentas e métodos específicos para este fim de monitoramento com tudo este exemplo, iremos abordar os seguintes assuntos :
--> Criação de tabela & utilização de chave primaria
--> Como podemos utilizar o INFORMATION_SCHEMA..... neste caso INFORMATION_SCHEMA.PROCESSLIST.
--> Criação de PROCEDURE
--> Criação SCHEDULE & event_scheduler
1.) Vamos criar a base para gravação dos acessos.
CREATE TABLE IF NOT EXISTS `amostragem_acesso`
(
`USER` varchar(30) NOT NULL,
`HOST` varchar(30) NOT NULL,
`DATABASE` varchar(30) NOT NULL,
`DATA` datetime NOT NULL
)
-- Uma boa dica e criar ou altere o campo DATA definindo como CURRENT_TIMESTAMP
---- :-)
ALTER TABLE `amostragem_acesso` CHANGE `DATA` `DATA` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;
-- Outra boa dica crie uma chave primaria composta evitando duplicidade de registros.
-- Assim economizamosespaco e facilitamos nossa analise de acesso.
------- :-)
ALTER TABLE `amostragem_acesso` DROP PRIMARY KEY, ADD PRIMARY KEY( `USER`, `HOST`, `DATABASE`);
2.) Vamos criar a gravação do LOG.
-- A gravação do log utilizaremos o INFORMATION_SCHEMA.PROCESSLIST
INSERT INTO `monitoramento`.`amostragem_acesso` (`USER`, `HOST`, `DATABASE`) SELECT USER,HOST,DB FROM INFORMATION_SCHEMA.PROCESSLIST where DB is not null AND HOST!='localhost' AND DB!='monitoramento';
3.) COMPLICANDO PARA DESCOMPLICAR
-- Vamos criar uma procedure que gera um loop para armazenar os acessos, entre no
mysql> CREATE PROCEDURE pega_acesso1()
-> BEGIN
-> DECLARE x INT;
-> SET x = 1;
-> WHILE x <= 50 DO
-> INSERT INTO `monitoramento`.`amostragem_acesso` (`USER`, `HOST`, `DATABASE`) SELECT USER,HOST,DB FROM INFORMATION_SCHEMA.PROCESSLIST where DB is not null AND HOST!='localhost' AND DB!='monitoramento';
-> SET x = x + 1;
-> END WHILE;
-> END$$
Query OK, 0 rows affected (0.01 sec)
4.) Agora vamos criar um procedimento que acada 5 minutos pege o log de acesso.
-- Primeiro vamos ligar o event_scheduel
SET GLOBAL event_scheduler="ON"
CREATE EVENT `pega_acesso` ON SCHEDULE EVERY 5 MINUTE STARTS '2018-02-02 16:20:00.000000' ENDS '2018-02-02 18:20:00.000000' ON COMPLETION NOT PRESERVE ENABLE DO call pega_acesso1();
-- Para alteração de tempo de execução de 5 minutos para cada 1 minuto.