Gaea简介
Gaea是小米商城/系统组研发的基于mysql协议的数据库中间件,目前在小米商城大陆和海外得到广泛使用,包括订单、社区、活动等多个业务。Gaea支持分库分表、sql路由、读写分离等基本特性,更多详细功能可以参照下面的功能列表。其中分库分表方案兼容了mycat和kingshard两个项目的路由方式。Gaea在设计、实现阶段参照了mycat、kingshard和vitess,并使用tidb parser作为内置的sql parser,在此表达诚挚感谢。为了方便使用和学习Gaea,我们也提供了详细的使用和设计文档,也欢迎大家多多参与。
Gaea功能列表
基础功能
多租户
SQL透明转发
慢SQL指纹
错误SQL指纹
注解路由
慢日志
读写分离,从库负载均衡
自定义SQL拦截与过滤
连接池
配置热加载
IP/IP段白名单
全局序列号
分库、分表功能
分库: 支持mycat分库方式
分表: 支持kingshard分表方式
聚合函数: 支持max、min、sum、count、group by、order by等
join: 支持分片表和全局表的join、支持多个分片表但是路由规则相同的join
Gaea架构
模块划分
gaea包含四个模块,分别是gaea-proxy、gaea-cc、gaea-agent、gaea-web。gaea-proxy为在线代理,负责承接sql流量,gaea-cc是中控模块,负责gaea-proxy的配置管理及一些后台任务,gaea-agent部署在mysql所在的机器上,负责实例创建、管理、回收等工作,gaea-web是gaea的一个管理界面,使gaea整体使用更加方便。
架构图
Gaea安装使用
编译安装
gaea基于go开发,基于glide进行版本管理,并依赖goyacc、gofmt等工具。
首先安装依赖包 glide install
编译二进制包 make
执行
编译之后在bin目录会有gaea、gaea-cc两个可执行文件。etc目录下为配置文件,如果想快速体验gaea功能,可以采用file配置方式,然后在etc/file/namespace下添加对应租户的json文件,该目录下目前有两个示例,可以直接修改使用。 ./bin/gaea --help显示如下,其中-config是指定配置文件位置,默认为./etc/gaea.ini,具体配置见配置说明。
Usage of ./bin/gaea:
-config string
gaea config file (default "etc/gaea.ini")
1
2
3
Usageof./bin/gaea:
-configstring
gaeaconfigfile(default"etc/gaea.ini")
更多帮助看git仓库说明