Spring Boot对接MySQL InnoDB Cluster如何使用单数据源处理读写请求
解决方案
你完全可以只用单个数据源处理所有读写操作,有两种可选实现方式:
方案1:直接使用现有读写端口(无需调整MySQL Router,最快生效)
- 你当前的
localhost:6446是读写端口,单主架构下该端口所有请求都会路由到集群主节点,主节点本身天然支持读、写两类操作,你完全不需要使用6447只读端口。 - Spring Boot的数据源仅需配置该6446端口即可,所有读写请求都走这一个端口,不需要维护多数据源。唯一的影响是读请求不会自动分摊到从节点,完全符合你不需要读写分离的需求。
参考配置示例:
spring: datasource: url: jdbc:mysql://localhost:6446/your_db_name?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai username: your_account password: your_password driver-class-name: com.mysql.cj.jdbc.Driver
方案2:新增MySQL Router统一路由端口(适合多应用统一规范场景)
如果你不想在应用层使用默认的读写分离端口,可以修改MySQL Router的配置,新增一个专门路由到主节点的统一端口:
- 打开MySQL Router的配置文件
mysqlrouter.conf,新增如下路由配置段:
[routing:all_to_primary] bind_address = 0.0.0.0 bind_port = 6448 destinations = metadata-cache routing_strategy = first-available role = PRIMARY
- 重启MySQL Router服务后,所有发往
6448端口的请求都会自动转发到当前集群主节点,同时支持读写操作,应用端直接配置该端口即可。
内容的提问来源于stack exchange,提问作者Ashish
相关产品推荐
相关产品推荐

