Коллеги, добрый день.
После настройки syslog_ng с хранением сообщений в БД столкнулся с такой проблемой что при ротации таблиц syslog_ng не создаёт индексы к таблице.
Конфиг сислога выглядит как:
source s_syslog {
udp(ip(192.168.6.1) port(514));
};
destination d_mysql {
sql(type(mysql)
host("127.0.0.1") username("sysloglogin") password("syslogpasswd")
database("syslogdb")
table("messages_${R_YEAR}-${R_MONTH}-${R_DAY}")
columns("datetime", "host", "program", "facility", "level", "message")
values("${R_HOUR}:${R_MIN}:${R_SEC}", "$HOST", "$PROGRAM", "$FACILITY", "$LEVEL", "$MSGONLY")
indexes("datetime", "host", "program", "facility", "level", "message")
);
};
log { source(s_syslog); destination(d_mysql); };
ну и ротация логов выполняется постредством logrotate
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd-ng.pid 2> /dev/null` 2> /dev/null || true
endscript
Таблица пересоздаётся каждый день , всё вроде бы нормально, однако когда я захожу в мускуль проверить
show index from messages_2015_09_08 ;
Empty set (0.00 sec)

Хотя если сделать вручную что-нибудь типа
dst_date=`date +%Y_%m_%d`
CREATE INDEX index1 ON messages_$dst_date(facility(6), message(120));
То всё проходит на ура.