• mycat


    目录

    1.什么是mycat

    2.为什么使用mycat

    3.使用mycat

    3.1.克隆一台虚拟机并且修改端口号

    3. 2.上传并解压mycat

    3.3.修改配置文件

     3.3.1.schema.xml配置文件

    3.3.2.server.xml配置文件

    3.3.3.启动mycat

    3.3.4.登录mycat

    4.测试

    4.1.新建一个spring-boot的项目--省略

    4.2.添加依赖

    4.3.配置文件

    4.4.实体类

    4.5.mapper类

    4.6.测试类

    5.实现主从分离

    5.1.修改schema.xml配置文件

    5.2.测试


    1.什么是mycat

    Mycat数据库中间件,所谓中间件,是一类连接软件组件和应用的计算机软件,以便软件各部件之间的通信。

            例如 tomcat,web的中间件。而数据库中间件是连接Java应用程序和数据库中间的软件。

     2.为什么使用mycat

    1.Java与数据库的紧耦合

    2.高访问量高并发对数据库的压力

    3.读写请求数据不一致

     我们现在普遍的Java应用程序都是直接连接了MySQL软件进行读写操作,也就是我们在Java中的配置文件等定义了mysql的数据源,直接连接到了我们的mysql软件,但是当某些情况下我们可能需要用到了多个数据库,这个时候我们可能就需要配多个数据源去连接我们的多个数据库,这个时候我们进行sql操作的时候就会很麻烦,因为Java与数据库有了一个紧密的耦合度,但是如果我们在Java应用程序与mysql中间使用了mycat,我们只需要访问mycat就可以了,至于数据源等问题,mycat会直接帮我们搞定。

            再来说一下高访问量高并发,我们都知道mysql数据库实际上在数据查询上是有一个瓶颈的,当我们的数据太多的时候,已经互联网上有高并发的请求的时候,这个时候对我们mysql的压力是非常大的,当访问量一大,就可能会出现查不出数据,响应的时间太长等,这个时候我们可能需要有多个服务器对数据库进行读写分离,以及对数据库进行集群,这个时候我们的sql语句要进行分类,哪个sql语句要访问哪个数据库,这个时候只要交给mycat就可以了。

    3.使用mycat

    3.1.克隆一台虚拟机并且修改端口号

    修改端口号之后重启一下

    3. 2.上传并解压mycat

    tar -zxvf Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz --解压

     

     3.3.修改配置文件

    进入conf配置文件中

     3.3.1.schema.xml配置文件

    3.3.2.server.xml配置文件

     3.3.3.启动mycat

     3.3.4.登录mycat

    复制一下回话输入

    mysql -umycat -p1234 -P 8066 -h 192.168.74.156

    mycat的端口号是8066

    注意一定要把防火墙关闭

    4.测试

    4.1.新建一个spring-boot的项目--省略

    4.2.添加依赖

    1. <properties>
    2. <java.version>1.8java.version>
    3. <mysql.version>5.1.4mysql.version>
    4. properties>
    5. <dependencies>
    6. <dependency>
    7. <groupId>org.springframework.bootgroupId>
    8. <artifactId>spring-boot-starter-webartifactId>
    9. dependency>
    10. <dependency>
    11. <groupId>com.baomidougroupId>
    12. <artifactId>mybatis-plus-boot-starterartifactId>
    13. <version>3.5.2version>
    14. dependency>
    15. <dependency>
    16. <groupId>mysqlgroupId>
    17. <artifactId>mysql-connector-javaartifactId>
    18. <scope>runtimescope>
    19. dependency>
    20. <dependency>
    21. <groupId>org.projectlombokgroupId>
    22. <artifactId>lombokartifactId>
    23. <optional>trueoptional>
    24. dependency>
    25. <dependency>
    26. <groupId>org.springframework.bootgroupId>
    27. <artifactId>spring-boot-starter-testartifactId>
    28. <scope>testscope>
    29. dependency>
    30. dependencies>

    4.3.配置文件

    1. server.port=8080
    2. spring.datasource.url=jdbc:mysql://192.168.74.156:8066/testdb?serverTimezone=Asia/Shanghai
    3. spring.datasource.username=mycat
    4. spring.datasource.password=1234
    5. spring.datasource.driver-class-name=com.mysql.jdbc.Driver

    4.4.实体类

    1. @Data
    2. public class User {
    3. @TableId(type = IdType.AUTO)
    4. private Long id;
    5. private String name;
    6. }

    4.5.mapper类

    1. @Mapper
    2. public interface UserMapper extends BaseMapper {
    3. }

    4.6.测试类

    1. @Test
    2. void contextLoads() {
    3. User user=new User();
    4. user.setName("hhhhh");
    5. int insert = userMapper.insert(user);
    6. System.out.println(insert);
    7. }

    我们发现可以同步,但是还没有实现主从分离

    5.实现主从分离

    5.1.修改schema.xml配置文件

    5.2.测试

    读的压力在从数据库

    写的压力两边都有

    1. @Autowired
    2. private UserMapper userMapper;
    3. @Test
    4. void contextLoads() {
    5. User user=new User();
    6. user.setName("gggg");
    7. int insert = userMapper.insert(user);
    8. System.out.println(insert);
    9. }
    10. @Test
    11. public void demo1(){
    12. User user = userMapper.selectById(1);
    13. System.out.println(user);
    14. }

  • 相关阅读:
    [c++]你最喜爱的stringstream和snprintf性能深入剖析
    P1154 奶牛分厩
    PHP框架详解 - Symfony框架
    【单调栈】503. 下一个更大元素 II
    leaflet+vue2实现地图交互
    Promise简(resolve,reject,catch)
    如何为 Python 应用选择最好的 Docker 镜像?
    MATLB|具有储能的经济调度及机会约束和鲁棒优化
    web学习笔记(三十三)
    JavaScript
  • 原文地址:https://blog.csdn.net/ne_123456/article/details/126917673