数据库中间件--Sharding JDBC

之前叫Sharding JDBC,现在叫ShardingSphere

ShardingSphere官网

准备MySQL

  1. 启动MySQL服务器
  2. 连接MySQL服务器
  3. 如果连接不上先给用户授权,查看防火墙,开安全组

准备 MySQL完成主从复制

前提
在这里插入图片描述

在这里插入图片描述
开启两个MySQL服务,一个作为主机,一个作为从机。
具体配置

  1. Master节点配置
    在这里插入图片描述
    其实主要在配置文件里加上server-id=100,log-bin=mysql-bin就可以了。其它的可选
    保证server_id是唯一的就可以,修改完配置文件之后一定要重启,否则修改无效

  2. Slave节点配置
    在这里插入图片描述
    主从机的server_id不允许重复,要是唯一的
    依然要重启配置文件才可以生效

  3. 在master服务器授权slave服务器可以同步权限
    在这里插入图片描述

  4. 查询master服务的bin-log文件名和位置
    在这里插入图片描述

  5. slave进行关联master节点
    在这里插入图片描述
    之前上面的语句之后,执行 start salve,然后执行show slave status\G查看slave状态,如果找到slave_IO_Running:Yes代表成功,如果是No就是不成功
    在这里插入图片描述

  6. 在slave节点上查看主从同步状态
    在这里插入图片描述
    在这里插入图片描述

  7. 主从复制测试
    在这里插入图片描述

主从复制相关问题排查

  1. 主从复制Connection问题
    在这里插入图片描述
    在这里插入图片描述
    一般来说就是master密码写错了
    在这里插入图片描述
  2. Slave_SQL_Running:NO
    在这里插入图片描述
    在这里插入图片描述
    另一种方式解决
    在这里插入图片描述

ShardingSphere的配置及读写分离

步骤

  1. 新建一个SpringBoot工程
    file–》new–》project–》spring initializr–》next–》java version:8;填写group,artifact–》next–》spring web、lombok、sql-MyBatis–》next–》finally
    在这里插入图片描述

  2. 引入相关依赖
    在这里插入图片描述
    在这里插入图片描述

  3. 定义配置application.yml
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    注意这里有个serverTimezone=GMT;叫时区,日期在新增或者删除的时候会少8个小时,所以要修改成serverTimezone=GMT%2b8;意思是加8个小时。这里的%2b是+号的意思。比如生日有时候会少一天,所以需要注意一下这里的时区。

  4. 创建数据库表,定义mapper,controller,entity
    entity
    在这里插入图片描述
    mapper
    在这里插入图片描述
    在这里插入图片描述
    controller
    在这里插入图片描述
    在这里插入图片描述

  5. 测试接口,读的时候是随机命中的,所以读的时候可以,但是写的时候出错了,报错如下:
    在这里插入图片描述
    因为他找到三个资源ds1,ds2,ds3,不知道是要写哪个,所以需要配置默认的数据源:
    在这里插入图片描述
    配置了这个默认数据源之后,主从复制才是真正的开启

在这里插入图片描述
这里是设置了主库和从库使用的数据源,使用轮询的机制使用数据源ds2,ds3进行读取,不再是只使用随机数据源进行读取。改变了之前默认的随机使用数据源读取数据的方式。

MySQL分库分表原理

  1. 为什么要分库分表
    在这里插入图片描述
    在这里插入图片描述

  2. 分库分表
    在这里插入图片描述

  3. 不停机分库分表数据迁移
    在这里插入图片描述

  4. 小结
    在这里插入图片描述

ShardingSphere的分库和分表(解决高并发和数据量大的问题)

1. 分库分表的方式

在这里插入图片描述

2. 逻辑表

在这里插入图片描述

3. 分库分表数据节点-actual-data-nodes

在这里插入图片描述

在这里插入图片描述

4. 分库分表5中分片策略

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第一二种

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第三种

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第四第五种(了解)

在这里插入图片描述

springboot实现分库分表实战

需求

在这里插入图片描述

数据库

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

application.yml配置

在这里插入图片描述

application-sub.yml配置

在这里插入图片描述
在这里插入图片描述

实体类

在这里插入图片描述
根据实体类可以建数据库

UserMapper

在这里插入图片描述

test类

在这里插入图片描述
注意
在这里插入图片描述
要把id主键返回的时候,可以加上注解@Options语句如下:
@Options(userGeneratedkeys=true,keyColumn="userid",keyProperty="userid")

注意:主键列不用varchar类型,用long类型,主键不要自增长
但是如果这里使用了UUID那么就得用varchar类型。
在这里插入图片描述

事务管理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果是没有跨库,那么直接使用事务注解@Transaction就可以了,但是如果是跨库,往往有远程调用,就出现了分布式场景了,仅有事务注解是无法完成事务回滚的。需要添加依赖,然后代码中加入以下代码:
在这里插入图片描述

总结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
future/task

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值