Прослушивание события изменения mysql с использованием модуля zongji не работает
Я пытаюсь прослушать событие изменения MySQL в моем приложении с помощью модуля MySQL. Для этого я должен знать, что мне нужно убедиться, что модуль Zongji работает нормально.
Итак, вот что я пробовал до сих пор:
--my server.js
var ZongJi = require('zongji');
var zongji = new ZongJi({
host : 'db_host',
user : 'root',
password : 'kakaun',
insecureAuth: true,
debug: true
});
zongji.start({
includeEvents: ['tablemap', 'writerows', 'updaterows', 'deleterows']
});
zongji.on('binlog', function(evt) {
console.log("+++++Inside binlog event++++");
evt.dump();
});
process.on('SIGINT', function() {
console.log('Got SIGINT.');
zongji.stop();
process.exit();
});
(Пример из https://github.com/nevill/zongji/blob/master/example.js)
Я прекрасно настроил binlog для mysql, и он также создает журнал.
Но я не могу ничего записать в вышеприведенную консоль для любого события изменения в моем приложении узла.
Когда я включил опцию debug = true, я вижу, что для каждого изменения в журнале базы данных я получаю этот журнал отладки:
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
Итак, это означает, что мое приложение может успешно связаться с binlog MySQL, но как я знаю, какая строка изменилась или что изменилось? Потому что zongzi.on('binlog', [Function]) ничего не печатает.
1 ответ
Так что после долгих отладок я обнаружил проблему. Вот что я упустил из виду и делал неправильно. Я хотел бы опубликовать свою ошибку, чтобы другой пользователь мог избежать этого.
По умолчанию, если вы включите binlog для mysql, это будет журналирование на основе событий, которое модуль zongji не мог понять. https://dev.mysql.com/doc/internals/en/binary-log-overview.html
Следовательно, вам нужно включить ведение журнала на основе строк, чтобы получить полезную информацию (чтобы узнать, что изменилось).
ведение журнала на основе строк можно включить с помощью этого дополнительного оператора в файле my.cnf файла конфигурации mysql:
binlog_format = row
После добавления этого и перезапуска сервера MySQL все стало работать нормально.