iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >SpringBoot环境-MySQL主从复制,读写分离的实现
  • 948
分享到

SpringBoot环境-MySQL主从复制,读写分离的实现

mysql数据库javalinux 2023-09-06 22:09:58 948人浏览 八月长安
摘要

目录 概述 环境 主从复制 读写分离 概述  记录在MySQL数据库中主从复制以及SpringBoot环境操作MySQL数据库读写分离的实现步骤。  背景 :因为我们在对数据库进行操作时,如果读写操作都由一台数据库承担的话压

目录

概述

环境

主从复制

读写分离


概述

 记录在MySQL数据库中主从复制以及SpringBoot环境操作MySQL数据库读写分离的实现步骤。

 背景 :因为我们在对数据库进行操作时,如果读写操作都由一台数据库承担的话压力会比较大,为了减轻数据库压力,我们可以使用多个数据库一起工作,进行读写的分离操作。

操作 : 利用两台linux主机分别安装Mysql数据库进行模拟测试,一个数据库处理"读"(select)操作,另一个处理"写"(save,update,delete)操作,创建SpringBoot项目利用mybatisPlus框架对数据库进行简易测试,对读写分离进行测试。

 前提 虚拟机创建两台linux主机模拟两台不同服务器,两个主机分别安装mysql数据库模拟主库和从库,以及创建一个简单的springBoot项目来对读写分离进行测试。

环境

检查IP地址以及mysql的安装。

主机一:192.168.1.233 简称主机233(作为主库)

 主机二:192.168.1.234 简称主机234(作为从库)

主从复制

主从复制原理简介: Mysql主从复制是一个异步复制的过程,底层是基于MySQL数据库自带的二进制日志功能。就是一台或多台MySQL数据库(从库)从另一台MySQL数据库(主库)进行日志的复制再解析日志并应用到自身数据库,最终实现主库和从库可以保持一致。

复制过程

当"主库"的数据发生改变时,会记录到自己的二进制日志中,"从库"会存在一个io线程,读取"主库"中的二进制日志文件,获取到并写入"从库"二进制文件中,接着另一个SQL线程会执行从"主库"获取来的日志,进行执行相同的操作,使两库的数据始终保持一致。

 主从复制搭建步骤

 主库操作(主机233)

一、在数据库配置文件中启用二进制日志

在linux中输入命令,修改配置文件,将如下配置加进去后保存退出。 

vim /etc/my.cnf
# 开启二进制日志log-bin=mysql-bin# 设置二进制唯一IDserver-id=233

 二、重启MySQL服务

systemctl restart mysql

 三,添加权限用户,使得从库具有复制主库日志权限 

因为在此使用的MySQL8.0,所以需要先添加用户再赋予权限。 

# 创建用户xiaoming 密码12346CREATE USER 'xiaoming'@'%' IDENTIFIED BY '123456';# 给用户xiaoming赋予权限GRANT ALL PRIVILEGES ON *.* TO 'xiaoming'@'%'WITH GRANT OPTION; # 刷新权限flush privileges;# 展示master主库的状态show master status;

为了保持如上图的File和Position值不变并记下值, 不要再操作此库

  从库操作 (主机234)

一、修改另一台MySQL数据库的配置文件。

vim /etc/my.cnf
# 设置二进制唯一IDserver-id=233

 二、重启MySQL服务

systemctl restart mysql

 三、登录上mysql,利用主库信息连接主库

# 停止从库stop slave;# 输入主库的IP地址和用户名密码,以及刚才获取到的主库状态File和Position值change master to master_host='192.168.1.233',master_user='xiaoming',master_passWord='123456',master_log_file='mysql-bin.000001',master_log_pos=1324;# 开启从库start slave;# 展示从库状态show slave status\G; #\G格式化输出

 

 如上红框内均为Yes既为成功。

 主从复制测试 

我们会在windows平台上使用navicat分别连接linux上的两台数据库进行测试.

(测试记得关掉防火墙,否则navicat会连接不上)

关闭防火墙命令:systemctl stop firewalld

给主库添加一个数据库,观察从库是否会自动创建一个。 

 

 给数据库mydb创建student表并插入一些数据,用于读写分离测试。(给主库创建后,从库数据会与主库跟随自动同步)

CREATE TABLE student(name VARCHAR(255),age INT);INSERT INTO student VALUES('tom',18);

读写分离

 在设置好数据库的主从复制后,就可以来进行读写分离的编写了。

我们使用框架:Sharding-JDBC进行读写分离的操作。

我们使用SpringBoot项目仅需要导入它的坐标并书写数据库连接配置即可。

 用于SpringBooot测试项目结构预览 

 

这是一个最简单的SpringBoot项目结构,提供一个实体类Student与数据库中的student表一致,利用MyBatisPlus框架搭建数据层dao,业务层service以及表现层controller进行测试即可。

读写分离步骤(使用框架Sharding-JDBC)

一、导入Sharding-JDBC坐标

    org.apache.shardingsphere    sharding-jdbc-spring-boot-starter    4.1.1

二、在配置文件中编写读写分离规则(连接信息)

yml文件中配置,设置两台数据库的IP地址和使用的库

spring:  shardingsphere:    datasource:      names:        master, slave      # 主数据源      master:        type: com.alibaba.druid.pool.DruidDataSource        driver-class-name: com.mysql.cj.jdbc.Driver        url: jdbc:mysql://192.168.1.233:3306/mydb?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true        username: root        password: root      # 从数据源      slave:        type: com.alibaba.druid.pool.DruidDataSource        driver-class-name: com.mysql.cj.jdbc.Driver        url: jdbc:mysql://192.168.1.234:3306/mydb?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true        username: root        password: root    masterslave:      # 读写分离配置 //轮寻      load-balance-alGorithm-type: round_robin      # 最终的数据源名称      name: dataSource      # 主库数据源名称      master-data-source-name: master      # 从库数据源名称列表,多个逗号分隔      slave-data-source-names: slave    props:      sql:        show: true #开启SQL显示,默认false  main:    allow-bean-definition-overriding: true

ps:引入后要是master和slave层级下爆红可以忽略,不影响运行。

=== 测试===

表现层提供两个接口,一个get接口新增数据模拟"写操作" (主库处理),另一个post接口获取数据模拟"读操作"(从库处理)。

 使用postman发送get请求访问接口,接口中是新增数据操作,属于写操作,则应该由主库master进行处理,我们请求后观察控制台。

  使用postman发送post请求访问接口,接口中是获取数据操作,属于读操作,则应该由从库slave进行处理,我们请求后观察控制台。

来源地址:https://blog.csdn.net/m0_60155232/article/details/129011170

您可能感兴趣的文档:

--结束END--

本文标题: SpringBoot环境-MySQL主从复制,读写分离的实现

本文链接: https://www.lsjlt.com/news/397621.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot环境-MySQL主从复制,读写分离的实现
    目录 概述 环境 主从复制 读写分离 概述  记录在MySQL数据库中主从复制以及SpringBoot环境操作MySQL数据库读写分离的实现步骤。  背景 :因为我们在对数据库进行操作时,如果读写操作都由一台数据库承担的话压...
    99+
    2023-09-06
    mysql 数据库 java linux
  • MYSQL的主从复制与读写分离
    在实际生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是安全性,高可用性,还是高并发性等各个方面都是不能满足实际需求,因此,一般来说都是通过主从复制的方式来同步诗句,再通过读写分离来提升数...
    99+
    2024-04-02
  • MySQL中怎么实现主从复制及读写分离
    MySQL中怎么实现主从复制及读写分离?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、相关概述主从复制:主数据库(Master)发送更新事件到从数据库(Slave),从数...
    99+
    2023-06-14
  • MySQL中如何实现主从复制与读写分离
    MySQL中如何实现主从复制与读写分离,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1,mysql的配置CentOS 5.x,6.0编译安装N...
    99+
    2024-04-02
  • 详解MySQL主从复制及读写分离
    目录前言一、相关概述二、读写分离三、MySQL主从复制实验部署四、MySQL读写分离实验前言 在企业实际应用中,成熟的业务通常数据量都比较大,而单台MySQL服务器在安全性、高可用性...
    99+
    2024-04-02
  • 怎么在Mysql中实现主从复制与读写分离
    这期内容当中小编将会给大家带来有关怎么在Mysql中实现主从复制与读写分离,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。文章思维导图为什么使用主从复制、读写分离主从复制、读写分离一般是一起使用的。目的很简...
    99+
    2023-06-14
  • MySQL数据库主从复制与读写分离
    目录一.主从复制主从复制三线程主从复制的过程:主从复制的策略:主从复制高延迟二.读写分离读写分离概念读写分离原因与场景总结一.主从复制        主从复制:在实际的生产中,为了解...
    99+
    2024-04-02
  • Mysql数据库的主从复制与读写分离怎么实现
    这篇文章主要介绍“Mysql数据库的主从复制与读写分离怎么实现”,在日常操作中,相信很多人在Mysql数据库的主从复制与读写分离怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mysql数据库的主从复制...
    99+
    2023-06-21
  • springboot结合mysql主从来实现读写分离的方法
    这篇文章主要介绍springboot结合mysql主从来实现读写分离的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.实现的功能    基于springboot框架,applica...
    99+
    2023-06-14
  • Mysql主从复制与读写分离图文详解
    文章思维导图 为什么使用主从复制、读写分离 主从复制、读写分离一般是一起使用的。目的很简单,就是为了提高数据库的并发性能。 你想,假设是单机,读写都在一台MySQL上面完成,性...
    99+
    2024-04-02
  • Django搭建MySQL主从实现读写分离
    目录一、MySQL主从搭建操作步骤二、Django实现读写分离自动指定一、MySQL主从搭建 主从配置原理: 主库写日志到 BinLog 从库开个 IO 线程读取...
    99+
    2024-04-02
  • mysql主从配置实现一主一从读写分离
    主从介绍Mysql主从又叫Replication、AB复制。简单讲就是A与B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,实现数据实时同步 mysql主从是基于binlog,主上需开启binlo...
    99+
    2024-04-02
  • mysql主从及读写分离
     主从同步1 主配置把237配置为主数据库服务器  授权用户从42数据库服务器连接自己的时候有拷贝数据的权限grant   replication &nbs...
    99+
    2024-04-02
  • mysql 中的备份恢复,分区分表,主从复制,读写分离
    目录mysql 的备份和恢复mysql 的分区分表mysql 的主从复制读写分离mysql 的备份和恢复 创建备份管理员创建备份管理员,并授予管理员相应的权限备份所需权限:selec...
    99+
    2024-04-02
  • mysql主从复制读写分离的配置方法详解
    一、说明 前面我们说了mysql的安装配置,mysql语句使用以及备份恢复mysql数据;本次要介绍的是mysql的主从复制,读写分离;及高可用MHA; 环境如下: master:CentOS7_x64...
    99+
    2024-04-02
  • springboot结合mysql主从来实现读写分离的方法示例
    1.实现的功能     基于springboot框架,application.yml配置多个数据源,使用AOP以及AbstractRootingDat...
    99+
    2024-04-02
  • Mycat中间件实现Mysql主从读写分离
    环境规划: IP地址 主机名 角色 备注 10.4.132.50 k8s01 mycat,master 10.4.132.42 k8s02 slave ...
    99+
    2024-04-02
  • RocketMQ设计之主从复制和读写分离
    目录一、主从复制二、读写分离一、主从复制 RocketMQ为了提高消费的高可用性,避免Broker发生单点故障引起Broker上的消息无法及时消费,同时避免单个机器上硬盘坏损出现消费...
    99+
    2024-04-02
  • 一篇文章看懂MySQL主从复制与读写分离
    目录引言一、MySQL主从复制1、MySQL的复制类型2、MySQL主从复制的原理3、MySQL主从复制延迟二、MySQL读写分离1、常见的 MySQL 读写分离分2、MySQL 读...
    99+
    2024-04-02
  • MyCat怎么实现MySQL一主两从读写分离
    这篇文章主要介绍“MyCat怎么实现MySQL一主两从读写分离”,在日常操作中,相信很多人在MyCat怎么实现MySQL一主两从读写分离问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作