apache / shardingsphere

Distributed SQL transaction & query engine for data sharding, scaling, encryption, and more - on any database.
Apache License 2.0
19.8k stars 6.7k forks source link

一主多从 springboot mybatis sharding-jdbc druid 轮询slave没有成功 #442

Closed chenhaifeng2016 closed 6 years ago

chenhaifeng2016 commented 6 years ago

环境 springboot + mybatis + sharding-jdbc + druid + mysql

master: 10.0.0.201 slave0: 10.0.0.202 slave1: 10.0.0.203

版本信息如下 //MyBatis compile('org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.1')

//sharding jdbc
compile('io.shardingjdbc:sharding-jdbc-spring-boot-starter:2.0.0.M2')

//Druid
compile 'com.alibaba:druid-spring-boot-starter:1.1.5'

//MySQL
runtime('mysql:mysql-connector-java')

配置文件application.properties

sharding.jdbc.datasource.names=ds_master,ds_slave_0,ds_slave_1

sharding.jdbc.datasource.ds_master.type=com.alibaba.druid.pool.DruidDataSource sharding.jdbc.datasource.ds_master.driverClassName=com.mysql.jdbc.Driver sharding.jdbc.datasource.ds_master.url=jdbc:mysql://10.0.0.201:3306/web?useUnicode=true&characterEncoding=utf8 sharding.jdbc.datasource.ds_master.username=web sharding.jdbc.datasource.ds_master.password=web sharding.jdbc.datasource.ds_master.initial-size=1 sharding.jdbc.datasource.ds_master.min-idle=1 sharding.jdbc.datasource.ds_master.max-active=5 sharding.jdbc.datasource.ds_master.filter.stat.log-slow-sql=true sharding.jdbc.datasource.ds_master.filter.wall.enabled=true

sharding.jdbc.datasource.ds_slave_0.type=com.alibaba.druid.pool.DruidDataSource sharding.jdbc.datasource.ds_slave_0.driverClassName=com.mysql.jdbc.Driver sharding.jdbc.datasource.ds_slave_0.url=jdbc:mysql://10.0.0.202:3306/web?useUnicode=true&characterEncoding=utf8 sharding.jdbc.datasource.ds_slave_0.username=web sharding.jdbc.datasource.ds_slave_0.password=web sharding.jdbc.datasource.ds_slave_0.initial-size=1 sharding.jdbc.datasource.ds_slave_0.min-idle=1 sharding.jdbc.datasource.ds_slave_0.max-active=5 sharding.jdbc.datasource.ds_slave_0.filter.stat.log-slow-sql=true sharding.jdbc.datasource.ds_slave_0.filter.wall.enabled=true

sharding.jdbc.datasource.ds_slave_1.type=com.alibaba.druid.pool.DruidDataSource sharding.jdbc.datasource.ds_slave_1.driverClassName=com.mysql.jdbc.Driver sharding.jdbc.datasource.ds_slave_1.url=jdbc:mysql://10.0.0.203:3306/web?useUnicode=true&characterEncoding=utf8 sharding.jdbc.datasource.ds_slave_1.username=web sharding.jdbc.datasource.ds_slave_1.password=web sharding.jdbc.datasource.ds_slave_1.initial-size=1 sharding.jdbc.datasource.ds_slave_1.min-idle=1 sharding.jdbc.datasource.ds_slave_1.max-active=5 sharding.jdbc.datasource.ds_slave_1.filter.stat.log-slow-sql=true sharding.jdbc.datasource.ds_slave_1.filter.wall.enabled=true

sharding.jdbc.config.masterslave.load-balance-algorithm-type=round_robin sharding.jdbc.config.masterslave.name=ds_ms sharding.jdbc.config.masterslave.master-data-source-name=ds_master sharding.jdbc.config.masterslave.slave-data-source-names=ds_slave_0,ds_slave_1

问题描述 查询数据只能从一台slave读取数据,没有轮询。

cocodroid commented 6 years ago

mybatis版round_robin到slave存在bug,亮哥说过

cocodroid commented 6 years ago

https://github.com/shardingjdbc/sharding-jdbc/issues/436

terrymanu commented 6 years ago

duplicate with #436