Repolode
go-mysql-org

go-mysql-org/go-mysql

纯 Go 实现的 MySQL/MariaDB 网络协议库,支持 binlog 复制、客户端、模拟服务端和 database/sql 驱动。

Star
4,974
Fork
1,097
未关闭 Issue
166
最近提交
昨天

这是什么?

go-mysql 是一个纯 Go 实现的 MySQL 与 MariaDB 网络协议库,Go 程序可以借此连接 MySQL 服务器,也可以作为从库读取 binlog 流,或者自行实现兼容 MySQL 协议的服务端。

复制(replication)包支持按文件位置或 GTID 处理 binlog 事件,适合用于同步缓存或搜索索引等场景。canal 包在此基础上提供全量导出加增量行变更同步,仓库中还包含一个用 Go 编写、功能类似 mysqldump 的示例命令。

此外,项目还提供带连接池和流式 SELECT 结果的简单客户端、用于构建 MySQL 代理的 server 包,以及一个 database/sql 驱动,支持 TLS、压缩等 DSN 参数配置。

核心功能

  • 01支持按文件位置或 GTID 读取 MySQL 与 MariaDB 的 binlog 事件流。
  • 02提供 canal 增量同步框架,先全量导出,再应用行级变更。
  • 03内置带连接池、支持流式 SELECT 的简单 MySQL 客户端。
  • 04提供 server 包,用于构建兼容 MySQL 协议的服务端或代理。
  • 05提供 database/sql 驱动,支持 TLS、zlib/zstd 压缩和超时配置。

适用场景

  • 通过消费 binlog 变更,把 MySQL 数据同步到 Redis 或 Elasticsearch。
  • 用 Go 构建 MySQL 代理,或搭建用于测试的模拟 MySQL 服务。
  • 编写类似 mysqldump 的 Go 备份或导出工具。
  • 通过标准 database/sql 接口在 Go 代码中访问 MySQL。

快速上手

  1. 1

    在你的 Go 项目中导入库的包

  2. 2

    在项目根目录构建自带的示例应用

    make build

收录于专题

标签

常见问题

go-mysql 是什么?
纯 Go 实现的 MySQL/MariaDB 网络协议库,支持 binlog 复制、客户端、模拟服务端和 database/sql 驱动。 go-mysql 是一个纯 Go 实现的 MySQL 与 MariaDB 网络协议库,Go 程序可以借此连接 MySQL 服务器,也可以作为从库读取 binlog 流,或者自行实现兼容 MySQL 协议的服务端。
go-mysql 可以免费使用吗?用的什么许可证?
go-mysql 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
go-mysql 还在维护吗?
活跃维护中。go-mysql 最近一次提交是在 2026年11月6日。
go-mysql 适合用来做什么?
通过消费 binlog 变更,把 MySQL 数据同步到 Redis 或 Elasticsearch。 用 Go 构建 MySQL 代理,或搭建用于测试的模拟 MySQL 服务。 编写类似 mysqldump 的 Go 备份或导出工具。 通过标准 database/sql 接口在 Go 代码中访问 MySQL。
go-mysql 怎么安装和运行?
在你的 Go 项目中导入库的包 在项目根目录构建自带的示例应用: make build
在哪里获取 go-mysql?
源代码和安装说明在 GitHub 上:https://github.com/go-mysql-org/go-mysql

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目