转https://zhuanlan.zhihu.com/p/72584056
1、mycat介绍:
mycat是基于java编写的数据库中间件。
其可以用mysql原生协议与多个mysql服务器通信,也可以用JDBC协议与大多数主流服务器通信。
核心是分库分表,配合数据库的主从模式还可以实现读写分离。
2、使用mycat的优势
1)数据量级:
单一的mysql数据存储量级和操作量级有限;
mycat可以管理多个mysql数据库,同时实现数据的存储和操作。
3、mycat实现分库分表
1)垂直切分/纵向切分
把原本存储于一个库的数据存储到多个库上。
举例:gass平台中,把DeviceService、MarketService、PayService涉及的表分别存储在不同的库。
优点:减少写入数据时锁表对查询的影响 ; 使得单表查询所需的检索行数变少。
2)水平切分/横向切分
把原本存储于一个表的数据分块存储到多个表上。当一个表中的数据量过大时,我们可以把该表的数据按照某种规则进行划为,然后存储到多个结构相关的表,和不同的库上。
例如userDB的 record_aa_used 数据量极大,我们可以把userDB切分成结构相同的多个userDB:part0DB,part1DB等。
再将record_aa_used 切分成很多的record_aa_used:record_aa_used: record_aa_used0、record_aa_used1、record_aa_used2等 。
优点:单表的并发能力提高了,磁盘I/O性能也提高了;如果出现高并发,总表可以根据不同的查询将并发压力分到不同的小表里面 。
缺点:无法实现表连接查询 。
3)逻辑库 schema 和 逻辑表 table
mycat中定义的database ,逻辑上存在的,物理上不存在 。主要针对纵向切分提供的概念。
Mycat 中定义的 table.是逻辑上存在,物理上是不存在的. 主要是针对横向切分提供的概念.
4)数据主机 dataHost
物理 MySQL 存放的主机地址.可以使用主机名,IP,域名定义.
5)数据节点 dataNode
配置物理的 database. 数据保存的物理节点.就是 database.
6)分片规则
当控制数据的时候,如何访问物理 database 和 table.
在 Mycat 处理具体的数据 CRUD 的时候,如何访问 dataHost 和 dataNode 的算法.如:哈希算法,crc32 算法等.
————————————————————————————————————————————————————
配置实现分库分表
转 https://blog.csdn.net/vbirdbest/article/details/83448757
1、上传、解压 、配置
主要编辑的配置文件在conf目录下,分别为schema.xml、rule.xml、server.xml、sequence_db_conf.properties四个文件。
server.xml主要配置逻辑数据库的信息,包括用户名、密码、端口等,也是代码中数据库连接的地址;
rule.xml主要配置路由策略、拆分规则