Mysql主从分离

一、前言

        某个应用场景中,在操作数据库这部分,往往是数据库的读取往往大于数据库的写入,当读取数据达到数据库的瓶颈时,性能下滑,影响数据的写入,导致整个应用的不可用。为了解决这个问题,这时,引入了 读写分离的数据库架构,多个从库分摊了读数据的压力。

二、什么是读写分离 

        读写分离其实就是将数据库分为主从库,主库负责写入数据,从库负责读取数据,主库与从库通过 mysql 的 Slave机制进行主从复制。主数据库只有一个,从数据库有多个,这是一种常见的数据库架构。

三、读写分离的结构图

        

         上图,客户端访问服务器,服务器通过 数据库中间件 或者其他的逻辑,使得[写入、修改、删除] 操作 主库 , 而查询读取从库。

        主库生产 binary log 的二进制日志文件,通过 slave 机制,通过连接主库,读取 binarylog 生成 中级文件,从数据同步 中级文件,写入从数据库,从而实现了 主从数据的同步。

四、前提条件

         1、搭建读写分离数据库结构前,读库 slave 需要跟写库 master 的数据一致。

         2、写数据必须操作主库

        3、读去数据不一定是从库,因为从库同步主库的数据,会有一定的延迟,在延迟内,主从数据可能不一致,因此,在某些特殊的情况下,需要读取主库来保证数据的即使型。

        读写分离降低主数据库的读压力,但是并不代表主库就不允许读数据了。在一些特殊场景允许读取主数据库的数据。

五、环境准备

         为了实验,我这里准备了3台机器,一台  window , 2台 centos 7 的虚拟机。

避免一些不必要问题,推荐主从mysql 版本一致。

主机角色系统mysql版本
192.168.83.1win115.7.26注意开放3306端口
192.168.23.148centos78.0.34

主数据库:

 从数据库:

 

 六、配置主数据库

        我们配置主数据库时,只需要生成 binary log 的二进制日志文件  和创建一个拥有访问权限的 mysql 用户 即可,其他的操作不会影响到从数据库的配置。

        1、看看一下主数据库的状态

        查看 主库的状态。

show master status;

 输出结果: 

        从上图可以看出, 暂时没有主从的设置。 

        2、配置文件的设置

        找到 win 11 下面的 mysql 配置文件  my.ini 。在 配置文件的 [mysqld] 下面增加配置,如下:

#  这里填1 ,可以任意填写,但是不允许数据库之间同
server-id=1
# 只备份的数据库
binlog-do-db=demo_slave
# binlog_ignore_db 表述忽略备份的数据库
binlog_ignore_db=mysqld
# binary log 二进制日志文件的格式,有三种(statement , row , mixed),可以根据场景选用,mysql默认采用statement,建议使用mixed
binlog_format=mixed
# 二进制文件记录
log-bin=master-bin
# 生成二进制文件的名称格式
log-bin-index=master-bin.index

        把上面的配置复制到 mysql 的配置文件,然后重启 mysql 服务,在使用 show master status; 查看主库的配置情况。

主从配置还有很多配置,请自行配置百度。

 重启之后,你会发现在 mysql 存放数据库的文件里面出现了 对应的 binary log 文件。

 登录 MySQL, 查看状态:

 如果出现上诉结果,则主库的配置部分已完成。

3、创建主从访问的用户

        1、查看一下用户

        2、创建复制用户 [repl]

-- 创建用户
create user repl;

         3、给[repl]用户权限

# 给 repl 用户授权,并设置密码为  replpwd
# 允许 % 所有服务器访问
grant replication slave on *.* to 'repl'@'%' identified by'replpwd';

输出结果:

 七、配置从数据库

 1、查看从数据库的slave状态

# 查看 slave 的状态
show slave status \G;

 2、查看从数据库的配置

 

 3、配置文件的设置

 在配置文件 【mysqld】 下面增加配置如下:

#  这里填2 ,可以任意填写,但是不允许数据库之间同
server-id=2
# 中继日志文件的命名格式
relay-log-index=slave-relay-bin.index
# 中继日志文件的汇总文件
relay-log=slave-relay-bin# 只复制数据库 , 多个数据库写多条
#只复制db1和db2数据库
; replicate-do-db=db1
; replicate-do-db=db2
replicate-do-db=demo_slave# 忽略复制数据库 , 多个数据库写多条
replicate-ignore-db=mysql

 配置完成后,重启 mysql 服务,然后查看

         配置完成后, mysql 的数据 目录下 自动生产了  4个数据文件。

4、链接主数据库

-- 连接数据库
CHANGE MASTER TOMASTER_HOST='192.168.83.1',MASTER_USER='repl',MASTER_PASSWORD='replpwd',MASTER_PORT=3306,MASTER_LOG_FILE='master-bin.000001',MASTER_LOG_POS=154;-- MASTER_HOST 主数据库的IP
-- MASTER_USER 主数据库的用户
-- MASTER_PASSWORD 主数据库的用户密码
-- MASTER_PORT  主数据库的端口,必须查看主数据库服务器是否有开放端口
-- MASTER_LOG_FILE   主数据库的  binarylog 二进制日志文件
-- MASTER_LOG_POS    主数据库的  binarylog 二进制日志 的偏移量(主数据库是多少则填多少)

 启动 slave

start slave

如果报错:

ERROR 1872 (HY000): Replica failed to initialize applier metadata structure from the repository

         因为从数据库可能以前配置过,生成过 中继日志文件,导致 从数据库 slave 中还记录着旧数据,这时可以使用 命令

reset slave

重新设置即可。

 查看状态:

查看数据库: 

 

 5、检查从数据库是否运作正常

 在主数据库创建 demo_master 数据库,看看 从数据库是否同步过来。

 有上图可知,没有同步上来。

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/35602.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单片机直驱两相四线步进电机研究

【本文发布于https://blog.csdn.net/Stack_/article/details/132236329,未经允许不得转载,转载须注明出处】 双极性步进电机(两相四线步进电机),原理的东西就先不讲太多了,还没搞清楚,边查资料边…

jsoup解析html之table表格

jsoup解析html之table表格 jsoup说明 一款Java 的HTML解析器 jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。 主要功能 从一…

Python Opencv实践 - 图像旋转

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR)#图像旋转 #Opencv中的旋转,首先通过cv.getRotationMatrix2D获得旋转矩阵 #cv.getRotationMatrix2D(center,ang…

Mr. Cappuccino的第62杯咖啡——Spring之Bean的生命周期

Spring之Bean的生命周期 Aware接口项目结构项目代码运行结果源代码使用场景 InitializingBean接口项目结构项目代码运行结果源代码 BeanFactoryPostProcessor接口项目结构项目代码运行结果源代码 Bean的生命周期项目结构项目代码运行结果源代码 Aware接口 实现Aware接口是为了…

机器视觉项目流程和学习方法

机器视觉项目流程: 00001. 需求分析和方案建立 00002. 算法流程规划和业务逻辑设计 00003. 模块化编程和集成化实现 00004. 调试和优化,交付客户及文档 学习机器视觉的方法: 00001. 实战学习,结合项目经验教训 00002. 学习…

NAS搭建指南二——影视资源中心

1. 刮削 这一部分是利用 tinyMediaManager 进行影视资源的评分、简介以及图片的搜集工作tinyMediaManager 官方网站地址下载及安装过程:略我的主要修改的设置项如下所示: 使用方法: a. 点击更新媒体库 b. 选择影片–>右键单击–>…

时序预测 | MATLAB实现基于BiLSTM双向长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)

时序预测 | MATLAB实现基于BiLSTM双向长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价) 目录 时序预测 | MATLAB实现基于BiLSTM双向长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)预测结果基本介绍程序设计参考资料 预测结果 基本介绍 Matlab实现BiLST…

年之年的选择,组装版

组件&#xff1a;<!--* Author: liuyu liuyuxizhengtech.com* Date: 2023-02-01 16:57:27* LastEditors: wangping wangpingxizhengtech.com* LastEditTime: 2023-06-30 17:25:14* Description: 时间选择年 - 年 --> <template><div class"year-range-pick…

04.利用Redis国逻辑过期实现缓存功能---解决缓存击穿

学习目标&#xff1a; 提示&#xff1a;学习如何利用Redis逻辑过期实现添加缓存功能解决缓存击穿 学习产出&#xff1a; 缓存击穿讲解图&#xff1a; 解决方案&#xff1a; 采用互斥锁采用逻辑过期 1. 准备pom环境 <dependency><groupId>org.springframework…

⑤ Axios网络请求

Axios安装 cnpm install --save axios post请求需要用到的&#xff1a; cnpm install --save querystring(用来转换格式的) 引入 一般是全局引入&#xff0c;在main.js中引入 全局引入后的get和post方式使用 get请求方式 post请求方式 先引入&#xff1a; axios封装…

STM32 定时器自动重装载寄存器ARR带来的影响,ARPE0和1区别

ARR是啥 自动重载寄存器是预装载的。对自动重载寄存器执行写入或读取操作时会访问预装载寄存器。预装载寄存器的内容既可以直接传送到影子寄存器&#xff0c;也可以在每次发生更新事件 (UEV) 时传送到影子寄存器&#xff0c;这取决于 TIMx_CR1 寄存器中的自动重载预装载使能位 …

1.作用域

1.1局部作用域 局部作用域分为函数作用域和块作用域。 1.函数作用域: 在函数内部声明的变量只能在函数内部被访问&#xff0c;外部无法直接访问。 总结&#xff1a; (1)函数内部声明的变量&#xff0c;在函数外部无法被访问 (2)函数的参数也是函数内部的局部变量 (3)不同函数…

Redis——三个特殊的数据类型+事务

概述 全称为远程字典服务。 Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)_连接docker中的redis_北岭山脚鼠鼠的博客-CSDN博客 Redis能干什么&#xff1f; 1.内存存储、持久化&#xff0c;内存中是断电即失&#xff0c;因此持久化很重要&#xff…

【LVS-NAT配置】

配置 node1&#xff1a;128&#xff08;客户端&#xff09; node2&#xff1a;135&#xff08;调度器&#xff09; RS&#xff1a; node3&#xff1a;130 node4&#xff1a;132 node2添加网络适配器&#xff08;仅主机模式&#xff09; [rootnode2 ~]# nmtui[rootnode2 ~]#…

ETLCloud+MaxCompute实现云数据仓库的高效实时同步

MaxCompute介绍 MaxCompute是适用于数据分析场景的企业级SaaS&#xff08;Software as a Service&#xff09;模式云数据仓库&#xff0c;以Serverless架构提供快速、全托管的在线数据仓库服务&#xff0c;消除了传统数据平台在资源扩展性和弹性方面的限制&#xff0c;最小化用…

欧拉公式之证明

首先&#xff0c;我们考虑复数函数的泰勒级数展开式。对于任意一个复数函数f(z)&#xff0c;我们可以将其在za处进行泰勒级数展开&#xff1a; f(z) f(a) f(a)(z-a) f(a)(z-a)^2/2! f(a)(z-a)^3/3! ... 其中f(a)表示f(z)在za处的导数&#xff0c;f(a)表示f(z)在…

[PaddlePaddle] [学习笔记] [上] 计算机视觉(卷积、卷积核、卷积计算、padding计算、BN、缩放、平移、Dropout)

1. 计算机视觉的发展历程 计算机视觉作为一门让机器学会如何去“看”的学科&#xff0c;具体的说&#xff0c;就是让机器去识别摄像机拍摄的图片或视频中的物体&#xff0c;检测出物体所在的位置&#xff0c;并对目标物体进行跟踪&#xff0c;从而理解并描述出图片或视频里的场…

TypeScript 语法

环境搭建 以javascript为基础构建的语言&#xff0c;一个js的超集&#xff0c;可以在任何支持js的平台中执行&#xff0c;ts扩展了js并且添加了类型&#xff0c;但是ts不能被js解析器直接执行&#xff0c;需要编译器编译为js文件&#xff0c;然后引入到 html 页面使用。 ts增…

04 mysql innodb record

前言 最近看到了 何登成 大佬的 "深入MySQL源码 -- Step By Step" 的 pdf 呵呵 似乎是找到了一些 方向 之前对于 mysql 方面的东西, 更多的仅仅是简单的使用[业务中的各种增删改查], 以及一些面试题的背诵 这里会参照 MySQL Internals Manual 来大致的看一下 i…

通过matlab对比music,mvdr以及tdoa三种定位算法的性能

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 MUSIC&#xff08;Multiple Signal Classification&#xff09; 4.2 MVDR&#xff08;Minimum Variance Distortionless Response&#xff09; 4.3 TDOA&#xff08;Time Difference o…