本文主要是介绍SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤》本文主要介绍了SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤,文中通过示例代码介绍的非常详...
目标
- 在 Spring Boot 中连接 ProxySQL。
- 使用 MyBatis-Flex 访问数据库。
- 配置 读写分离 和 延迟检测。
步骤 1:确保 ProxySQL 和 MySQL 主从同步已正确配置
首先,确保您已经正确配置了 ProxySQL 和 MySQL 主从同步。
ProxySQL 的默认配置
Hostgroup ID | 描述 |
---|---|
10 | 主库(写操作) |
20 | 从库(读操作) |
ProxySQL 的数据端口
- 端口:6033(默认数据接口端口)
步骤 2:在 Spring Boot 项目中引入依赖
引入 MyBatis-Flex 的依赖
在 pom.xml
中添加以下依赖:
<dependency> <groupId>com.mybatisflex</groupId> <artifactId>mybatis-flex-spring-boot-starter</artifactId> &pythonlt;version>1.4.3</version> </dependency>
步骤 3:配置 application.yml
在 application.yml
文件中配置 ProxySQL 的数据源。
spring: datasource: url: jdbc:mysql://127.0.0.1:6033/db_order_plus?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai username: root password: root mybatis-flex: mapper-locations: classpath:mapper/**/*Mapper.xml configuration: map-underscore-to-camel-case: true
步骤 4:配置数据源的读写分离
在 ProxySQL 中配置 读写分离规则:
在 ProxySQL 管理界面执行以下 SQL
INSERT INTO mysql_query_rules (rule_id, active, match_pattern, destination_hostgroup) VALUES (1, 1, '^SELECT.*', 20), (2, 1, '^INSERT.*|^UPDATE.*|^DELETE.*', 10); LOAD MYSQL QUERY RULES TO RUNTIME; SAVE MYSQL QUERY RULES TO DISK;
步骤 5:创建 MyBatis-Flex 的 Mapper 和实体类
1、创建实体类
在 com.example.demo.entity
包中创建一个实体类,例如 Order.Java
:
package com.example.demo.entity; public class Order { private Long id; priphpvate String orderName; // Getters and Setters }
2、创建 Mapper 接口
在 com.example.demo.mapper
包中创建一个 Mapper 接口:
package com.example.demo.mapper; import com.example.demo.entity.Order; import org.apache.ibatis.annotations.Select; public interface OrderMapper { @Select("SELECT * FROM orders WHERE id = #{id}") Order selectOrderById(Long id); }
3、创建 Mapper XML 文件
在 src/main/resources/mapper
目录下创建 OrderMapper.xml
:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.demo.mapper.OrderMapper"> <select id="selectOrderById" resultType="com.example.demo.entity.Order"> SELECT * FROM orders WHERE id = #{id} </select> </mapper>
步骤 6:创建 Service 和 Controller
1、 创建 Service
在 com.example.demo.service
包中创建一个 OrderService
:
package com.example.demo.service; import com.example.demo.entity.Order; import com.example.demo.mapper.OrderMapper; import org.springframework.stereotype.Service; @Service public class OrderService { www.chinasem.cn private final OrderMapper orderMapper; public OrderService(OrderMapper orderMapper) { this.orderMapper = orderMapper; } http://www.chinasem.cn public Order getOrderById(Long id) { return orderMapper.selectOrderById(id); } }
2、创建 Controller
在 com.example.demo.controller
包中创建一个 OrderController
:
package com.example.demo.controller; import com.example.demo.entity.Order; import com.example.demo.service.OrderService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; @RestController public class OrderController { private final OrderService orderService; public OrderController(OrderService orderService) { this.orderService = orderService; } @GetMapping("/orders/{id}") public Order getOrderById(@PathVariable Long id) { return orjsderService.getOrderById(id); } }
步骤 7:测试读写分离
- 启动 Spring Boot 项目:
mvn spring-boot:run
- 测试写操作(INSERT/UPDATE/DELETE)
通过 Navicat 或其他工具,向数据库执行写操作,确保这些操作路由到 主库。
- 测试读操作(SELECT)
访问 http://localhost:8080/orders/{id}
,验证读操作是否路由到 从库。
步骤 8:配置延迟检测
在 ProxySQL 中启用 延迟检测:
SET mysql-monitor_replication_lag_interval_ms = 1000; INSERT INTO mysql_replication_hostgroups (writer_hostgroup, reader_hostgroup, check_type, max_replication_lag) VALUES (10, 20, 'seconds_behind_master', 5); LOAD MYSQL VARIABLES TO RUNTIME; SAVE MYSQL VARIABLES TO DISK;
✅ 总结
步骤 | 描述 |
---|---|
安装 MyBatis-Flex | 在项目中引入 MyBatis-Flex |
配置数据源 | 在 application.yml 中配置 ProxySQL 的数据源 |
配置读写分离规则 | 在 ProxySQL 中配置读写分离规则 |
创建实体类、Mapper、Service、Controller | 实现数据库访问逻辑 |
启用延迟检测 | 在 ProxySQL 中启用延迟检测 |
到此这篇关于SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤的文章就介绍到这了,更多相关SpringBoot MyBatis-Flex配置ProxySQL内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!
这篇关于SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!