1. mycat下载
http://dl.mycat.io/1.6-RELEASE/
2.解压,配置环境变量,path=D:\software\Mycat-server-1.6-RELEASE-20161028204710-win\mycat\bin[mycat安装地址]
3.修改配置文件【目录:D:\software\Mycat-server-1.6-RELEASE-20161028204710-win\mycat\conf】
a)修改wrapper.conf
b)修改server.xml,配置用户名和密码[如果server.xml配置了多个schema,那么在schema.xml要有对应的schema匹配。]
设置自增长的方式
c)设置sequence_conf.properties
设置sequence_db_conf.properties
d)修改schema.xml (定义逻辑库,表、分片节点等内容),如果是应用于多个项目,可以设置多个schema
e)修改rule.xml
在schema.xml配置分库的rule的类型的时候,要修改rule.xml中相应的方法中分库的数量,如下图路由方法murmur。
注:简单介绍一下Mycat分库规则
MYCAT常用的分片规则如下,另外还有一些其他分片方式这里不全部列举:
(1)分片枚举: sharding-by-intfile
(2)主键范围约定: auto-sharding-long 此分片适用于,提前规划好分片字段某个范围属于哪个分片
(3)一致性hash: sharding-by-murmur
(4)字符串hash解析: sharding-by-stringhash
(5)按日期(天)分片:sharding-by-date
(6)按单月小时拆分: sharding-by-hour
(7)自然月分片: sharding-by-month
(8)取模: mod-long 此规则为对分片字段求摸运算
(9)取模范围约束: sharding-by-pattern 此种规则是取模运算与范围约束的结合,主要为了后续数据迁移做准备,即可以自主决定取模后数据的节点分布
4. 启动mycat
在mycat的bin路径下【D:\software\Mycat-server-1.6-RELEASE-20161028204710-win\mycat\bin】按住shift键的同时右键选择【在此处打开窗口】
安装mycat服务 :mycate install
启动mycat服务 :mycate start
停止mycat服务 :mycate stop
注意:当修改配置文件后,需要重启mycat服务 reload @@config;
安装开启mycat服务后,输入命令进入mysql,如果是连接本机不需要-h[ip]
mysql -h[ip] -u[user] -p[password] -P8066
eg: mysql -uroot -p123456 -P8066
可输入以下命令查看数据库信息。
show databases;//分号不能少
5. 与navicat连接
新建连接,端口选择8066
在navicat 端口为3306的连接中创建数据库db1,db2,db3.然后在navicat的命令列界面创建表。
mysql> use TESTDB;
Query OK, 0 rows affected
mysql> create table userinfo(id int primary key not null auto_increment,username varchar(16) not null,password varchar(16) not null,phone varchar(16),name varchar(50));
Query OK, 0 rows affected
mysql> create table rankglobal(id int primary key not null auto_increment,rankname varchar(16) not null);
Query OK, 0 rows affected
mycat在springboot中的使用
1.在application.yml中写数据库相关信息
spring:
datasource:
url: jdbc:mysql://127.0.0.1:8066/TESTDB
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
2.按照教程进行springboot的搭建,创建相关的dao,service,controller
----------------------------------------------------------------------------------------------------------------------------------
相关的报错:
1.Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown character set: 'utf8mb4'
; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown character set: 'utf8mb4'
解决方法:更换驱动版本
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
<scope>runtime</scope>
</dependency>
2.Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value for column 'id' at row 1
原因:userinfo 表中id字段设置的是int,应该设为bigint
ALTER TABLE userinfo MODIFY COLUMN id BIGINT(64) auto_increment not null;
根本原因:mycat中server.xml中自增长的方式设置成时间戳,导致自增长获得的id特别大,超出了int的范围
解决方法:将自增长方式设置为自定义
3. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: columnValue:dcx Please eliminate any quote and non number within it.
原因:分片方式设置为mod-long,而分片的字段是字符串类型
解决方法: