Mysql 读写分离
接上文 Mysql 分布式序列算法
1.读写分离
数据库变为主从状态,删除当前的表
drop table test;
然后将从库开启只读模式,在mysql配置中进行修改
read-only = 1
这样从库就只能读数据了(但root账号还是可以写数据),接着重启服务器:
sudo systemctl restart mysql.service
然后进入主库 查看状态
show master status
重新配置主从关系
change replication source to SOURCE_HOST='8.130.172.119',SOURCE_USER='test',SOURCE_PASSWORD='12345678',SOURCE_LOG_FILE='binlog.000002',SOURCE_LOG_POS=819;
然后主库创建表
create table test (
`id` bigint primary key,
`name` varchar(255) NULL,
`passwd` varchar(255) NULL
);
然后配置ShardingJDBC
spring:
shardingsphere:
rules:
#配置读写分离
readwrite-splitting:
data-sources:
#名称随便写
user-db:
#使用静态类型,动态Dynamic类型可以自动发现auto-aware-data-source-name,这里不演示
type: Static
props:
#配置写库(只能一个)
write-data-source-name: db0
#配置从库(多个,逗号隔开)
read-data-source-names: db1
#负载均衡策略,可以自定义
load-balancer-name: my-load
load-balancers:
#自定义的负载均衡策略
my-load:
type: ROUND_ROBIN
然后将上文的雪花算法去掉,即修改mapper为原来的带id的插入方式
然后进行测试
@Test
void contextLoads() {
mapper.addUser(new User(10, "aaa", "bbb"));
System.out.println(mapper.getUserById(10));
}