SpringBoot项目中实现MySQL读写分离

本文介绍了如何在SpringBoot项目中实现MySQL读写分离,通过主从复制解决单库压力和数据安全性问题。详细讲解了MySQL主从库的配置,包括主库和从库的搭建、坑位介绍,以及在项目中利用ShardingJDBC实现读写分离的步骤,包括依赖导入、配置文件设置和测试验证。
摘要由CSDN通过智能技术生成

1、MySQL主从复制

但我们仔细观察我们会发现,当我们的项目都是用的单体数据库时,那么就可能会存在如下问题:

  • 读和写所有压力都由一台数据库承担,压力大
  • 数据库服务器磁盘损坏则数据丢失,单点故障

为了解决上述提到的两个问题,我们可以准备两 (多) 台MySQL,一台主(Master)服务器,一台从(Slave)服务器,主库的数据变更(写、更新、删除这些操作) ,需要同步到从库中 (主从复制) 。而用户在访问我们项目时,如果是写操作(insert、update、delete),则直接操作主库;如果是读操作(select) ,则直接操作从库,这种结构就是读写分离啦。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b1Di4XGO-1657800853974)(https://upload-images.jianshu.io/upload_images/28142708-48c8098f0912bbbb.pngimageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

在这种读写分离的结构中,从库是可以有多个的

1.1、介绍

MySQL主从复制是一个异步的复制过程,底层是基于Mysql数据库自带的二进制日志功能。就是一台或多台MySQL数据库(slave,即从库)从另一台MySQL数据库(master,即主库)进行日志的复制,然后再解析日志并应用到自身,最终实现从库的数据和主库的数据保持一致。MySQL主从复制是 MySQL数据库自带功能,无需借助第三方工具。

二进制日志:

二进制日志(BINLOG)记录了所有的 DDL(数据定义语言)语句和 DML(数据操纵语言)语句,但是不包括数据查询语句。此日志对于灾难时的数据恢复起着极其重要的作用,MySQL的主从复制, 就是通过该binlog实现的。默认MySQL是未开启该日志的。

MySQL复制过程分成三步:

  1. MySQL master 将数据变更写入二进制日志(binary log)
  2. slave将master的binary log拷贝到它的中继日志(relay log
  3. slave重做中继日志中的事件,将数据变更反映它自己的数据

image.png

1.2、主从库搭建

在环境搭建之前,我们需要准备好两台服务器,如果生活富裕使用的是两台云服务器的时候记得要开放安全组,即防火

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值