本地代码

public class BinlogServiceTest {

public static void main(String[] args) throws IOException {

BinaryLogClient client = new BinaryLogClient(

"localhost",

3306,

"root",

"123456"

);

client.registerEventListener(event -> {

EventData data = event.getData();

if (data instanceof UpdateRowsEventData){

System.out.println("Update---------------");

System.out.println(data.toString());

}else if (data instanceof WriteRowsEventData){

System.out.println("Write---------------");

System.out.println(data.toString());

}else if (data instanceof DeleteRowsEventData){

System.out.println("Delete---------------");

System.out.println(data.toString());

}

}

);

client.connect();

}

}

运行之后,无报错,但是修改数据库也不能被监听到。

控制台显示

ec733b6445aaca7b54a6ce7397a66d22.png

Trying to restore lost connection to localhost:3306

可以看到这里尝试重连了mysql

后续发现在listenForEventPackets方法里,有如下异常

26e39f332f1764caad6280643b4681b3.png

server_id was not set 可以得出错误是因为server_id并没有设置。(坑啊,这里居然没把异常打印出来)

解决:

去到配置文件,添加:

server-id =1

重启mysql

关于修改 配置文件及windows下如何重启mysql可移步https://blog.csdn.net/qq_27037443/article/details/96099628

此时修改mysql数据库,监听成功。

3a556afd32fd74802c0f37a0e33b52cc.png

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐