linus下安装MyCat

linus下安装MyCat

1.jdk的安装与下载

1.1.JDK:要求jdk必须是1.7及以上版本

MySQL:推荐mysql是5.5以上版本

1.2.将MySQL的服务端和客户端安装包(RPM)上传到服务器

MySQL-server-5.5.49-1.linux2.6.i386.rpm
MySQL-client-5.5.49-1.linux2.6.i386.rpm

1.3.查询之前是否安装过MySQL

rpm -qa|grep -i mysql

1.4.卸载旧版本MySQL

rpm -e --nodeps  软件名称

1.5.(4)安装服务端

rpm -ivh MySQL-server-5.5.49-1.linux2.6.i386.rpm

1.6.安装客户端

rpm -ivh MySQL-client-5.5.49-1.linux2.6.i386.rpm

1.7.启动MySql服务

service mysql start

1.8.登录MySQl

mysql -u root

1.9.设置远程登录权限,用户名,密码

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '123456'  WITH GRANT OPTION;

在本地SQLyog 连接远程MySQL进行测试

2.MyCat安装及启动

2.1.下载Mycat-server-xxxx-linux.tar.gz,将Mycat-server-1.4-release-20151019230038-linux.tar.gz上传至服务器
2.2.将压缩包解压缩。建议将mycat放到/usr/local/mycat目录下

tar -xzvf Mycat-server-1.4-release-20151019230038-linux.tar.gz

mv mycat /usr/local

2.3.进入mycat目录的bin目录,启动mycat

./mycat start

mycat 支持的命令{ console | start | stop | restart | status | dump }

Mycat的默认端口号为:8066

3.MyCat分片配置

1.配置schema.xml
schema.xml作为MyCat中重要的配置文件之一,管理着MyCat的逻辑库、逻辑表以及对应的分片规则、DataNode以及DataSource。弄懂这些配置,是正确使用MyCat的前提。这里就一层层对该文件进行解析。

schema 标签用于定义MyCat实例中的逻辑库

Table 标签定义了MyCat中的逻辑表 rule用于指定分片规则,auto-sharding-long的分片规则是按ID值的范围进行分片 1-5000000 为第1片 5000001-10000000 为第2片…. 具体设置我们会在第5小节中讲解。

dataNode 标签定义了MyCat中的数据节点,也就是我们通常说所的数据分片。

dataHost标签在mycat逻辑库中也是作为最底层的标签存在,直接定义了具体的数据库实例、读写分离配置和心跳语句。

在服务器上创建3个数据库,分别是db1 db2 db3
修改schema.xml如下:





    



    select user()
    
    
 

 
  

(2)配置 server.xml
server.xml几乎保存了所有mycat需要的系统配置信息。最常用的是在此配置用户名、密码及权限。在system中添加UTF-8字符集设置,否则存储中文会出现问号

utf8

修改user的设置 , 我们这里为 PINYOUGOUDB设置了两个用户


    test
    PINYOUGOUDB


    123456
    PINYOUGOUDB

3.2进入mycat ,执行下列语句创建一个表:

CREATE TABLE tb_test (
    id BIGINT(20) NOT NULL,
    title VARCHAR(100) NOT NULL ,
    PRIMARY KEY (id)
) ENGINE=INNODB DEFAULT CHARSET=utf8 

3.3接下来是插入表数据,注意,在写INSERT语句时一定要写把字段列表写出来,否则会出现下列错误提示:

错误代码: 1064

partition table, insert must provide ColumnList

我们试着插入一些数据:

INSERT INTO TB_TEST(ID,TITLE) VALUES(1,'goods1');
INSERT INTO TB_TEST(ID,TITLE) VALUES(2,'goods2');
INSERT INTO TB_TEST(ID,TITLE) VALUES(3,'goods3');

我们会发现这些数据被写入到第一个节点中了,那什么时候数据会写到第二个节点中呢?
我们插入下面的数据就可以插入第二个节点了

INSERT INTO TB_TEST(ID,TITLE) VALUES(5000001,'goods5000001');

因为我们采用的分片规则是每节点存储500万条数据,所以当ID大于5000000则会存储到第二个节点上。
目前只设置了两个节点,如果数据大于1000万条,会怎么样呢?执行下列语句测试一下

INSERT INTO TB_TEST(ID,TITLE) VALUES(10000001,'goods10000001');

1.3.5 MyCat分片规则

rule.xml用于定义分片规则 ,我们这里讲解两种最常见的分片规则

(1)按主键范围分片rang-long
在配置文件中我们找到


    
        id
        rang-long
    

tableRule 是定义具体某个表或某一类表的分片规则名称 columns用于定义分片的列 algorithm代表算法名称 我们接着找rang-long的定义


    autopartition-long.txt

Function用于定义算法 mapFile 用于定义算法需要的数据,我们打开autopartition-long.txt

# range start-end ,data node index
# K=1000,M=10000.
0-500M=0
500M-1000M=1
1000M-1500M=2

(2)一致性哈希murmur
当我们需要将数据平均分在几个分区中,需要使用一致性hash规则
我们找到function的name为murmur 的定义,将count属性改为3,因为我要将数据分成3片


    0
    3
    160
    
    

我们再配置文件中可以找到表规则定义


    
        id
        murmur
    

但是这个规则指定的列是id ,如果我们的表主键不是id ,而是order_id ,那么我们应该重新定义一个tableRule:


    
        order_id
        murmur
    

在schema.xml中配置逻辑表时,指定规则为sharding-by-murmur-order

我们测试一下,创建品优购的订单表 ,并插入数据,测试分片效果。

你可能感兴趣的:(mycat)