Criei meu primeiro EVENTO:
ALTER EVENT flush_logs_event
ON SCHEDULE EVERY 6 HOUR
COMMENT 'Rotate /var/log/mysql/master-bin*'
DO FLUSH LOGS;
Mudei de "12" para "6" devido à rapidez com que o log está crescendo para replicação. Eu quero que ele gire por tempo e não pelo tamanho do arquivo para facilitar a implantação de escravos adicionais para mim.
Eu pensei que "6 horas" significa 6H00 12H00 18H00 e 24H00. Ao mesmo tempo em que alterei o evento, também fiz um ajuste no /etc/mysql/my.cnf:
expire_logs_days=7
E então eu fiz
systemctl restart mariadb.service
O master-bin girou quando o MariaDB foi reiniciado. Ele criou master-bin.000006 . Quando reiniciei o MariaDB era ~ 5:21. Isso significa que o master-bin irá girar às 11:21, 17:21, etc.?
Para divulgação completa, também estou incluindo:
MariaDB [mysql]> show events \G
*************************** 1. row ***************************
Db: mysql
Name: flush_logs_event
Definer: root@localhost
Time zone: SYSTEM
Type: RECURRING
Execute at: NULL
Interval value: 6
Interval field: HOUR
Starts: 2021-12-09 05:21:23
Ends: NULL
Status: ENABLED
Originator: 1
character_set_client: utf8mb4
collation_connection: utf8mb4_general_ci
Database Collation: utf8mb4_general_ci
Obrigado.
Não. Isso significa "6 horas desde o início anterior". Você não especificou nenhum ponto de tempo como base - e o servidor usa a hora de início do evento anterior para esse propósito.
Se você deseja que o evento seja disparado nas horas listadas, você deve especificar a opção de agendamento STARTS - neste caso, o valor especificado será usado como base. Curti