浅谈 MySQL 主从复制,优点?原理?

news2024/9/25 11:16:00

目录

1. 主从复制概述

2. 主从复制有什么优点?

3. 主从复制的原理

4. 数据一致性问题

4.1 同步复制

4.2 异步复制

4.3 半同步复制


1. 主从复制概述

既然是主从复制,那么至少就应该有两台服务器,一台作为主库(Master),一台作为从库(Slave)。

主数据库会将自己的DDL(数据定于语言,例如建库建表)与DML(数据操作语言,例如增删改查)操作写成二进制日志文件,发送给从库,从库在接收到二进制日志文件之后,自己在将文件中的命令执行一遍(也叫重做),将数据备份保存到自己的服务器内部,从而使自己的数据与主库的数据保持一致。

同时,主库可以挂载多个从库,向多台数据库服务器发送数据文件;此外,从库也可以作为其他数据库的主库,实现链式复制。 

2. 主从复制有什么优点?

(1)实现读写分离,主库主要用于做增删改操作,从库大量用于查询操作,降低了主库查询数据的访问压力;

(2)当主库出现故障或者宕机无法立刻恢复时,可以迅速切换到从库继续对外提供服务,保证业务不受到影响;

(3)当执行备份数据操作时,因为备份数据库会加全局锁,会进入只读状态,导致增删改操作阻塞。所以可以将备份数据操作交给从库去做,只让一个从库加上全局锁,主库继续对外服务,仍然可以进行增删改查所有操作,避免主库备份数据加锁阻塞对业务产生影响;

3. 主从复制的原理

MySQL 主从复制的核心就是根据二进制日志来完成的,大致可以分为以下三步

(1)当 Master主库执行了增删改或者DDL(数据定义语言)操作之后,主库就会将所有的数据变更写入到二进制日志 binlog 文件中;

(2)然后,当从库想要同步主库的数据时,主库的二进制日志转储线程会将二进制日志文件的内容发送给 slave从库,在读取发送二进制日志文件的过程中,binlog 文件会加锁,读取完毕之后会释放锁。slave 从库中的 IOThread 线程就会读取主库二进制日志文件 binlog 中的内容,读取之后会将文件内的所有内容写入到自己的中继日志文件中;

(3)写入中继日志完毕后,slave 从库中的另一个线程 SQLThread 会读取刚才的中继日志文件中的内容并在自己的服务器中执行一遍,从而保证了从库数据与主库数据的一致性;

4. 数据一致性问题

在MySQL中,主要有三种方法用于处理主库与从库的数据一致性问题

4.1 同步复制

主库将自己做的更新写入 Binlog 日志文件后,会等待数据更新同步复制到从库中,并且已经在从库执行成功,然后才能返回继续处理其它的请求。

同步复制提供了最佳安全性,保证数据安全,数据不会丢失;

缺点是对性能有一定的影响,因为要等待从库的同步响应结果,响应期间无法做其他写入操作;

4.2 异步复制

主库将自己最新作的操作或事务写入到 binlog 二进制日志文件之后,不需要等待数据更新是否已经到达从库,直接就可以继续处理外部的请求,也就是说主库不知道从库何时会接收 binlog 文件并同步数据,自己只负责将操作写入 biblog 文件。

异步复制优点是提高了主库的写入能力,能处理更多的请求;

缺点是如果主库宕机并且主库提交的事务尚未提交至从库,那么新上位的主库就会丢失之前已经提交过的事务。

4.3 半同步复制

半同步复制就是对同步复制与异步复制的一个折中方案,当从库做了数据更新之后,需要等待至少有一台从库已经读取到数据并写入到了自己的中继日志中,只要得到一台从库的响应,就可以结束等待继续处理其他请求;等待从库响应数量在MySQL5.7版本以后可以在配置文件中配置,可以配置至少一台,两台或多台。如果数量较大,也会有一定的性能缺失,如果数量较少,数据同步效果不是很大,实际工作需要折中考虑。

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

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

相关文章

串口调试助手 WIN11 应用商店工具 界面美观 功能丰富

串口调试助手 win11 应用商店自带的工具,我用过最好用的串口调试助手。 功能以及特性 界面简洁美观;高速接收稳定、流畅、不卡顿、不丢数据;支持字符串和十六进制两种显示方式;可以正确显示中文字符;支持多种波特率,同时支持自定义波特率;自动断帧&am…

【Axure视频教程】曲线图

今天教大家在Axure制作可视化曲线图的原型模板,鼠标移入曲线图后,会显示弹窗并回显对应折点的具体数据,该模板是用Axure原生元件制作的,所以使用方便,可以任意修改对应样式或者交互效果。该原型模板的具体效果可以参考…

win10通过命令修改系统只读文件

通过命令cmd:C:\Windows\System32\drivers\etc>notepad hosts

C语言程序设计——题目:判断 101 到 200 之间的素数。

题目&#xff1a;判断 101 到 200 之间的素数。 程序分析&#xff1a;判断素数的方法&#xff1a;用一个数分别去除 2 到 sqrt(这个数)&#xff0c;如果能被整除&#xff0c;则表明此数不是素数&#xff0c;反之是素数。 #include<stdio.h> int main() {int n,i,j,a0;f…

C语言程序设计——题目:要求输出国际象棋棋盘。

题目&#xff1a;要求输出国际象棋棋盘。 程序分析&#xff1a;国际象棋棋盘由64个黑白相间的格子组成&#xff0c;分为8行*8列。用i控制行&#xff0c;j来控制列&#xff0c;根据ij的和的变化来控制输出黑方格&#xff0c;还是白方格。 如果出现乱码情况请参考本博客【C 练习…

2023最新视频号下载工具

经常有朋友问我怎么下载微信视频号的视频&#xff1f;这几天终于被我发现了一个神器&#xff0c;只需要简单将视频转发过去&#xff0c;就能下载保存&#xff0c;我已经替大家试验过了&#xff0c;基本都能下载成功&#xff0c;而且不光是视频号&#xff0c;dou音等一些其他平台…

以编程方式拟合

目录 适用于多项式模型的 MATLAB 函数 带非多项式项的线性模型 多次回归 适用于多项式模型的 MATLAB 函数 有两个 MATLAB 函数可通过多项式对数据建模。 多项式拟合函数 函数 说明 polyfit polyfit(x,y,n) 通过最大限度地减小数据与模型偏差的平方和&#xff08;最小二乘…

可视化图表统计的好处

可视化图表统计是将数据以图形的方式呈现&#xff0c;通过视觉化的方式帮助人们更好地理解和分析数据。下面是一个详细介绍可视化图表统计的好处&#xff1a; 1. 提供清晰的信息传递&#xff1a; - 可视化图表能够将大量的数据和复杂的信息转化为易于理解和消化的形式。 - 图表…

监测难?误差大?北斗突破铁路监测预警难题,24小时全方位守护

受极端气象和复杂地形地质条件的影响&#xff0c;近年来铁路沿线地质灾害易发频发。为防范化解重大安全风险&#xff0c;提高自然灾害防治能力&#xff0c;国务院决策部署制定了《关于加强铁路自然灾害监测预警工作的指导意见》&#xff0c;强调了利用先进技术和手段开展各类自…

定义USB接口,鼠标类和键盘类都可以作为实现类去实现USB接口

目录 程序设计 程序分析 系列文章 ​ 如图所示,我们电脑上都有USB接口,当我们的鼠标和键盘插上去之后才可以使用,拔出来就关闭使用。其实具体是什么USB设备,笔记本并不关心,只要符合USB规格的设备都可以。鼠标和键盘要想能在电脑上使用,那么鼠标和键盘也必须遵守USB规范…

URL endoce 和 decode

URL地址中的一些字符在传输过程中需要被编码&#xff0c;以确保其能够正确地被解析和显示。在URL中&#xff0c;所有非字母数字字符都需要被编码成%后面跟着两个十六进制数的形式。 URL的编码过程被称为"URL编码"或"百分号编码"&#xff0c;常见的编码字符…

Linux音频-基本概念

文章目录 机器声音的采集原理机器声音的播放原理音频相关基本概念计算机采集音频的模型Linux系统音频框架Linux音频框架的三类角色 Linux音频框架参考文章&#xff1a;Linux音频框架 机器声音的采集原理 声音是一种连续的信号&#xff0c;故其是一种模拟量。 录音设备可以捕获…

ubuntu安装配置mantis

目录 前言安装Apache2安装PHP安装数据库mariadbmariadb安装MariaDB重置密码为MantisBT创建数据库和用户 phpmyadmin安装和配置安装phpmyadmin查看安装内容配置phpmyadmin1.phpmyadmin apache配置文件2.为phpmyadmin创建数据库和用户3.修改配置文件config-db.php4.重新运行 管理…

【python海洋专题二十九】读取CTD文件数据并画单点温度剖面图

往期推荐 图片 【python海洋专题一】查看数据nc文件的属性并输出属性到txt文件 【python海洋专题二】读取水深nc文件并水深地形图 【python海洋专题三】图像修饰之画布和坐标轴 【Python海洋专题四】之水深地图图像修饰 【Python海洋专题五】之水深地形图海岸填充 【Pytho…

智能振弦传感器的读取工具——振弦采集仪

智能振弦传感器的读取工具——振弦采集仪 为了解决振弦传感器间接测量物理量时繁琐的问题&#xff0c;我们结合微处理器和振弦传感器信号电路&#xff0c;开发出了智能振弦模块。该模块具有通信、信息存储、温度测量和传感器信号传递等功能&#xff0c;可以嵌入传统振弦传感器…

asp.net急救资源管理信息系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net 急救资源管理信息系统是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c# 语言开发 asp.net急救资源管理信息系统…

微信小程序开发-01-入门

文章目录 一、微信开发者工具介绍基础文件介绍具体文件介绍JSON配置文件的作用wxmlwxssjs 二、宿主环境介绍通信模型运行机制组件视图容器基础内容其他常用组件 API 三、操作流程基本操作流程新建小程序页面 修改项目首页后续 四、协同工作和发布权限管理需求项目成员的组织结构…

Go语言入门心法(十四): Go操作Redis实战

Go语言入门心法(一): 基础语法 Go语言入门心法(二): 结构体 Go语言入门心法(三): 接口 Go语言入门心法(四): 异常体系 Go语言入门心法(五): 函数 Go语言入门心法(六): HTTP面向客户端|服务端编程 Go语言入门心法(七): 并发与通道 Go语言入门心法(八): mysql驱动安装报错o…

成都瀚网科技有限公司抖音小店:创新营销引领电商潮流

在当今数字化时代&#xff0c;抖音作为一款备受欢迎的短视频平台&#xff0c;不仅吸引了大量用户的关注&#xff0c;还为众多电商企业提供了新的销售渠道。成都瀚网科技有限公司抖音小店便是其中之一&#xff0c;凭借其独特的营销策略和优质的产品&#xff0c;成为了抖音电商领…

编写竞赛程序

目录 程序设计 程序分析 系列文章 竞赛规则(Competitive Rules)包括启动(Start)、加速(speedup)、转弯(turn)、犯规(foul)。参与竞赛可能涉及的有汽车(car)、摩托车(motorbike)、自行车(bike)、马(horse)、摩托艇(motorboat)。 程序设计 Competition…