listen mysql 使用 zongji 模块更改事件无效

listen mysql change event using zongji module not working

我正在尝试使用 mysql-事件模块在我的应用程序中监听 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 的二进制日志,但我如何知道哪一行发生了变化或者发生了什么变化?因为 zongzi.on('binlog', [Function]) 没有打印任何东西。

于是经过大量的调试,我发现了问题所在。所以这是我忽略了并且做错的事情。我想 post 我的错误,以便其他用户可以避免这样做。

默认情况下,如果为mysql启用binlog,它将是基于事件的日志记录,而zongji 模块无法理解。 https://dev.mysql.com/doc/internals/en/binary-log-overview.html

因此您需要启用基于行的日志记录,以获取有用的信息(了解发生了什么变化)。

可以在 mysql 配置文件的 my.cnf 文件中使用以下额外语句启用基于行的日志记录:

binlog_format    = row

添加它并重新启动 mysql 服务器后,一切都开始正常工作。