Canal是一个开源分布式数据库同步和数据订阅系统,其中包括了canal-server、canal-adapter和canal-admin三个组件。canal-server可直接监听MySQL的binlog,将自身伪装成MySQL的从库;canal-adapter可从canal-server获取数据,并将数据同步到MySQL、Elasticsearch和HBase等存储中;canal-admin为canal提供整体配置管理、节点运维等面向运维的功能。本文详细介绍了Canal的三个组件及其功能。