我正在使用@ rodrigogs / mysql-events来监听mysql DB上的DB事件。到目前为止,效果很好,除了当我有多个客户端在监听数据库时,出现以下错误时:
A slave with the same server_uuid/server_id as this slave has connected to the master
通过一些研究,我被告知核心服务器将每个客户端视为复制服务器,因此每个客户端都必须提供不同的serverId以避免冲突。
根据@ rodrigogs / mysql-events文档,我确实通过了“ serverID”选项,如下所示,但是错误继续发生,binlog仅报告来自服务器ID 2的连接。我缺少什么?
const instance = new MySQLEvents(DBcon, {
startAtEnd: true,
serverId: 5,
excludedSchemas: {
mysql: true,
}
});
最佳答案
所以我找到了解决方案。原来上述配置是正确的。我在某些下游代码中出错。
我还对其进行了改进,以便每个客户端根据主机环境使用不同的serverId:
const instance = new MySQLEvents(DBcon, {
startAtEnd: true,
serverId: process.env.HOSTNAME == ProdHost ? 5 : 66,
excludedSchemas: {
mysql: true,
}
});