CentOS安装mycat+mysql5.6 完成数据库分片

注:首先安装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

出现以上信息说明启动成功否则查看日志
cat root/mycat/logs/wrapper.log   
出现以下错误

错误: 代理抛出异常错误: java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException: bogon: bogon: 域名解析暂时失败

5.则需要在/etc/hosts 添加 主机名字映射到IP地址的方法

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.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.xml  

2、server.xml几乎保存了所有mycat需要的系统配置信息。最常用的是在此配置用户名、密码及权限。

文件路径:/root/mycat/conf/server.xml
3、rule.xml里面就定义了我们对表进行拆分所涉及到的规则定义。我们可以灵活的对表使用不同的分片算法,或者对表使用相同的算法但具体的参数不同。这个文件里面主要有tableRule和function这两个标签。在具体使用过程中可以按照需求添加tableRule
和function。
此配置文件可以不用修改,使用默认即可。

9.测试分片

配置完毕后,重新启动mycat。使用mysql客户端连接mycat,创建表。
create table TB_ITEM(
id bigint primary key,
title varchar(32) 
)

INSERT INTO TB_ITEM(ID,TITLE) VALUES(1,'22');
INSERT INTO TB_ITEM(ID,TITLE) VALUES(5000000,'22');
这2条数据进入了db1数据库

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

此时需要添加节点了。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郝文龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值