Время последнего изменения данных в MySQL DB

pachanga

Новичок
Нет, точно не репликация :) Спасибо за ссылки, как раз сел разбираться с бинарным журналом....

-~{}~ 06.10.04 13:39:

Да, похоже, bin log то что надо, еще раз спасибо

-~{}~ 06.10.04 14:25:

Может, кому пригодится:

Код:
mysqlbinlog -s --database=${DB} ${BIN_LOG_FILE_PATH} | tail -n 2 | grep TIME STAMP | cut -d= -f2 | cut -d\; -f1
Выводит дату последнего изменения базы данных DB из бинарного лога BIN_LOG_FILE_PATH

-~{}~ 13.10.04 09:33:

Update:
Код:
mysqlbinlog -s --database=${DB} ${BIN_LOG_FILE_PATH} | fgrep "SET TIMESTAMP" | tail -n 1 | cut -d= -f2 | cut -d\; -f1
[code]

Более быстрый и правильный вариант
 

Yurik

/dev/null
добавь перед fgrep контейнер с "tail -n 2", будет на порядок быстрее.
 

pachanga

Новичок
Автор оригинала: Yurik
добавь перед fgrep контейнер с "tail -n 2", будет на порядок быстрее.
Боюсь, не совсем так... в первом варианте у меня так и было, однако опыт показал, что не все записи в bin log обязательно содержат строку TIME STAMP :( Поэтому я и написал второй вариант....

Там еще есть одна особенность, bin log обычно фрагментирован на несколько файлов, поэтому порой приходится делать такую проверку по нескольку раз....
 

Yurik

/dev/null
Да, кстати. Я не разобрался какой ${BIN_LOG_FILE_PATH} надо ставить. Индексный файл он не понимает, а файлов журнала то много :-(
не все записи в bin log обязательно содержат строку TIME STAMP
ну хотя бы `tail -n 10 а то fgrep по большому журналу наверно будет жутко тормозить
 

pachanga

Новичок
Автор оригинала: Yurik
Я не разобрался какой ${BIN_LOG_FILE_PATH} надо ставить.
Ну один из них :) , т.е. в худшем случае придется проверить в цикле все, начиная с последнего....имеет смысл подчищать логи некоторым образом

ну хотя бы `tail -n 10 а то fgrep по большому журналу наверно будет жутко тормозить
Навсякий случай, tail -n 50, так оно тоже побыстрее будет
 
Сверху