注:首先安装mysql5.6 (本文中的mysql一定要安装mysql5.6)
参考我的博客:http://blog.youkuaiyun.com/a639735331/article/details/79073783
mycat 下载地址:
链接:https://pan.baidu.com/s/1cYLkGu 密码:gbh0
1.:把MyCat的压缩包上传到linux服务器
2.:解压缩,得到mycat目录
3.:进入mycat/bin,启动MyCat
启动命令:./mycat start
停止命令:./mycat stop
重启命令:./mycat restart
注意:可以使用mysql的客户端直接连接mycat服务。默认服务端口为8066 需要结合下文中 配置用户名和密码
4.检测mycat是否启动成功
ps aux|grep mycat
5.则需要在/etc/hosts 添加 主机名字映射到IP地址的方法
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.40.116 bogon 再次启动
6.mycat分片
MyCAT支持水平分片与垂直分片:
水平分片:一个表格的数据分割到多个节点上,按照行分隔。
垂直分片:一个数据库中多个表格A,B,C,A存储到节点1上,B存储到节点2上,C存储到节点3上。
MyCAT通过定义表的分片规则来实现分片,每个表格可以捆绑一个分片规则,每个分片规则指定一个分片字段并绑定一个函数,来实现动态分片算法。
1、Schema:逻辑库,与MySQL中的Database(数据库)对应,一个逻辑库中定义了所包括的Table。
2、Table:表,即物理数据库中存储的某一张表,与传统数据库不同,这里的表格需要声明其所存储的逻辑数据节点DataNode。在此可以指定表的分片规则。
3、DataNode:MyCAT的逻辑数据节点,是存放table的具体物理节点,也称之为分片节点,通过DataSource来关联到后端某个具体数据库上
4、DataSource:定义某个物理库的访问地址,用于捆绑到Datanode上
7.环境准备
在一个mysql服务器中建立2个数据库 db1 db3 分别代表2个数据节点 8.修改mycat配置文件 1、Schema.xml作为MyCat中重要的配置文件之一,管理着MyCat的逻辑库、表、分片规则、DataNode以及DataSource。弄懂这些配置,是正确使用MyCat的前提。这里就一层层对该文件进行解析。 schema 标签用于定义MyCat实例中的逻辑库 Table 标签定义了MyCat中的逻辑表 dataNode 标签定义了MyCat中的数据节点,也就是我们通常说所的数据分片。 dataHost标签在mycat逻辑库中也是作为最底层的标签存在,直接定义了具体的数据库实例、读写分离配置和心跳语句。 注意:若是LINUX版本的MYSQL,则需要设置为Mysql大小写不敏感,否则可能会发生表找不到的问题。 在MySQL的配置文件中my.ini [mysqld] 中增加一行 lower_case_table_names = 1 文件路径:/root/mycat/conf/schema.xml2、server.xml几乎保存了所有mycat需要的系统配置信息。最常用的是在此配置用户名、密码及权限。
文件路径:/root/mycat/conf/server.xml3、rule.xml里面就定义了我们对表进行拆分所涉及到的规则定义。我们可以灵活的对表使用不同的分片算法,或者对表使用相同的算法但具体的参数不同。这个文件里面主要有tableRule和function这两个标签。在具体使用过程中可以按照需求添加tableRule
和function。
此配置文件可以不用修改,使用默认即可。
9.测试分片
配置完毕后,重新启动mycat。使用mysql客户端连接mycat,创建表。INSERT INTO TB_ITEM(ID,TITLE) VALUES(5000001,'22');
这条数据进入了db2数据库
由于配置的分片规则为“auto-sharding-long”,所以mycat会根据此规则自动分片。
每个datanode中保存一定数量的数据。根据id进行分片
经测试id范围为:
Datanode1:1~5000000
Datanode2:5000000~10000000
当10000001以上的id插入时报错:
[Err] 1064 - can't find any valid datanode:TB_ITEM -> ID -> 10000001
此时需要添加节点了。