Skip to content

Files

Latest commit

 

History

History

SpringBoot-Mysql-Master-Slave

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

SpringBoot 操作Mysql读写分离

思路: 使用AOP对读写的数据源进行切换,配置主数据源和从数据源, aop拦截到方法,判断前缀是查还是增删改,对其进行相应的数据源切换操作。

优点:

  1. 负载均衡:通常情况下,会使用 主服务器 对数据进行 更新、删除 和 新建 等操作,而将 查询 工作落到 从库 头上。
  2. 异地容灾备份: 可以将主服务器上的数据同步到 异地从服务器 上,极大地提高了 数据安全性。
  3. 高可用:数据库的复制功能实现了 主服务器 与 从服务器间 的数据同步,一旦主服务器出了 故障,从服务器立即担当起主服务器的角色,保障系统持续稳定运作。
  4. 高扩展性:主从复制 模式支持 2 种扩展方式:
    scale-up
    向上扩展或者 纵向扩展,主要是提供比现在服务器 性能更好 的服务器,比如 增加 CPU 和 内存 以及 磁盘阵列等,因为有多台服务器,所以可扩展性比单台更大。
    scale-out
    向外扩展或者 横向扩展,是指增加 服务器数量 的扩展,这样主要能分散各个服务器的压力。

缺点:

  1. 成本增加: 搭建主从肯定会增加成本,毕竟一台服务器和两台服务器的成本完全不同,另外由于主从必须要开启 二进制日志,所以也会造成额外的 性能消耗。
  2. 数据延迟: 从库 从 主库 复制数据肯定是会有一定的 数据延迟 的。所以当刚插入就出现查询的情况,可能查询不出来。当然如果是插入者自己查询,那么可以直接从 主库 中查询出来,当然这个也是需要用代码来控制的。
  3. 写入更慢:主从复制 主要是针对 读远大于写 或者对 数据备份实时性 要求较高的系统中。因为 主服务器在写中需要更多操作,而且 只有一台 可以写入的 主库,所以写入的压力并不能被分散。这时可以考虑使用数据库中间件进行分库分表了。

主从复制的前提条件

主从服务器 操作系统版本 和 位数 一致。
主数据库和从数据库的 版本 要一致。
主数据库和从数据库中的 数据 要一致。
主数据库 开启 二进制日志,主数据库和从数据库的 server_id 在局域网内必须 唯一。