# mysql-slave **Repository Path**: zhenruyan/mysql-slave ## Basic Information - **Project Name**: mysql-slave - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-30 - **Last Updated**: 2026-04-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MySQL Binlog 实时广播工具 [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Go Version](https://img.shields.io/badge/go-1.18%2B-blue.svg)](https://golang.org) 这是一个采用纯 Go 语言实现的、生产级的 MySQL/MariaDB Binlog 实时监听工具。它模拟 MySQL 从库协议,实时捕获数据库变更(INSERT、UPDATE、DELETE),并将解析后的结构化数据通过 Redis 的发布/订阅(Pub/Sub)模式广播出去。 ## 🚀 核心特性 - **多版本兼容**: 完美支持 MySQL 5.5+ 以及最新的 MariaDB (10.x, 11.x)。 - **工业级稳定性**: 内置自动重连、位点跟踪自动恢复、以及 Checksum 自动协商。 - **纯 Go 实现**: 无需安装任何 C 语言依赖库。 - **智能解析**: 能够自动从原始二进制流中提取主键 ID(支持 INT、BIGINT、UUID 字符串)。 - **云原生友好**: 通过 Redis 广播,极易与各种微服务架构集成。 ## 📦 安装 ```bash git clone cd binlog go mod tidy go build -o mysql-slave ./cmd/mysql-slave ``` ## ⚙️ 配置说明 复制示例配置文件并根据实际环境修改: ```bash cp config.json.example config.json ``` ### 关键配置项 | 配置项 | 说明 | | :--- | :--- | | `mysql.host` | MySQL 主机地址 | | `mysql.username` | 复制用户(需具备 REPLICATION SLAVE 权限) | | `slave.server_id` | 唯一的从库 ID (不能与主库及其他从库冲突) | | `slave.start_from_current` | 设置为 true 时,每次启动将从主库最新位点开始同步 | | `redis.channel` | 变更事件广播的 Redis 频道名 | ## 🛠 使用方法 1. **启动服务**: ```bash ./mysql-slave -config config.json ``` 2. **订阅事件示例**: ```bash redis-cli SUBSCRIBE mysql_binlog_events ``` 3. **推送消息示例**: ```json { "ts": 1714474200, "type": "INSERT", "db": "shop_db", "table": "orders", "id": "987654", "pos": 10452331 } ``` ## 📄 开源协议 本项目采用 [MIT](LICENSE) 协议开源。