/var/log/mysql/audit.log daily rotate 30 compress delaycompress postrotate mysql -e "SET GLOBAL audit_log_rotate = ON;" endscript
SET GLOBAL audit_log_filter = ' ... json ... '; "audit_record": "timestamp": "2025-02-18T10:23:45.123 UTC", "id": 202502, "class": "general", "event": "status", "connection_id": 54321, "user": "webapp@10.0.1.55", "host": "10.0.1.55", "database": "ecommerce", "command": "Query", "sqltext": "UPDATE orders SET status='shipped' WHERE order_id=12345", "status": 0, "rows_examined": 1, "rows_sent": 0 percona audit plugin
status: 1 = failure. "rule": "class": "table_access", "table": "payments", "command": ["DROP", "TRUNCATE", "DELETE", "UPDATE"], "log": true /var/log/mysql/audit
SHOW STATUS LIKE 'audit_log%'; -- e.g., audit_log_current_size, audit_log_buffer_size, audit_log_lost_events (critical): "audit_record": "timestamp": "2025-02-18T10:23:45.123 UTC"
[mysqld] audit_log_rotate_on_size = 104857600 audit_log_rotations = 9 Old files: audit.log.1 , audit.log.2 , ...
(if using syslog or custom paths):