分类
Java 日记 笔记

Sharding JDBC Demo 2.0 (主从版)

从今年初接触Sharding JDBC 4.0到现在,近一年了,用来做日志和消息分表一直运行,没什么大的问题。前些天生产新上了一个服务,是因为Sharding JDBC把select for update语句解析为查询,在从库中执行,因为从库是只读权限所以报错。

之前没在测试环境发现这个问题,是因为测试环境数据库没有主从。想起当时刚接触Sharding JDBC写的Demo,于是整理一番,重新拉分支,并完善整个流程,模拟真实场景。

针对那个生产问题,可以确定的是Sharding JDBC 4.0是已修复的。当时做分库分表前,项目一直用Sharding JDBC 3.x做读写分离。我在新的微服务用上4.0版本后,原计划把其他服务的Sharding JDBC版本升级,但Sharding JDBC从4.0开始对schema有严格校验,旧项目有很多跨库操作,不能升级。这次新加的微服务还是用的3.x版本,3.x版本解析select for update是有问题的。在4.0的RC版本中有修复,4.0正式版是支持的。

Demo 1.0在master分支里,以后也不再维护,新Demo采用git最新命名规范main,已设为默认分支。

Demo使用版本为最新稳定版:Sharding JDBC 4.1.1,Spring Boot 2.3.5.RELEASE,数据库采用一主两从。

因为该项目主要是演示分库分表,数据库框架用的Spring Data JPA(1.0版本用MyBatis Plus),问题不大。在README中有数据库主从复制配置方法,可以快速搭建环境。

我在整理这个Demo时,官方文档5.x已开始编写,在我了解4.0版本上增加了很多功能。在写Demo的过程中发现4.1.x版本的有些类和4.0不同。我觉得这是一个很有活力且快速发展的项目,而且还有技术价值,所以决定持续更新这个项目。

github:https://github.com/wangzhengzhen/sharding-jdbc-demo

发表评论

电子邮件地址不会被公开。