一、基本介绍
Sharding-Proxy 是 Apache ShardingSphere 生态中的核心产品之一,采用透明化的数据库代理架构。
核心特点:
- 协议兼容性:支持 MySQL/PostgreSQL 等主流数据库协议
- 透明代理:伪装成真实数据库实例
- 独立部署:作为独立的数据库代理服务
- 功能丰富:提供读写分离、分布式事务、数据加密等企业级特性
二、核心特性
1. 协议兼容性
- 支持 MySQL 5.1/5.5/5.6/5.7/8.0 版本
- 完全兼容 MySQL 的二进制协议和文本协议
2. 客户端支持
- 命令行工具:mysql client
- 图形化工具:MySQL Workbench、Navicat、DBeaver
- 编程语言驱动:JDBC、Python MySQL Connector、PHP PDO 等
3. 透明化设计
- SQL 解析、路由、执行、结果合并等过程对应用完全透明
- 支持所有 MySQL 语法
三、典型应用场景
- 数据库分片管理:对已有 MySQL 集群进行水平分片
- 多租户系统:通过逻辑库/逻辑表实现租户隔离
- 数据库中间件升级:替代传统的应用层分片方案
- 异构语言支持:为 PHP、Python、Go 等非 Java 语言提供分片能力
四、优势对比
| 特性 | Sharding-Proxy | 传统中间件 | 应用层分片 |
|---|---|---|---|
| 协议透明性 | ✓ | ✗ | ✗ |
| 多语言支持 | ✓ | ✗ | ✗ |
| 零代码入侵 | ✓ | ✗ | ✗ |
| 运维复杂度 | 低 | 中 | 高 |
五、使用指南
1. 配置文件修改
示例配置(server.yaml):
authentication:
users:
root:
password: root
props:
max.connections.size.per.query: 5
proxy.transaction.type: LOCAL
proxy.hint.enable: true
2. 启动服务
- Linux系统:
bin/start.sh - Windows系统:
bin\start.bat - 默认端口:3307
3. 客户端连接
mysql -h 127.0.0.1 -P 3307 -u root -p
六、注意事项
- Hint 功能:默认不启用,需修改
conf/server.yaml - 端口配置:默认端口 3307,可通过启动参数修改
- 多逻辑数据源:配置文件必须以 “config-” 开头命名