修改记录
编号 | 日期 | 描述 | 版本 | 作者 | 审核 | 发布日期 |
1 | 2016/7/10 | 初稿 | 1.0 | 夏裕太 | 1 | |
目 录
1 准备 1
2 解压缩 1
3 mycat加进环境变量 1
4 创建mycat用户并设置密码 1
5 启动和测试 2
5.1 建测试库 2
5.2 修改mycat配置文件schema.xml 2
5.3 启动 3
5.4 下面以Travelrecord表为例,来进行插入,查询,路由分析等基本操作 4
5.4.1 首先利用mycat连接mysql数据库 4
5.4.2 创建Travelrecord表 4
5.4.3 插入数据 4
5.4.4 下面来看看分片的效果 5
5.4.5 切换成mycat账号登陆 6
1准备
下载以下安装包
Mycat-server-1.5.1-RELEASE-20160602230303-linux.tar.gz
2解压缩
[root@localhost software]# tar zxvf Mycat-server-1.5.1-RELEASE-20160602230303-linux.tar.gz
[root@localhost software]# mv /data/software/mycat /data/program
3mycat加进环境变量
[root@localhost software]# vi /etc/profile
#添加以下内容
export PATH=$PATH:/data/program/mycat/bin
[root@localhost software]# . /etc/profile
4创建mycat用户并设置密码
[root@localhost software]# useradd mycat
[root@localhost software]# passwd mycat
#按要求输入两次完全一样的密码
Changing password for user mycat.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
5启动和测试
5.1建测试库
首先在241的MySQL里创建三个数据库:db1,db2,db3
#登录数据库
[root@localhost software]# mysql -u root -p
#依次建立三个新库
mysql> create database db1;
Query OK, 1 row affected (0.02 sec)
mysql> create database db2;
Query OK, 1 row affected (0.00 sec)
mysql> create database db3;
Query OK, 1 row affected (0.00 sec)
5.2修改mycat配置文件schema.xml
修改mycat配置文件schema.xml即/data/program/mycat/confschema.xml,找到如下内容
将标红的部分分别改成你数据库相应的ip 端口号用户名和密码,然后启动mycat
5.3启动
#启动mycat
[root@localhost bin]# mycat start
#关闭
[root@localhost bin]# mycat stop
5.4下面以Travelrecord表为例,来进行插入,查询,路由分析等基本操作
5.4.1首先利用mycat连接mysql数据库
#标红处更换自己的数据库IP
其中8066是mycat的监听端口,类似于mysql的3306端口,其中-u,-p,-h分别是用户名,密码和主机,-D是连接的逻辑库
[root@localhost bin]# mysql -utest -ptest -h10.1.1.241 -P8066 -DTESTDB
mysql: [Warning] Using a password on the command line interface can be insecure.
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \\g.
Your MySQL connection id is 1
Server version: 5.5.8-mycat-1.5.1-RELEASE-20160602230303 MyCat Server (OpenCloundDB)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\\h' for help.Type '\\c' to clear the current input statement.
mysql>
5.4.2创建Travelrecord表
mysql> create table travelrecord (id bigint not null primary key,user_id varchar(100),traveldate DATE, fee decimal,days int);
5.4.3插入数据
mysql> insert into travelrecord(id,user_id,traveldate,fee,days) values(1,'Victor',20160101,100,10);
Query OK, 1 row affected (0.11 sec)
mysql> insert into travelrecord(id,user_id,traveldate,fee,days) values(5000001,'Jobs',20160102,100,10);
Query OK, 1 row affected (0.01 sec)
mysql> insert into travelrecord(id,user_id,traveldate,fee,days) values(10000001,'Slow',20160103,100,10);
Query OK, 1 row affected (0.01 sec)
#至于ID为什么取三个值,这个与conf目录下autopartition-long.txt的定义有关,这个文件主要定义auto-sharding-long的规则。主要是测试id取不同区间的值时,分片的效果。下面来看看分片的效果
5.4.4下面来看看分片的效果
#此处需切换到10.1.1.241机器上,通过mysql的账号,登陆进去查询
mysql> select * from db1.travelrecord;
+----+---------+------------+------+------+
| id | user_id | traveldate | fee | days |
+----+---------+------------+------+------+
| 1 | Victor | 2016-01-01 | 100 | 10 |
+----+---------+------------+------+------+
1 row in set (0.00 sec)
mysql> select * from db2.travelrecord;
+---------+---------+------------+------+------+
| id | user_id | traveldate | fee | days |
+---------+---------+------------+------+------+
| 5000001 | Jobs | 2016-01-02 | 100 | 10 |
+---------+---------+------------+------+------+
1 row in set (0.00 sec)
mysql> select * from db3.travelrecord;
+----------+---------+------------+------+------+
| id | user_id | traveldate | fee | days |
+----------+---------+------------+------+------+
| 10000001 | Slow | 2016-01-03 | 100 | 10 |
+----------+---------+------------+------+------+
1 row in set (0.00 sec)
果然是分配到三个不同的节点上了,如果想看MyCAT具体会将数据分配到哪个节点上,可通过路由分析。语法其实蛮简单,就是SQL语句前加上explain语句。下面根据explain命令查看create语句和insert语句具体会分配到哪些Datanode上
5.4.5切换成mycat账号登陆
mysql> explain create table travelrecord (id bigint not null primary key,user_id varchar(100),traveldate DATE, fee decimal,days int);
+-----------+-----------------------------------------------------------------------------------------------------------------------+
| DATA_NODE | SQL |
+-----------+-----------------------------------------------------------------------------------------------------------------------+
| dn1 | create table travelrecord (id bigint not null primary key,user_id varchar(100),traveldate DATE, fee decimal,days int) |
| dn2 | create table travelrecord (id bigint not null primary key,user_id varchar(100),traveldate DATE, fee decimal,days int) |
| dn3 | create table travelrecord (id bigint not null primary key,user_id varchar(100),traveldate DATE, fee decimal,days int) |
+-----------+-----------------------------------------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)
关于MyCAT的配置其实是蛮简单的,最主要的是熟悉各配置文件的规则。以上用户名,密码,如何分库,都是在配置文件中定义的