# 增加数据源s0,使用上面主从同步配置的从库。
spring.shardingsphere.datasource.names = m0,m1,m2,s0
...
spring.shardingsphere.datasource.s0.type = com.alibaba.druid.pool.DruidDataSource
spring.shardingsphere.datasource.s0.driver‐class‐name = com.mysql.jdbc.Driver
spring.shardingsphere.datasource.s0.url = jdbc:mysql://localhost:3307/user_db?useUnicode=true
spring.shardingsphere.datasource.s0.username = root
spring.shardingsphere.datasource.s0.password = root
....
# 主库从库逻辑数据源定义 ds0为user_db
spring.shardingsphere.sharding.master‐slave‐rules.ds0.master‐data‐source‐name=m0 #主服务器
spring.shardingsphere.sharding.master‐slave‐rules.ds0.slave‐data‐source‐names=s0 #从DB
# t_user分表策略,固定分配至ds0的t_user真实表
spring.shardingsphere.sharding.tables.t_user.actual‐data‐nodes = ds0.t_user
@RunWith(SpringRunner.class)
@SpringBootTest
public class ShardingDbApplicationTests {
@Autowired
private UserMapper userMapper;
//添加操作
@Test
public void addUserDb() {
User user = new User();
user.setUsername("lucymary");
user.setUstatus("a");
userMapper.insert(user);
}
//查询操作
@Test
public void findUserDb() {
QueryWrapper<User> wrapper = new QueryWrapper<>();
//设置userid值
wrapper.eq("user_id",597485223231356929L);
User user = userMapper.selectOne(wrapper);
System.out.println(user);
}
}
修改主DB数据
从DB数据跟着变化
增删改时,只操作主DB
查询时,只操作从DB,故实现了读写分离