# flike/kingshard

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/flike-kingshard).**

6,414 stars · 1,218 forks · Go

## Links

- GitHub: https://github.com/flike/kingshard
- awesome-repositories: https://awesome-repositories.com/repository/flike-kingshard.md

## Topics

`kingshard` `mysql` `mysql-proxy`

## Description

Kingshard is a MySQL database proxy and sharding middleware that routes SQL traffic between clients and multiple database nodes. It functions as a load balancer, read-write splitter, and SQL query firewall to manage how data is accessed and distributed across a database infrastructure.

The system implements data sharding using hash, range, or date strategies to split tables across multiple nodes. It enables read-write splitting by directing data modification requests to a master node while distributing read-only queries across a pool of slave replicas.

The proxy provides traffic management through backend connection pooling and query routing, including the ability to direct queries to specific nodes via manual comments. Security is handled through client IP access control and the filtering of forbidden SQL patterns via a blacklist.

The project supports packaging as a container image for consistent deployment.

## Tags

### Data & Databases

- [MySQL Database Sharding](https://awesome-repositories.com/f/data-databases/mysql-database-sharding.md) — Distributes data across multiple MySQL nodes using hash or range strategies to increase storage capacity and throughput.
- [MySQL Proxy Middleware](https://awesome-repositories.com/f/data-databases/mysql-proxy-middleware.md) — Provides a high-performance proxy layer designed specifically to route SQL traffic for MySQL database clusters.
- [Data Range Distribution](https://awesome-repositories.com/f/data-databases/data-range-distribution.md) — Allocates data to specific nodes based on predefined key ranges to maintain logical data ordering.
- [Data Sharding](https://awesome-repositories.com/f/data-databases/data-sharding.md) — Splits table data across multiple nodes using hash or range keys to improve system scalability. ([source](https://github.com/flike/kingshard/blob/master/doc/KingDoc/how_to_use_kingshard_EN.md))
- [Connection Pool Managers](https://awesome-repositories.com/f/data-databases/database-management-systems/database-systems-management/connection-transaction-management/connection-pool-managers.md) — Manages database connection lifecycles and pool settings to optimize resource utilization and maintain system stability. ([source](https://github.com/flike/kingshard/blob/master/README.md))
- [Connection Limit Managers](https://awesome-repositories.com/f/data-databases/database-management-systems/database-systems-management/connection-transaction-management/connection-pool-managers/backend-server-pools/connection-limit-managers.md) — Enforces maximum concurrent connection limits per backend server to prevent node saturation. ([source](https://github.com/flike/kingshard#readme))
- [Database Node Administration](https://awesome-repositories.com/f/data-databases/database-node-administration.md) — Provides administrative commands to add or remove master and slave nodes and toggle their operational availability. ([source](https://github.com/flike/kingshard/blob/master/doc/KingDoc/how_to_use_kingshard_EN.md))
- [Database Node Health Tracking](https://awesome-repositories.com/f/data-databases/database-node-health-tracking.md) — Tracks the online and offline status of backend nodes to dynamically exclude unhealthy instances from the routing pool.
- [Query Routing](https://awesome-repositories.com/f/data-databases/distributed-sql-databases/query-routing.md) — Directs SQL statements to specific database nodes based on shard locations and manual overrides. ([source](https://github.com/flike/kingshard/blob/master/doc/KingDoc/how_to_use_kingshard_EN.md))
- [Connection Pooling](https://awesome-repositories.com/f/data-databases/high-concurrency-database-access/connection-pooling.md) — Manages a pool of reusable database connections to optimize concurrency and prevent backend node saturation.
- [Read-Write Splitting](https://awesome-repositories.com/f/data-databases/read-write-splitting.md) — Separates database traffic by routing write operations to the master and read requests to replicas.
- [Replica Load Balancers](https://awesome-repositories.com/f/data-databases/replica-load-balancers.md) — Distributes read requests across multiple MySQL replicas to ensure balanced resource utilization and high availability.
- [Read Load Balancers](https://awesome-repositories.com/f/data-databases/replica-load-balancers/read-load-balancers.md) — Distributes read-only queries across a pool of slave replicas to prevent performance bottlenecks.
- [Sharding Middleware](https://awesome-repositories.com/f/data-databases/sharding-middleware.md) — Implements a proxy layer that abstracts data distribution and routes queries between applications and database shards.
- [Blacklist Filtering](https://awesome-repositories.com/f/data-databases/data-access-querying/blacklist-filtering.md) — Implements a blacklist system to block dangerous or inefficient SQL patterns from executing on the backend.
- [Manual Routing Overrides](https://awesome-repositories.com/f/data-databases/database-sharding/shard-routing-logic/manual-routing-overrides.md) — Provides the ability to override automatic sharding logic by specifying the target node via SQL comments.
- [Proxy Configuration Management](https://awesome-repositories.com/f/data-databases/proxy-configuration-management.md) — Allows switching database states between online and offline and updating configuration values during runtime. ([source](https://github.com/flike/kingshard#readme))
- [Session-Node Affinity](https://awesome-repositories.com/f/data-databases/session-node-affinity.md) — Ensures all operations within a single session target one specific node to maintain database transaction integrity. ([source](https://github.com/flike/kingshard/blob/master/doc/KingDoc/how_to_use_kingshard_EN.md))

### Software Engineering & Architecture

- [Hash-Based Data Distribution](https://awesome-repositories.com/f/software-engineering-architecture/hash-based-data-distribution.md) — Distributes database records across nodes using hashing algorithms to ensure a balanced load and storage.

### Web Development

- [Shard Routing](https://awesome-repositories.com/f/web-development/request-routing/shard-routing.md) — Routes data operations to specific shards or multiple nodes based on defined query conditions. ([source](https://github.com/flike/kingshard/blob/master/doc/KingDoc/how_to_use_kingshard_EN.md))

### Networking & Communication

- [IP Address Filters](https://awesome-repositories.com/f/networking-communication/network-reliability-diagnostics/network-filtering/ip-address-filters.md) — Secures database access by validating client connection requests against a whitelist of allowed IP addresses.

### Security & Cryptography

- [Request Access Restrictions](https://awesome-repositories.com/f/security-cryptography/domain-access-restrictions/request-access-restrictions.md) — Validates incoming requests via client IP allowlists and filters for forbidden SQL patterns to authorize database access. ([source](https://github.com/flike/kingshard#readme))
- [SQL Blacklists](https://awesome-repositories.com/f/security-cryptography/granular-access-controls/query-permission-filters/sql-blacklists.md) — Blocks dangerous or inefficient SQL statements using a blacklist to prevent them from executing on the backend. ([source](https://github.com/flike/kingshard/blob/master/README.md))
- [SQL Firewalls](https://awesome-repositories.com/f/security-cryptography/security/policies/access-control/sql-firewalls.md) — Inspects and filters SQL queries using IP whitelists and pattern blacklists to prevent unauthorized or dangerous operations.
- [SQL Traffic Filtering](https://awesome-repositories.com/f/security-cryptography/sql-traffic-filtering.md) — Restricts database access via IP whitelists and blocks dangerous SQL statements using a blacklist.

### System Administration & Monitoring

- [IP Access Restrictions](https://awesome-repositories.com/f/system-administration-monitoring/ip-address-blocklists/ip-access-restrictions.md) — Restricts database connections using an IP access control list to secure the environment from unauthorized clients. ([source](https://github.com/flike/kingshard/blob/master/README.md))

### Part of an Awesome List

- [Database Tools](https://awesome-repositories.com/f/awesome-lists/data/database-tools.md) — MySQL proxy for sharding.
- [Database Utilities](https://awesome-repositories.com/f/awesome-lists/data/database-utilities.md) — High-performance MySQL database proxy written in Go.
