SpringBoot+Mycat+MySQL实现分表

SpringBoot项目pom.xml



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.4.RELEASE
         
    
    com.yunji.study
    study-boot
    0.0.1-SNAPSHOT
    study-boot
    Demo project for Spring Boot

    
        1.8
    

    
        
            org.springframework.boot
            spring-boot-starter-data-jpa
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            1.3.1
        
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
        
            com.github.ben-manes.caffeine
            guava
            2.7.0
        
        
            org.springframework.boot
            spring-boot-starter-data-elasticsearch
        
        
        
            
            
            
        
        
            org.springframework.data
            spring-data-elasticsearch
            3.1.6.RELEASE
        
        
            mysql
            mysql-connector-java
            runtime
        

        
            com.alibaba
            druid
            1.1.0
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    



1.配置切分规则

将如下配置复制粘贴覆盖mycat/conf/schema.xml的内容





    
              
       
    
      
      
            select user()  
              
     
 
  

:表示的是在mycat中的逻辑库配置,逻辑库名称为:TESTDB

:表示在mycat中的逻辑表配置,逻辑表名称为:user,映射到两个数据库节点dataNode中,切分规则为:rule1(在rule.xml配置)

:表示数据库节点,这个节点不一定是单节点,可以配置成读写分离.

:真实的数据库的地址配置

:用户心跳检测

:写库的配置

将如下配置复制粘贴覆盖mycat/conf/rule.xml的内容。




    
        
            id
            mod-long
        
    
    
        
        2
    

这里定义的是切分规则,是按照id列进行切分,切分规则是采取取模的方式,
2:这里配置了我们有拆分了多个库(表),需要和前面配置


中的dataNode个数一致,否则会出错.

2.启动mycat

3.连接mycat,用户名在mycat的配置文件server.xml中

SpringBoot+Mycat+MySQL实现分表_第1张图片
4.在数据库中创建两个数据库db01,db02.

每个库中执行如下建表语句:

CREATE TABLE `user` (
  `id` bigint(20) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

同时在SpringBoot+Mycat+MySQL实现分表_第2张图片mycat数据库TESTDB中也要执行建表语句去创建表user

 

springboot项目的

application.properties配置:

注意:端口是8066

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.url=jdbc:mysql://localhost:8066/TESTDB?useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123456

UserMapper.java代码如下:

@Mapper
public interface UserMapper {
    @Insert("insert into user(id,name) value (#{id},#{name})")
    int insert(User user);
    @Select("select * from user")
    List selectAll();
}

UserController.java代码如下:

@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserMapper userMapper;
    @RequestMapping("/save")
    public String save(User user){
        userMapper.insert(user);
        return "保存成功";
    }
    @RequestMapping("/list")
    public List list(){
        return userMapper.selectAll();
    }
}

测试:
在地址栏输入:

http://localhost:8080/user/save?id=1&name=tom

http://localhost:8080/user/save?id=2&name=Lucy

http://localhost:8080/user/save?id=3&name=Lily

http://localhost:8080/user/save?id=4&name=Lina

查看数据库发现:

id为1,3的数据插入到数据库db02中的user表。
id为2,4的数据插入到数据库db01中的user表。

在地址栏输入:
http://localhost:8080/user/list
是可以看到刚刚插入的四条记录.

 

参考:https://www.jianshu.com/p/f81422b1c915

你可能感兴趣的:(Mycat)