Mycat安装和测试

发布 : 2016-02-12 分类 : 大数据 浏览 :

准备工作:

1
2
3
4
IP主机名数据库名安装软件
192.168.230.129master db1mycat,mysql
192.168.230.130slave1 db2mysql
192.168.230.131slave2 db3mysql

1.安装mysql客户端

1
2
3
[root@master ~]# yum -y install mysql
[root@slave1 ~]# yum -y install mysql
[root@slave2 ~]# yum -y install mysql

2.安装mysql服务端

1
2
3
4
5
6
7
[root@master ~]# yum -y install mysql-server
[root@slave1 ~]# yum -y install mysql-server
[root@slave2 ~]# yum -y install mysql-server

[root@master ~]# yum -y install mysql-devel
[root@slave1 ~]# yum -y install mysql-devel
[root@slave1 ~]# yum -y install mysql-devel

3.添加mysql用户及权限并配置数据库

1
三台服务器都安装mysql以后 ,三台机器同样配置数据库

3.1.配置编码格式,vi /etc/my.cnf ,添加default-character-set=utf8

1
2
3
[root@master ~]# vi /etc/my.cnf
[root@slave1 ~]# vi /etc/my.cnf
[root@slave2 ~]# vi /etc/my.cnf

1
default-character-set=utf8

3.2.添加开机启动项

1
2
[root@master ~]# chkconfig --add mysqld
[root@master ~]# chkconfig mysqld on

1
2
3
4
5
[root@slave1 ~]# chkconfig --add mysqld
[root@slave1 ~]# chkconfig mysqld on

[root@slave2 ~]# chkconfig --add mysqld
[root@slave2 ~]# chkconfig mysqld on

3.3.启动mysql

1
2
3
[root@master ~]# service mysqld start
[root@slave1 ~]# service mysqld start
[root@slave2 ~]# service mysqld start

3.4.配置root用户并设置密码

1
master主机.slave1主机.salve2主机,三台主机的mysql均进行如下配置
1
2
3
4
5
6
[root@master ~]# mysql -uroot -p
mysql> use mysql;
mysql> select user,host from user;
mysql> delete from user where user = "";
mysql> select user,host from user;
mysql> update user set host='%' where host='127.0.0.1';

1
mysql> update user set password = PASSWORD('123456') where user = 'root';


3.5.添加新用户

1
mysql> insert into mysql.user(Host,User,Password) values("%","mycat",password("123456"));

3.6.赋予权限

1
mysql> grant all privileges on *.* to 'mycat'@'%' identified by '123456';

3.7.刷新权限

1
mysql> flush privileges;

3.8.登录新建的用户并创建响应的数据库

1
不同机器数据库名不同
1
2
[root@master ~]# mysql -umycat -p
mysql> create database db1;

1
2
[root@slave1 ~]# mysql -umycat -p
mysql> create database db2;

1
2
[root@slave2 ~]# mysql -umycat -p
mysql> create database db3;

4.安装Mycat

4.1.解压mycat压缩文件到指定目录下

1
[root@master software]# tar -zxf Mycat-server-1.4-release-20151019230038-linux.tar.gz -C /opt/modules

4.2.配置环境变量

1
2
3
4
5
6
[root@master modules]# vi ~/.bash_profile

export MYCAT_HOME=/opt/modules/mycat
export PATH=$PATH:$MYCAT_HOME/bin

[root@master modules]# source ~/.bash_profile

4.3.通过配置sh /opt/modules/mycat/bin/mycat start执行开机启动

1
2
也可以自己写脚本加入init服务
[root@master ~]# sh /opt/modules/mycat/bin/mycat start

4.4.创建新的用户组和用户

1
2
3
4
5
创建一个新的group
[root@master ~]# groupadd mycat

创建一个新的用户,并加入group
[root@master ~]# useradd mycat -g mycat

1
2
给新用户设置密码
[root@master ~]# passwd mycat

4.5.配置mycat配置文件

4.5.1.在三台mysql的配置文件vi /etc/my.cnf中

1
2
加入lower_case_table_names = 1来忽略大小写
lower_case_table_names = 1

4.5.2.编辑schema.xml文件

1
先备份一下
1
[root@master conf]# cp schema.xml schema.xml.tmp

1
[root@master conf]# vi schema.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/">

<schema name="mycat" checkSQLschema="false" sqlMaxLimit="100">
<table name="employee" primaryKey="ID" dataNode="dn1,dn2,dn3" rule="sharding-by-intfile" />
</schema>
<!--数据节点dn1,对应的主机c1,对应是数据库db1 -->
<dataNode name="dn1" dataHost="master" database="db1" />
<dataNode name="dn2" dataHost="slave1" database="db2" />
<dataNode name="dn3" dataHost="slave2" database="db3" />
<!-- 主机C1-->
<dataHost name="master" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native">
<heartbeat>select user()</heartbeat>
<!--mysql数据库的连接串 -->
<writeHost host="hostM1" url="master:3306" user="mycat"
password="123456">
</writeHost>
</dataHost>
<!-- 主机C2-->
<dataHost name="slave1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM2" url="slave1:3306" user="mycat"
password="123456">
</writeHost>
</dataHost>
<!-- 主机C3-->
<dataHost name="slave2" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native">
<heartbeat>select user()</heartbeat>
<!--mysql数据库的连接串 -->
<writeHost host="hostM3" url="slave2:3306" user="mycat"
password="123456">
</writeHost>
</dataHost>
</mycat:schema>


4.5.3.编辑server.xml文件

1
[root@master conf]# vi server.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://org.opencloudb/">
<system>
<property name="defaultSqlParser">druidparser</property>
<!-- <property name="useCompression">1</property>--> <!--1为开启mysql压缩协议-->
<!-- <property name="processorBufferChunk">40960</property> -->
<!--
<property name="processors">1</property>
<property name="processorExecutor">32</property>
-->
<!--默认是65535 64K 用于sql解析时最大文本长度 -->
<!--<property name="maxStringLiteralLength">65535</property>-->
<!--<property name="sequnceHandlerType">0</property>-->
<!--<property name="backSocketNoDelay">1</property>-->
<!--<property name="frontSocketNoDelay">1</property>-->
<!--<property name="processorExecutor">16</property>-->
<!--
<property name="mutiNodeLimitType">1</property> 0:开启小数量级(默认) ;1:开启亿级数据排序
<property name="mutiNodePatchSize">100</property> 亿级数量排序批量
<property name="processors">32</property> <property name="processorExecutor">32</property>
<property name="serverPort">8066</property> <property name="managerPort">9066</property>
<property name="idleTimeout">300000</property> <property name="bindIp">0.0.0.0</property>
<property name="frontWriteQueueSize">4096</property> <property name="processors">32</property> -->
</system>

<user name="root">
<property name="password">123456</property>
<property name="schemas">mycat</property>
</user>

<!-- <user name="user">
<property name="password">user</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">true</property>
</user> -->

<!-- <cluster> <node name="cobar1"> <property name="host">127.0.0.1</property>
<property name="weight">1</property> </node> </cluster> -->

<!-- <quarantine> <host name="1.2.3.4"> <property name="user">test</property>
</host> </quarantine> -->

</mycat:server>

4.5.4.修改conf下的partition-hash-int.txt文件

1
2
3
在下面添加10020=2,
原本默认的是分两个就是10000和10010,
现在我们有三个就要三个分类id了,添加一个即可
1
2
3
4
5
[root@master conf]# vi partition-hash-int.txt

10000=0
10010=1
10020=2

5.测试mycat

5.1.启动mycat,执行mycat start

1
[root@master mycat]# ./bin/mycat start

5.2.查看mycat是否启动成功

1
2
tail -100  /opt/modules/mycat/logs/wrapper.log查看结果如下就表明启动成功了
[root@master mycat]# tail -100 /opt/modules/mycat/logs/wrapper.log

5.2.1.测试下8066端口

1
[root@master conf]# telnet master 8066

5.3.测试mysql表横向分割

5.3.1.在虚拟机外的windows安装Navicat for MySQL,分别连接到三个mysql数据库,执行建表语句

1
create table employee (id int not null primary key,name varchar(100),sharding_id int not null);

5.3.2.用Navicat for MySQL连接mycat,mycat默认端口是8066,配置如图:

5.3.3.插入数据

1
2
3
4
5
6
7
8
9
因为刚才执行了建表语句,这时候连接上了mycat里面也有一个空的employee表
执行如下语句

insert into employee(id,name,sharding_id) values(1, 'I am db1',10000);
insert into employee(id,name,sharding_id) values(2, 'I am db2',10010);
insert into employee(id,name,sharding_id) values(3, 'I am db3',10020);
insert into employee(id,name,sharding_id) values(4, 'I am db1',10000);
insert into employee(id,name,sharding_id) values(5, 'I am db2',10010);
insert into employee(id,name,sharding_id) values(6, 'I am db3',10020);

5.3.4.查看mycat中的employee表

5.3.5.查看master连接中db1数据库的employee表

5.3.6.查看slave1连接中db2数据库的employee表

5.3.7.查看slave2连接中db3数据库的employee表

1
发现每个库存了两条数据
本文作者 : Matrix
原文链接 : https://matrixsparse.github.io/2016/02/12/Mycat安装和测试/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

知识 & 情怀 | 二者兼得

微信扫一扫, 向我投食

微信扫一扫, 向我投食

支付宝扫一扫, 向我投食

支付宝扫一扫, 向我投食

留下足迹