Quero registrar consultas em apenas uma tabela.
Eu encontrei estes
SET GLOBAL log_output = "FILE"; which is set by default.
SET GLOBAL general_log_file = "/path/to/your/logfile.log";
SET GLOBAL general_log = 'ON';
No entanto, isso registra todas as consultas.
Há perguntas no SO, mas elas são para registro total.
Se você quiser registrar todas as atividades para a tabela fornecida (selecionar/inserir/atualizar/excluir), você não tem escolha a não ser registrar tudo.
Se você quiser registrar apenas as modificações feitas na tabela (inserir/atualizar/excluir), você pode habilitar um binlog mestre de replicação e restringi-lo à tabela desejada:
Claro, você tem que usar
mysqlbinlog
o utilitário para decodificar o binlog.Leitura adicional: https://dev.mysql.com/doc/refman/8.4/en/replication-options-replica.html#option_mysqld_replicate-do-table
Você não pode usar o log geral ou o log lento para ser dedicado a uma única tabela.
Aqui vai uma sugestão: Configurar um Query Digest
É possível configurar um Query Digest sem usar o Slow Log. Como ???
Você pode instalar o pt-query-digest e fazer com que ele examine o MySQL Processlist
Você pode executar pt-query-digest a cada hora e então ler o cabeçalho do resumo da consulta para cada consulta e procurar a tabela que deseja criar um perfil para SELECTs, INSERTs, UPDATEs e DELETEs.
Aqui estão algumas postagens anteriores sobre isso usando pt-query-digest
Dec 28, 2011
: Existe uma ferramenta como o "SQL Server Profiler" da Microsoft para MySQL?Nov 24, 2011
: Efeitos de desempenho do log de consulta geral do MySQLEu já sugeri isso muitas vezes ao longo dos anos