我正在使用@ 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,
        }
});

09-26 18:37