A pure Go library for MySQL network protocol handling, replication, and client/server implementations.
go-mysql is a pure Go library that implements the MySQL network protocol, enabling developers to handle replication, build custom MySQL clients and servers, and sync data incrementally. It solves the need for low-level MySQL interaction within Go applications without relying on C bindings, offering tools for binlog processing, data pipeline creation, and protocol-level customization.
Go developers building database replication systems, data synchronization tools, MySQL proxies, or applications requiring fine-grained control over MySQL/MariaDB connections and protocol handling.
Developers choose go-mysql for its comprehensive, pure-Go implementation of MySQL protocols, which eliminates C dependencies and provides a portable, efficient toolkit for advanced MySQL operations like replication and custom server building, all with strong version compatibility.
a powerful mysql toolset with Go
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Eliminates C dependencies and ensures cross-platform compatibility, tested on Linux amd64, arm64, and FreeBSD, making deployment straightforward in diverse environments.
Provides low-level building blocks for MySQL replication, client connections, and fake server implementations, enabling custom solutions like real-time binlog processing and data sync pipelines.
The Canal package supports dumping and syncing MySQL data incrementally to external systems like Elasticsearch, ideal for building real-time ETL or cache update workflows.
Offers a database/sql driver with configurable TLS, timeouts, and compression, tested with MySQL versions 5.5 to 8.0, and includes features like streaming queries and connection pooling.
Requires enabling FillZeroLogPos for accurate position tracking in MariaDB 11.4+, adding configuration overhead and potential for errors if not properly set up.
Demands deep knowledge of MySQL binlog formats, replication protocols, and low-level network interactions, making it challenging for developers unfamiliar with database internals.
Focuses on low-level protocols without built-in ORM features or simplified APIs for common operations, requiring more boilerplate code for basic tasks compared to higher-level libraries.