Программа отследить изменения в бд Mysql

Тема в разделе "Базы данных", создана пользователем dandandan, 18 июн 2012.

Модераторы: latteo
  1. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Есть программы, которые следят за изменением файлов в системе, например при установке проги показывают какие файлы были изменены или добавлены. Есть программы, которые следят за изменением реестра и тоже показывают какие ветки были добавлены или изменены.

    Есть ли похожая программа, которая бы показывала изменения содержимого БД mysql ?
     
  2. Juri

    Juri

    Заблокирован
    Регистр.:
    5 окт 2007
    Сообщения:
    1.068
    Симпатии:
    197
    почитайте про триггеры в mysql как раз то что вам нужно.
     
  3. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Думаю, что не совсем подходит. Есть локальный сайт, например форум. Есть для него база. Запускаю, например ссылку создать сообщение. Создаю его. Надо отследить где он записал данные в базу. Править php скрипты, лазить по ним в поисках какие команды выполняются, создавать триггеры в базе - нет желания.

    Нужна виндовая программулина, которая бы сообщила, что была создана строка с такими-то данными в этой табличке, строка с данными в этой табличке...
     
  4. antoniony

    antoniony Постоялец

    Регистр.:
    16 май 2006
    Сообщения:
    80
    Симпатии:
    4
    MySQL триггеры никак не связаны с php скриптами. В этом то как-раз их удобство, что они напрямую работают в MySQL. Можно создать триггер, котороый будет срабатывать при каком-то действии с интересующей вас таблицей (доавление, удаление, изменение строки), и например копировать эту строку в определенную таблицу с указанием времени измения. Ну это уже как настроить.

    Виндовую программу я не встречал. И я с трудом представляю принцип ее работы. Она должна хранить дамп БД, с которым бы сравнивала текущую версию БД.
     
  5. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.403
    Симпатии:
    1.183
    Для таких целей добавил в my.ini строчки
    general_log = 1
    general_log_file = "/mysql/data/mysql.log"

    И после выполнения запроса ковыряюсь в файлике.
     
    dandandan и Cuker нравится это.
  6. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Сканирует бд до изменений, сканирует бд после изменений. Выдает различия. Аналогично работаю некоторые проги, показывающие изменения файлов и файлов реестра.

    По триггерам не удобно. Есть 50 таблиц. В каждую таблицу добавлять триггер - гемморойно.

    Нужно копировать строку в такую же таблицу. Т.е. нужна копия таблицы. Я так понимаю.


    p.s. Часто появляются задачи доработать какой-нибудь движок. Нужно знать в какие колонки, что записывается при определённых обращениях php скрипта к mysql.
     
  7. ShaDeRzz

    ShaDeRzz

    Регистр.:
    16 окт 2007
    Сообщения:
    176
    Симпатии:
    65
    А вам для каких целей, уважаемый dandandan?
    Если необходима репликация — то в mysql есть стандартная схема
    master-slave репликации. можно почитать, к примеру, тут:
    http://habrahabr.ru/post/56702/ MySQL позволяет логировать любые действия с базой в виде sql-запросов.
    Если необходимы какие-то логи или уведомления при конкретных действиях с конкретными таблицами - то юзайте триггеры.

    Иначе более точно поставьте задачу.

    UPD:

    пока писал вам ответ, вы уже уточнили


    Тогда вам следует копать в сторону General Query Log
    Доступно описано об этом тут:
    http://sql-error.microbecal.com/chap1.html

    Ищите на странице по ссылке фразу "В случае с MySQL мы можем применить general query log" и читайте далее по тексту
     
  8. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Последние посты более информативны, но все же хочется готовое софтовое решение.