MySQL数据库——主从复制

news2024/11/23 4:29:48

目录

  • 前言
  • 一、读写分离概述
    • 1. 什么是读写分离?
    • 2. 为什么要读写分离呢?
    • 3. 什么时候要读写分离?
    • 4. 主从复制与读写分离
    • 5. mysq支持的复制类型
    • 6. 主从复制的工作过程
    • 7. MySQL主从复制延迟
  • 二、主从复制配置方法


前言

在实际的生产环境中,对数据库的读和写都在同一个数据库服务器中,是不能满足实际需求的。无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的。因此,通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载能力。有点类似于rsync,但是不同的是rsync是对磁盘文件做备份,而mysql主从复制是对数据库中的数据、语句做备份。


一、读写分离概述

1. 什么是读写分离?

  • 读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。
  • 数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。

2. 为什么要读写分离呢?

  • 因为数据库的“写”(写10000条数据可能要3分钟)操作是比较耗时的。
  • 但是数据库的“读”(读10000条数据可能只要5秒钟)。
  • 所以读写分离,解决的是,数据库的写入,影响了查询的效率。

3. 什么时候要读写分离?

  • 数据库不一定要读写分离,如果程序使用数据库较多时,而更新少,查询多的情况下会考虑使用。
  • 利用数据库主从同步,再通过读写分离可以分担数据库压力,提高性能。

4. 主从复制与读写分离

  • 在实际的生产环境中,对数据库的读和写都在同一个数据库服务器中,是不能满足实际需求的。无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的。
  • 因此,通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载能力。
  • 有点类似于rsync,但是不同的是rsync是对磁盘文件做备份,而mysql主从复制是对数据库中的数据、语句做备份。

5. mysq支持的复制类型

  • (1)STATEMENT:基于语句的复制。在服务器上执行sql语句,在从服务器上执行同样的语句,mysql默认采用基于语句的复制,执行效率高。
  • (2)ROW:基于行的复制。把改变的内容复制过去,而不是把命令在从服务器上执行一遍。
  • (3)MIXED:混合类型的复制。默认采用基于语句的复制,一旦发现基于语句无法精确复制时,就会采用基于行的复制。

6. 主从复制的工作过程

  • (1)Master节点将数据的改变记录成二进制日志(bin log),当Master上的数据发生改变时,则将其改变写入二进制日志中。
  • (2)Slave节点会在一定时间间隔内对Master的二进制日志进行探测其是否发生改变,如果发生改变,则开始一个I/O线程请求 Master的二进制事件。
  • (3)同时Master节点为每个I/O线程启动一个dump线程,用于向其发送二进制事件,并保存至Slave节点本地的中继日志(Relay log)中,Slave节点将启动SQL线程从中继日志中读取二进制日志,在本地重放,即解析成 sql 语句逐一执行,使得其数据和 Master节点的保持一致,最后I/O线程和SQL线程将进入睡眠状态,等待下一次被唤醒。

注:

  • 中继日志通常会位于 OS 缓存中,所以中继日志的开销很小。
  • 复制过程有一个很重要的限制,即复制在 Slave上是串行化的,也就是说 Master上的并行更新操作不能在 Slave上并行操作。
    在这里插入图片描述

7. MySQL主从复制延迟

发生MySQL主从复制延迟的几种原因

  1. master服务器高并发,形成大量事务
  2. 网络延迟
  3. 主从硬件设备导致
    cpu主频、内存io、硬盘io
  4. 本来就不是同步复制、而是异步复制

解决办法:

  • 从库优化Mysql参数。比如增大innodb_buffer_pool_size,让更多操作在Mysql内存中完成,减少磁盘操作。
  • 从库使用高性能主机。包括cpu强悍、内存加大。避免使用虚拟云主机,使用物理主机,这样提升了i/o方面性。
  • 从库使用SSD磁盘
  • 网络优化,避免跨机房实现同步

二、主从复制配置方法

  1. 首先做时间同步
rpm -q ntp ntpdate  #首先确定安装这两个工具如果没有安装的话yum安装一下
yum -y install ntp ntpdate
vim /etc/ntp.conf  ##ntp的配置文件

在主服务器配置文件里修改
在这里插入图片描述
在这里插入图片描述
从服务器直接 ntpdate 主机IP 同步主机的即可
需要注意
客户机要等几分钟再与新启动的 ntp 服务器进行时间同步,否则会提示 no server suitable for synchronization found 错误。
在这里插入图片描述
客户端同步时间
在这里插入图片描述
将时间同步命令放入计划任务内每30分钟执行一次同步
systemctl restart crond ##重启crond服务
在这里插入图片描述
主服务器 my.cnf 配置文件
在这里插入图片描述
在这里插入图片描述
重启服务然后登录mysql
在里面输入
在这里插入图片描述

在这里插入图片描述
从服务器配置
在这里插入图片描述

在这里插入图片描述
修改配置文件后重启服务器
然后登录mysql配置同步
在这里插入图片描述
start slave; #启动同步,如有报错执行 reset slave;
在这里插入图片描述

show slave status\G #查看 Slave 状态

在这里插入图片描述

在这里插入图片描述
#一般 Slave_IO_Running: No 的可能性:
1、网络不通
2、my.cnf配置有问题
3、密码、file文件名、pos偏移量不对
4、防火墙没有关闭

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

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

相关文章

c++ GoogleTest编译使用

编译 1.下载zip源码 2.解压,使用cmake生成工程 第一处填解压生成的文件夹 第二处的build路径可以不存在,点击configure会cmake提示创建 弹出界面中要选择自己的vs版本,选择finish。 然后点击generate,然后点击open Project。 生…

使用kubesphere搭建k8s集群

目录 1准备3台虚拟机 2 每台虚拟机更新yum的软件包,时间设置等 3 关闭防火墙 4 添加三台服务器的域名设置 5 设置三台服务器之间免密 6 安装kubesphere必要依赖,每个节点都要装,不然报错:socat not found in system path 7…

校园广播对讲音柱话筒

校园广播对讲话筒 校园广播对讲话筒:增强校园沟通的利器 提起校园广播对讲话筒,你或许会想到它在紧急情况下的应用。然而,这个功能强大的设备在校园内的广泛运用,不仅仅局限于危机解决。它成为了促进校园内部沟通、加强团队协作…

Tensorflow:from tensorflow.keras import layers 报错

执行代码: from tensorflow.keras import layers 报错: keras模块不存在 查,有其他博客表示keras包在tensorflow模块的pyhon包中; 于是: from tensorflow.python.keras import layers 在类似的如此调用keras的其…

chatgpt赋能python:Python能自动化办公吗?

Python能自动化办公吗? 在当今信息时代,办公工作中我们不可避免地要使用电脑,进行各种办公处理,比如文字处理、数据处理、图表制作等。这些操作看起来简单,但从事这些工作的人员都知道,日积月累之后&#…

【MySQL】不就是MySQL——多表查询综合练习

前言 嗨咯大家好!我们学习完毕了多表查询,今天我们就要对我们所学的成果进行测验,本期主要是对多表查询相关内容的练习课程。可以先试着自己敲,遇到不会可以查看查考代码。 目录 前言 目录 练习题 1.查询员工的姓名、年龄、职位…

HDFS常见的Shell操作

HDFS常见的Shell操作 文章目录 HDFS常见的Shell操作写在前面基本语法HDFS命令大全常用命令实操准备工作上传文件下载文件HDFS直接操作 写在前面 Hadoop版本:Hadoop-3.xLinux版本:CentOS7.5 HDFS的Shell操作是入门Hadoop开发的学习重点 基本语法 Shell客…

分布式批处理:MapReduce初探

大家好,我是方圆。《数据密集型应用系统设计》第十章中有介绍到 MapReduce 相关的内容,当时觉得看得意犹未尽,所以便找了一些资料又看了一下。随着深入发现能扩展的东西实在太多,考虑时间有限,准备先把 MapReduce 基础…

基于smardaten无代码快速开发智慧城管系统

0️⃣需求背景 现代城市管理的面临着一系列问题:如执法人员不足、信息化手段应用少和时间处理不及时等,开发一个智慧城管回访系统的需求与日俱增… 通过引入智慧城管回访系统,可以提高城市管理的科学性、智能化和透明度,为城市发…

【软考网络管理员】2023年软考网管初级常见知识考点(14)- linux命令及目录相关详解

涉及知识点 Linux 目录结构, Linux 常用命令, Linux 下的文件基本属性, Linux 的启动与关闭 软考网络管理员常考知识点,软考网络管理员网络安全,网络管理员考点汇总。 原创于:CSDN博主-《拄杖盲学轻声码》…

HTML5 游戏开发实战 | 推箱子

经典的推箱子是一个来自日本的古老游戏,目的是在训练玩家的逻辑思考能力。在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙地利用有限的空间和通道,合理…

java9新特性之-String存储结构变更--集合工厂方法-- InputStream 加强--增强的 Stream API讲解

String存储结构变更 Motivation The current implementation of the String class stores characters in a char array, using two bytes (sixteen bits) for each character. Data gathered from many different applications indicates that strings are a major component o…

Ubuntu22.04编译安装FFmpeg

FFmpeg介绍 概述 FFmpeg是一款用C语言编写的跨平台免费开源多媒体处理工具,该软件可实现音视频的采集、编解码、转码、过滤以及流媒体相关操作等功能。 同时,FFmpeg也为其他多种语言和操作系统提供了开发组件,包括Java、Python、C等和Wind…

【吴恩达deeplearning.ai】基于LangChain开发大语言应用模型(下)

以下内容均整理来自deeplearning.ai的同名课程 Location 课程访问地址 DLAI - Learning Platform Beta (deeplearning.ai) LangChain for LLM Application Development 基于LangChain开发大语言应用模型(上) 一、LangChain: Q&A over Documents基于文…

SpringMVC原理分析 | Controller配置、RestFul风格

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! Controller配置 控制器Controller 控制器复杂提供访问应用程序的行为,通常通过接口定义或注释定义的两种方法实现控制器负责解析用户的请求并将其转换为一…

ModaHub AI模型开源社区——Milvus向量数据库存储相关概念

目录 存储相关概念 分区和数据段 数据段(segment) 分区(partition) 集合、分区和数据段的关系 元数据 常见问题 存储相关概念 分区和数据段 建立集合时,Milvus 根据参数 index_file_size 控制数据段的大小。另…

R+VIC 模型融合实践技术应用及未来气候变化模型预测

目前,无论是工程实践或是科学研究中都存在很多著名的水文模型如SWAT/HSPF/HEC-HMS等。虽然,这些软件有各自的优点;但是,由于适用的尺度主要的是中小流域,所以在预测气候变化对水文过程影响等方面都有所不足。 VIC模型…

“未来之光:揭秘创新科技下的挂灯魅力“

写在前面: 高度信息化当下时代,对电脑及数字设备的需求与日俱增无处不在,随之而来的视觉疲劳和眼睛问题也攀升到了前所未有的高度。传统台灯对于长时间使用电脑的人群来说是完全无法解决这些问题的。一款ScreenBar Halo 屏幕挂灯,…

【Java】Java核心要点总结 71:ThreadPoolExecutor

文章目录 1)为什么需要线程池?2)线程池内部怎么保证线程安全?3)创建线程的方式 newSingleThreadExecutor底层4) ThreadPoolExecutor参数使用5) 线程池的工作机制6)拒绝策略分四种7)队列有哪些? 参考: 1)为什么需要线程池? 重复利…

设计模式之备忘录模式笔记

设计模式之备忘录模式笔记 说明Memento(备忘录)目录白箱备忘录模式备忘录模式示例类图游戏角色类备忘录角色类备忘录对象管理对象测试类 黑箱备忘录模式备忘录模式示例类图备忘录接口游戏角色类备忘录对象管理对象测试类 说明 记录下学习设计模式-备忘录模式的写法。JDK使用版…