首先MySQL数据库他有主机从机,他是主从同步的,当我们对数据库进行增删改操作的时候,主服务器他会把这些操作记录到binlog日志,然后从服务器会发送dump 协议,请求获取主服务器上的binlog日志.主机收到dump请求会把binlog推送给从机,然后从机再根据日志内容更新数据库.
canal就是通过MySQL的主从复制原理,把自己伪装成一个MySQL的从服务器,然后向主机发送一个dump协议,主机在接收到dump请求之后就会给canal推送binlog日志,canal再接受并解析binlog,建立连接成功之后,canal就会一直监听主机发过来的binlog,数据库变化的时候主机也会发送binlog给canal,然后canal把解析后的数据库操作发送给MQ,我们再写监听程序监听MQ发过来的请求做ES添加、更新、删除索引文档操作,这样就实现了同步数据库到ES中间件.