- MySQL 数据库前端代理
 - FPNN 技术生态基础服务成员
 - 支持 FPZK 服务,支持服务集群
 - 屏蔽所有分库分表细节。对高度复杂的分库分表操作,如同对单库单表操作
 - 支持读写/主从分离
 - 支持长链接
 - 支持链接池
 - 支持多 sharding 并发查询和汇总
 
- 
Standard 版本
标准版,适合普通项目使用。
忽略库名,表名全局唯一。 - 
Cluster 版本
数据集群版。
在 Standard 版本基础上,增加数据集群(注意不是服务集群)能力,适合于平台项目和中台项目。忽略库名,同一个 cluster 内,表名唯一。不同的 cluster 内,表名可以重复,且表结构可以不同。
 
运行环境:
- 操作系统:CentOS 6.5、CentOS 7、CentOS 8、Ubuntu 20、MacOS 11 及以上版本
 - 支持数据库:MySQL 5.0 以上
 - 第三方依赖:FPNN 框架、libmysqlclient
 
编译:
- 请先编译 FPNN 框架
 - 确保 dbproxy 目录和 fpnn 目录处于同一父目录下
 - cd dbproxy; make
 - make deploy
 
- 
功能
- 屏蔽所有数据库分库分表细节及拓扑结构,统一处理数据定位和数据路由,如同使用单库单表的数据库一样。
 - 与数据库保持长链接,减少因频繁请求数据库,建立和关闭短链接带来的数据库压力和性能开销。
 - 在主从库的配置下,对读请求在主从库之间进行负载均衡。
 - 支持 FPNN 体系所有功能。参见:FPNN 功能介绍
 
 - 
特性
- 支持 Hash 分库分表
 - 支持按区段分库
 - 支持指定区段奇偶分库
 - 支持指定表在所有区段内再次分表
 - 支持区段分库时,不同的表可按不同的区段划分
 - 支持业务分组
 - 定期自动检查,并自动加载配置库更新信息
 - 配置库主从部署时,支持配置库的优先排序
 - 支持单shard内的事务操作
 - 支持聚合查询
 
 
- 
不支持联合查询,多表查询,JOIN语句等
原因:一个SQL要查询的多个表可能不在同一个库,甚至不在同一个数据库实例上。
 - 
自动屏蔽/禁止 Create、Drop、Alert 等语句
为确保数据安全起见,业务使用者只能使用 select、insert、update、replace、desc/describe/explain、delete 语句。其他语句均须DBA在后台授权操作。
 - 
不支持列出数据库内所有数据表名称
原因:数据安全原因,需要DBA授权查询
 - 
不支持跨库事务操作
 - 
指定表在所有区段再次分表时,分段的类型要和区段分段类型一致
 
对于使用者而言,使用 DBProxy 类似使用一个单库单表的数据库。
- DBProxy 配置请参考 DBProxy 配置说明
 - DBProxy API 请参考 DBProxy 接口说明
 - DBProxy 运维管理请参考 DBProxy 运维管理
 - DBProxy 管理工具请参考 DBProxy 管理工具
 - DBProxy 账号与安全请参考 DBProxy 账号与安全
 
DBProxy 基于FPNN框架和协议开发。
标准版结构如下图所示