用 Go 写的 MySQL 复制库,蛮适合做数据同步工具的底座。它是纯 Go 实现的,直接 MySQL 的协议和 binlog,不依赖 MySQL 客户端那一套,部署起来简单。像搞实时数据同步、做 Canal 替代品的朋友可以留意下,功能还挺全的。
Replication包用来主从复制的核心流程。
它会去拉 binlog,你可以在这基础上搞缓存更新、增量导出,或者触发下游服务。响应也快,代码也清晰。
Canal功能也有,支持把 MySQL 变更同步到Redis、Elasticsearch这些地方。
像做数据总线、异构数据库同步的场景,这就方便,不用引入一大堆中间件。
Client包其实就是个轻量级 MySQL 驱动,能连库、查数据、插数据。
如果你只想要个精简版 MySQL 客户端,不想拉 MySQL 官方库那堆依赖,它比较合适。
Server包更有意思,能让你写个“假”MySQL 服务器。
像做测试拦截、开发数据库代理的时候,这东西就灵活。不用真连数据库,也能模拟各种包。
Failover部分也提了一下,虽然不多,但能看出这套库也考虑了高可用方向。
你要是有容灾切换需求,可以再配合像 MHA 这种方案搞搞。
,这个库比较适合想搞数据同步、复制协议解析、自定义 MySQL 交互的朋友。
如果你想深入 MySQL binlog 机制,或者想用 Go 写自己的数据库中间件,值得一试。