返回顶部
首页 > 资讯 > 数据库 >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://lsjlt.com/news/397621.html(转载时请注明来源链接)

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

猜你喜欢
  • SpringBoot环境-MySQL主从复制,读写分离的实现
    目录 概述 环境 主从复制 读写分离 概述  记录在MySQL数据库中主从复制以及SpringBoot环境操作MySQL数据库读写分离的实现步骤。  背景 :因为我们在对数据库进行操作时,如果读写操作都由一台数据库承担的话压...
    99+
    2023-09-06
    mysql 数据库 java linux
  • MySQL 主从复制与读写分离
             在实际生产环境中,如果对数据库的读写都在同一块数据库服务器中操作,无论是在安全性、高可用性,还是高并发等各个...
    99+
    2024-04-02
  • MYSQL的主从复制与读写分离
    在实际生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是安全性,高可用性,还是高并发性等各个方面都是不能满足实际需求,因此,一般来说都是通过主从复制的方式来同步诗句,再通过读写分离来提升数...
    99+
    2024-04-02
  • amoeba实现mysql读写分离+主从复制架构
    一、环境系统:centos6.5mysql版本:mysql5.6master服务器:192.168.1.21slave服务器: 192.168.1.100master写 slave读二、实现mysql主从复...
    99+
    2024-04-02
  • 利用Amoeba实现MySQL主从复制和读写分离
    在实际生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是在安全性、高可用性,还是高并发等各个方面都是完全不能满足实际需求的,因此,一般来说都是通过主从复制(Master-Slave)的方式...
    99+
    2024-04-02
  • MySQL中如何实现主从复制与读写分离
    MySQL中如何实现主从复制与读写分离,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1,mysql的配置CentOS 5.x,6.0编译安装N...
    99+
    2024-04-02
  • MySQL中怎么实现主从复制及读写分离
    MySQL中怎么实现主从复制及读写分离?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、相关概述主从复制:主数据库(Master)发送更新事件到从数据库(Slave),从数...
    99+
    2023-06-14
  • MySQL(4)-AB主从复制与读写分离
        本篇博客介绍的是通过 主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力实现mysql高可用性    首先 , 我们先了解AB主...
    99+
    2024-04-02
  • 数据库---mysql主从复制读写分离
    http://m.open-open.com/m/lib/view/1413274853450.html 原理及架构分析部署前准备下载好源码包存放位置要与脚本中对应  mysql-5.5...
    99+
    2024-04-02
  • 详解MySQL主从复制及读写分离
    目录前言一、相关概述二、读写分离三、MySQL主从复制实验部署四、MySQL读写分离实验前言 在企业实际应用中,成熟的业务通常数据量都比较大,而单台MySQL服务器在安全性、高可用性...
    99+
    2024-04-02
  • MySQL主从复制与读写分离的原理
    这篇文章主要为大家分享MySQL主从复制与读写分离的原理。文中还介绍了如何配置和验证主从复制与读写分离的实验,希望大家通过这篇文章能有所收获。MySQL主从复制与读写分离一、前言前面我们已经对MySQL数据...
    99+
    2024-04-02
  • 搭建mysql的主从复制和读写分离
    搭建mysql的主从复制和读写分离   +--------+           &...
    99+
    2024-04-02
  • 怎么在Mysql中实现主从复制与读写分离
    这期内容当中小编将会给大家带来有关怎么在Mysql中实现主从复制与读写分离,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。文章思维导图为什么使用主从复制、读写分离主从复制、读写分离一般是一起使用的。目的很简...
    99+
    2023-06-14
  • MySQL实现主从复制与读写分离的具体步骤
    下面一起来了解下MySQL实现主从复制与读写分离的具体步骤,相信大家看完肯定会受益匪浅,文字在精不在多,希望MySQL实现主从复制与读写分离的具体步骤这篇短内容是你想要的。环境介绍:主云服务器(master...
    99+
    2024-04-02
  • MySQL数据库主从复制与读写分离
    目录一.主从复制主从复制三线程主从复制的过程:主从复制的策略:主从复制高延迟二.读写分离读写分离概念读写分离原因与场景总结一.主从复制        主从复制:在实际的生产中,为了解...
    99+
    2024-04-02
  • Mysql数据库的主从复制与读写分离怎么实现
    这篇文章主要介绍“Mysql数据库的主从复制与读写分离怎么实现”,在日常操作中,相信很多人在Mysql数据库的主从复制与读写分离怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mysql数据库的主从复制...
    99+
    2023-06-21
  • springboot结合mysql主从来实现读写分离的方法
    这篇文章主要介绍springboot结合mysql主从来实现读写分离的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.实现的功能    基于springboot框架,applica...
    99+
    2023-06-14
  • Redis主从实现读写分离
    前言 大家在工作中可能会遇到这样的需求,即Redis读写分离,目的是为了压力分散化。下面我将为大家介绍借助AWS的ELB实现读写分离,以写主读从为例。 实现 引用库文件 <!-- redis客...
    99+
    2022-06-04
    主从 Redis
  • CentOS7上部署Mysql主从复制与读写分离
    在实际生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是在安全性,高可用性,还是高并发等各方面都是完全不能满足实际需求的,因此一般来说都是通过主从复制(Master-Slave)的方式来同...
    99+
    2024-04-02
  • mysql主从复制及读写分离(附安装包)
    实验目的:在实际生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论在安全性、高可用性,还是高并发等各个方面都是完全不能满足实际需求的,因此,一般需要通过主从复制(master-slave)的...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作