мы имеем дело с устаревшим приложением, построенным на MySQL 5.0 (MyISAM). Мне нужно знать в в реальном времени, когда обновление, удаление или вставка происходит с определенной таблицей. Проблема в том, что я никак не могу изменить базу данных (т.е. триггеры записи). Мне нужно использовать журнал bin, репликацию или что-то еще, что не является инвазивным.
Мы рассмотрели использование команды mysqlbinlog для анализа двоичного журнала. Однако это не в реальном времени, и мы предпочли бы сделать что-то более событийное.
Есть идеи?






проверьте Прокси MySQL. он позволяет вам нажимать прямо в потоке команд / ответов и полностью программируется в Lua. вы даже можете изменять команды в реальном времени, если хотите
Мы немного посмотрели на это, и это могло сработать. План был бы следующим: 1) Измените порт, который слушает MySQL, а затем установите его на старый порт MySQL. 2) Захватить действия в нашу таблицу и вызвать какую-нибудь команду оболочки. Однако мы бы предпочли использовать <b> mysqlbinlog </b> как <b> демон </b>.
Прокси-сервер MySQL больше не развивается. MySQL Router заменил его с аналогичной функциональностью.
Я экспериментирую с использованием mysqlbinlog -R -t, чтобы получить фид в реальном времени, он работает до конца, затем вам нужно найти последнюю прочитанную позицию и продолжить там, в сочетании с запросом файлов журнала, это должно дать вам все файлы один за другим .... экспериментирую с этим ..
Кроме того, если вы хотите узнать в режиме реального времени, произошло ли изменение в одной таблице, я бы посоветовал вам создать триггер на главном сервере, а затем вы можете вставить данные в отдельную базу данных, которая реплицируется сама по себе. внутри триггера вы можете получить доступ к другому серверу, даже используя интегрированный сервер. http://dev.mysql.com/tech-resources/articles/mysql-federated-storage.html
Вы когда-нибудь что-нибудь придумали для этого?