1、mycat操作
(1)垂直切分配置
(2)水平切分配置
(3)mycat修改schema.xml之后热重启
(4)mycat注解的实现
(5)mycat高可用(搭配HAproxy等一起做集群,多个mycat节点)
2、mycat可以配置多schema、多用户、多数据库节点进行数据水平、垂直切分
(1)java的程序demo测试通过,并可以用jdbc或jpa来进行数据操作,但是demo只针对一个schema、一个用户进行连接,跟以前一个库的情况差不多
(2)多数据库用mycat进行切分的话,join表的情况只支持子父两级表的join,多于两个表的关联有难度,建议用程序解决,届时开发要注意
3、mycat热启动
用mysql连接的mycat终端,进行reload configuration可以做到在运行中的mycat热重启,重新加载修改过配置文件的配置
4、mycat注解注入schema来进行分数据库执行语句
这是多租户(一个租户一个数据库)的关键,但是试了好多次不行,也找不到对应的解决的帖子,因为各个帖子都是抄攻略的,偏偏攻略一句带过。。。
5、mycat-eye:可以对mycat的情况进行监控,配置mycat节点、物理数据库节点可以进行监测,还能有统计信息,数据库优化的一些统计。是一个web程序
SAAS的数据库部署方案
- mycat连接多个数据库,一个租户一个数据库,假设有一个后台程序始终对mycat进行管理,例如动态添加删除schema、热重启mycat等,这个后台程序要写的比较复杂,并且还需要实现mysql的请求转发(用mycat的注解来进行区分schema,这个很底层了)
优点:一个租户一个数据库,数据隔离性好,数据库的结构清晰不需要多加appID来区分不同的租户数据
缺点:目前技术难题是没实现到mycat的注解,而且不知道中间怎么进行转发;另外,很难维护每个数据库的表结构等等,随着租户的增多,数据库的更新会越来越难,且需要专门维护增加schema和热重启mycat的程序
- mycat连接多个数据库,一般的数据量的表根据功能用垂直切分,大数据量的业务表用水平切分以达到摊开数据量的目的,每个表都有appID这个字段作为区分租户的key,业务程序底层做支持appID的程序开发
优点:可实现,较容易开发,且数据库的数量不会轻易改变,数据库的更新维护比较方便,不需要特地去实现一个专门维护增加schema和热重启mycat的程序
缺点:数据隔离性一般,业务程序要注意隔离性。另外每个库每个表都要有appID这个字段作为冗余判断字段
来源:oschina
链接:https://my.oschina.net/u/2546873/blog/1933780