springboot 实现读写分离,分库分表 (二) 使用SHARDINGJDBC读写分离
上个博客讲了MYSQL的主从配置,主从数据库配好了以后
就可以实现读写分离了。
一般读写分离,主库做增删改等操作,
从库做查询操作。如果查询多的话,可以多做几天从库。
SHARDINGJDBC最开始是由当当网开始的一个开源项目。由于反响好
直接进入apache的孵化项目,更名为 SHARDINGSPHERE
GITHUB项目地址: https://github.com/apache/incubator-shardingsphere
下面是一些主要代码是说明
1,引入jar,注意这里springboot的版本不要太高,官网的例子是2.0.6.RELEASE
我用了springboot最新的版本,启动一致报错,bean冲突。主要如下。
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.6.RELEASE</version> <relativePath/> </parent>
<dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-jdbc-spring-boot-starter</artifactId> <version>4.0.0-RC1</version> </dependency>
2,配置文件配置:
spring: shardingsphere: props: sql: show: true datasource: names: master,slave #对应下面主从库 master: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://192.168.89.129:3306/shrek-db?characterEncoding=utf-8 username: root password: 123456 slave: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://192.168.89.130:3306/shrek-db?characterEncoding=utf-8 username: root password: 123456 masterslave: load-balance-algorithm-type: round_robin #负载 轮询,当你有多个从库或者主库时 name: ms master-data-source-name: master #设置主库 slave-data-source-names: slave #设置从库
很简单吧,就加了点代码,SHARDINGSPHERE会帮你自动切库,
当你做增删改时,会直接操作主库,
当你做查询操作时,会直接查询从库,这里数据库压力就可以平摊出来了
而我们一般的系统都是增删改少,查询多,就可以多设置几个从库,
下面是查询和增加效果切图
查询查从库,如下:
增加操作主库:如下