ShardingShpere 分表分库+读写分离
ShardingShpere 提供来了根据某个字段分库分表的功能和读写分离。
读写分离
当主服务有写入(insert/update/delete)语句时,从服务器自动获取。
- 写入线程从 master 数据库查询
- 查询线程从 salve 数据库获取数据
ShardingShpere 源码
版本依赖
- JDK 8
- SpringBoot 2.4.3
- ShardingShpere 5.0
创建两个数据库 master0、master1,每个库包含三张表 user_0、user_1、user_2。
CREATE DATABASE `master0` CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE DATABASE `master1` CHARACTER SET utf8 COLLATE utf8_general_ci;
use master0;
DROP TABLE IF EXISTS user_0;
CREATE TABLE `user_0` (
`id` bigint(20) UNSIGNED NOT NULL,
`email` varchar(255) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS user_1;
CREATE TABLE `user_1` (
`id` bigint(20) UNSIGNED NOT NULL,
`email` varchar(255) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS user_2;
CREATE TABLE `user_2` (
`id` bigint(20) UNSIGNED NOT NULL,
`email` varchar(255) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;
添加 application.yml
spring:
jpa:
properties:
hibernate:
hbm2ddl:
auto: update
dialect: org.hibernate.dialect.MySQL5Dialect
show_sql: false
shardingsphere:
datasource: