![](/img/trans.png)
[英]Unable to change the serverId of a node client using @rodrigogs/mysql-events Zongji event listener
[英]listen mysql change event using zongji module not working
我正在尝试使用mysql-event模块监听我的应用程序中的mysql change事件。 为此,我需要确定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])不打印任何内容。
因此,经过大量调试,我发现了问题。 所以这是我忽略了并且做错了的事情。 我想发布我的错误,以便其他用户可以避免这样做。
默认情况下,如果为mysql启用binlog,则它将是基于事件的日志记录,这是zongji模块无法理解的。 https://dev.mysql.com/doc/internals/en/binary-log-overview.html
因此,您需要启用基于行的日志记录,以获取有用的信息(以了解发生了什么变化)。
可以使用mysql配置文件的my.cnf文件中的以下额外语句启用基于行的日志记录:
binlog_format = row
添加此内容并重新启动mysql服务器后,一切正常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.