我正在尝试使用mysql-event模块在我的应用程序中监听mysql更改事件。为此,我需要确定zongji模块是否工作正常。
因此,到目前为止,我尝试了以下内容:
--我的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的示例)
我已经为mysql完美地配置了binlog,并且它也在创建日志。
但我无法在我的节点应用程序中为上述控制台的任何更改事件记录任何内容。
当我打开debug= true选项时,我可以看到,对于数据库日志中的每个更改,我都会得到这个调试日志:
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}因此,这意味着我的应用程序能够成功地联系mysql的binlog,但我如何知道哪一行发生了更改或哪些行发生了更改?因为zongzi.on('binlog',Function)没有打印任何东西。
发布于 2017-12-19 17:09:22
所以经过大量的调试,我发现了问题所在。所以这里有一些我忽略了并且做错了的事情。我想张贴我的错误,以便其他用户可以避免这样做。
默认情况下,如果您为mysql启用binlog,它将是基于事件的日志记录,这是zongji模块无法理解的。https://dev.mysql.com/doc/internals/en/binary-log-overview.html
因此,您需要启用基于行的日志记录,以获取有用的信息(以了解发生了哪些更改)。
可以在mysql配置文件的my.cnf文件中使用以下额外语句启用基于行的日志记录:
binlog_format = row添加完这段代码并重新启动mysql服务器后,一切都开始正常工作。
https://stackoverflow.com/questions/47882640
复制相似问题