mycat安装及与springboot整合

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,而分片的字段是字符串类型

解决方法:




版权声明:本文为dingchang3060原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。