您的位置:首页 > 运维架构 > Linux

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

2018-01-16 13:54 357 查看
注:首先安装mysql5.6 (本文中的mysql一定要安装mysql5.6)

参考我的博客:http://blog.csdn.net/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

此时需要添加节点了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: