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));
    }