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 服务器后,一切都开始正常工作。
我正在尝试使用 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 服务器后,一切都开始正常工作。