mycat的分库分表:垂直分库、水平伸缩、垂直分表、水平分表
垂直分库:主要解决写负载问题;根据业务模块以及要做联合查询的要求,将原本在一个数据库中数据表切分成一个个的子集,将处在同一个子集的数据表移到另外的数据库服务器上部署,或者在同一台机器上的多个数据库中部署,通过mycat将分散的数据库抽象成一个逻辑库,供应用访问,这样程序就像直接访问一台mysql的一个数据库一样了
实操步骤:
- 根据业务模块以及查询依赖关系划分数据子集,确定哪些表合在一个新库中
- 备份数据
- 通过mysql复制功能将数据子集依次迁移到新的机器上
- 配置MyCat
- 切换应用通过访问MyCat访问mysql
- 删除多余的表
- 停止mysql复制,将新机器上的mysql节点都变成可写可读的主节点
- 可以再单独为每个主节点都配置对应的从节点搭建多个主从复制架构,并配置各自的备写节点,实现简单的mysql高可用
水平伸缩 : 解决mysql集群读写负载 通过增减mysql机器改变集群的读写承载能力
垂直分表 : 解决不合理设计的表的读写负载 如果某张表的字段太多了,一条记录存储了太多内容,实际可以将一部分字段存储到另一张新表上,降低mysql的IO负担
水平分表:主要解决大表读负载问题;有时数据表的记录数目太大了,就算通过负载均衡可以在不同机器上访问数据,效率也会很低,这个时候就要将大表切分成小表,分散存储,每个小表负责一部分数据子集的读写,这就是水平切分,可以大幅度降低读写压力