Mysql的主从复制(重要)和读写分离(理论重要实验不重要)

news2024/12/23 6:47:04

一、主从复制:架构一般是一主两从。

1.主从复制的模式:

mysql默认模式为异步模式:主库在更新完事务之后会立即把结果返回给从服务器,并不关心从库是否接收到以及从库是否处理成功。缺点:网络问题没有同步、防火墙的等因素导致同步失败。优点:快,效率高。

全同步模式:主库在更新完事务之后,立即把结果返回到从库,所有的从库执行完毕之后才能继续下一个同步。优点:安全。缺点:性能受到影响。

半同步模式:介乎于异步和全同步之间,主库更新完事务之后,也是同步到从库,同步完成之后有一个等待时间,等待时间是tcp/ip的往返时间,一般为5毫秒左右。即在一定程度上保证了效率,也在一定程度上保证了数据的完整性。

2.主从复制的特点:只能主复制到从,从不可以复制到主。都是主的情况下,可以相互复制。

3.主从复制的延迟问题及解决方案:

网络延迟
主从硬件设备(CPU主频、内存的读写性能IO、硬件IO)
同步复制而不是异步复制

解决方案:

硬件方面:主库一般来说不需要动的太多,从库的硬件配置要更好。提升随机写的性能。硬盘可以考虑缓存固态的、升级CPU的核数、扩展一下内存。尽量使用物理机(不要用云服务器)
网络层面:主从服务器都配置在一个局域网内,尽量避免跨网段和跨机房
架构方面:做读写分离,把写入控制在主,从库负责读,减轻从库的压力
配置MySQL方面:从配置文件的角度实现性能最大化

4.MySQL安全和性能配置:
追求安全性配置:数据库的存储引擎为innodb

双一配置:innodb_flush_log_at_trx_commit=1

每次事务提交时都会刷新事务日志。以确保持久性,最高级别的数据安全性,但是会影响性能,默认就是1

0就是事务提交时不会立刻刷新,而是每秒刷新一次,可以提高性能,但是发生故障会导致数据丢失。

2表示事务提交时,事务日志不会写入硬盘而是保存在系统缓存,同时也不会进行刷新。有一定的安全性和性能。但是对内存要求比较高。生成中一般都是默认1.

双一配置:sync binlog=1

#1也是默认值,每次提交事务之后,直接把二进制日志刷新到磁盘,以确保日志的持久性,占用性能比较高,但是安全性高

0表示二进制日志写入到缓存,也不会刷新日志,故障发生也会丢失数据,对内存的要求也提高了

自定义数字N:表示每N个事务才执行一次刷新到磁盘。提高性能,但是一旦崩溃数据也会大量丢失,一般设置为10。

5.追求性能化配置:

sync binlog=10:笔试题重点

innodb_flush_log_at_trx_commit=1

logs-slave-updates=0

#从库的更新不会写入二进制日志(不建议)

innodb buffer_pool_size 300M 500G

#控制innodb存储引擎缓冲池的大小,设置的数值越高,可以提高他的innodb的性能,更多的数据和索引都可以缓存在内存中。减少磁盘的访问次数。对系统内存要求比较高。

6.主从复制如何实现:基于mysql的二进制日志,根据主库的二进制文件的标志为,实现主和从的同步;主从服务器之间,服务器的时间要同步。

主从复制的实验:

主:192.168.127.10

从1:192.168.127.80

从2:192.168.127.90

1.关闭主、从服务器的防火墙及安全机制

2.给主、从安装ntp

3.查看主从服务器时间是否同步:

如果时间不同步的情况下命令行输入:ntpdate ntp.sliyun.com使主从时间一致。

4. 配置主服务器:vim /etc/my.cnf

 

5. 配置完主服务器的文件后重启主的数据库,并进入数据库

6. 创建从服务器的用户名并设置密码,给予从服务器连接主服务器的权限,最后查看主服务器的同步位置点(status),master-bin.000001为二进制同步文件,857为同步位置点。

6.配置两台从服务器vim /etc/my.cnf,从1的配置和从2的配置文件不同的地方就是server-id从1为2,从2为3。

从1服务器

 

从2服务器 

7. 重启两台从服务器的数据库,并进入数据库

8.进入到两台从服务器的数据库内,配置同步

9.实现

二、读写分离:主从架构基础上,主库负责写,从库只负责读。

1.读写分离的方式:靠代码完成,性能好,不需要额外的硬件设备。

                                中间层代理服务器,基于客户端和主从架构之间有一个代理服务器,代理服务器收到客户端的请求之后通过客户端的sql语句进行判断,读转到从,写转到主。

2.读写分离最常见的客户端代理软件,java代码开发的一个软件:Amoeba

三.读写实验:用Amoeba来实现读写分离

1.关闭防火墙及安全机制

2.代理服务器安装amoebe及jdk环境

 vim /etc/profile

三台Mysql设置权限,允许Amoeba的访问

主服务器

回到代理服务器:修改vim amoeba.xml及vim dbServers.xml的配置文件,修改前先备份

 

30行、31行、115行、117和120取消注释

 23行、26行以下几行、46行以下几行、66行以下几行

 启动代理服务器 &后台运行

查看java启动没有 

客户端服务器:

 安装好了之后重启客户端,查看端口是否启动

回到数据库:三个都需要更改

回到客户端连接代理服务器

 创建数据库xy105

 回到客户端连接代理服务器,并且创建表及插入数据


 

四、总结+面试题
1、主从同步复制原理

(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线程将进入睡眠状态,等待下一次被唤xing

2、读写分离你们使用什么方式?
amoeba 代理 mycat 代码 sql_proxy
通过amoeba代理服务器,实现只在主服务器上写,只在从服务器上读;
主数据库处理事务性查询,从数据库处理select 查询;
数据库复制被用来把事务查询导致的变更同步的集群中的从数据库

3、如何查看主从同步状态是否成功
在从服务器上内输入 show slave status\G 查看主从信息查看里面有IO线程的状态信息,还有master服务器的IP地址、端口事务开始号。
当 Slave_IO_Running和Slave_SQL_Running都是YES时 ,表示主从同步状态成功

4、如果I/O不是yes呢,你如何排查?
首先排查网络问题,使用ping 命令查看从服务器是否能与主服务器通信
再查看防火墙和核心防护是否关闭(增强功能)
接着查看从服务slave是否开启
两个从服务器的server-id 是否相同导致只能连接一台
master_log_file master_log_pos的值跟master值是否一致

5、show slave status能看到哪些信息(比较重要)
IO线程的状态信息
master服务器的IP地址、端口、事务开始的位置
最近一次的错误信息和错误位置
最近一次的I/O报错信息和ID
最近一次的SQL报错信息和id

6、主从复制慢(延迟)会有哪些可能?怎么解决?
主服务器的负载过大,被多个睡眠或 僵尸线程占用  导致系统负载过大,从库硬件比主库差,导致复制延迟
主从复制单线程,如果主库写作并发太大,来不及传送到从库,就会到导致延迟
慢sql语句过多
网络延迟


mysql主从复制

若主从版本不一致,从的版本一定要高于主,保证可以向下兼容
因为若主的版本更新,低版本的从无法兼容的。

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

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

相关文章

论文阅读:Deep_Generic_Dynamic_Object_Detection_Based_on_Dynamic_Grid_Maps

目录 概要 Motivation 整体框架流程 技术细节 小结 不足 论文地址:Deep Generic Dynamic Object Detection Based on Dynamic Grid Maps | IEEE Conference Publication | IEEE Xplore 概要 该文章提出了一种基于动态网格图(Dynamic Grid Maps&a…

DevExpress WPF中文教程:如何完成GridControl的列和编辑器配置?

DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

基于微信小程序的校园警务系统/校园安全管理系统/校园出入管理系统

摘要 伴随着社会以及科学技术的发展,小程序已经渗透在人们的身边,小程序慢慢的变成了人们的生活必不可少的一部分,紧接着网络飞速的发展,小程序这一名词已不陌生,越来越多的学校机构等都会定制一款属于自己个性化的小程…

Exponential Moving Average (EMA) in Stable Diffusion

1.Moving Average in Stable Diffusion (SMA&EMA) 1.Moving average 2.移动平均值 3.How We Trained Stable Diffusion for Less than $50k (Part 3) Moving Average 在统计学中,移动平均是通过创建整个数据集中不同选择的一系列平均值来分析数据点的计算。 …

树莓集团——缔造国际领先的数字媒体产业孵化基地

在数字化浪潮席卷全球的背景下,树莓集团以其卓越的创新能力,正在全力打造一个全球领先的数字媒体产业基地。成都国际数字影像产业园不仅是技术和创意的汇聚地,更是数字内容创新与应用的典范,推动数字媒体产业迈向新的高度。 树莓集…

vue.js入门

目录 一. 框架概述 二. vue常用命令 2.1 插值表达式 2.2 v-text 2.3 v-html 2.4 v-on 2.5 v-model 2.6 v-show 2.7 v-if 2.8 v-else 2.9 v-bind 2.10 v-for 三. vue生命周期函数 一. 框架概述 我们之前写的javaScript代码都是原生的,而框架是在基础语言之上,对其进…

pytorch-梯度下降

梯度下降 y x 2 ∗ s i n ( x ) y ′ 2 x s i n x x 2 c o s x x 1 x − Δ y ′ ( x ) 其中 Δ 表示学习率, y ′ ( x ) 代表 y 在 x 点处关于 x 的梯度。 y x^2 * sin(x) \\ y 2xsinxx^2cosx \\ x_1 x - \Delta y(x) \\ 其中 \Delta 表示学习率&#xff0c…

qt表格模型视图

Qt 提供了一套强大的模型/视图框架,允许你以一种非常灵活和高效的方式显示和处理数据。在 Qt 中,表格视图(TableView)和模型(TableModel)是这种框架的一部分,常用于显示和编辑表格数据。 以下是…

便携式气象仪:科技赋能,让气象观测更智能

随着科技的快速发展,越来越多的领域受益于技术的进步。其中,气象观测领域也不例外。传统的气象观测设备虽然精确可靠,但往往体积庞大、携带不便,且需要专业人员进行操作和维护。而便携式气象仪的出现,则打破了这一局限…

BGP路由反射器

原理概述 缺省情况下,路由器从它的一个 IBGP对等体那里接收到的路由条目不会被该路由器再传递给其他IBGP对等体,这个原则称为BGP水平分割原则,该原则的根本作用是防止 AS内部的BGP路由环路。因此,在AS内部,一般需要每台…

深度解读大语言模型中的Transformer架构

一、Transformer的诞生背景 传统的循环神经网络(RNN)和长短期记忆网络(LSTM)在处理自然语言时存在诸多局限性。RNN 由于其递归的结构,在处理长序列时容易出现梯度消失和梯度爆炸的问题。这导致模型难以捕捉长距离的依…

《知识点扫盲 · Redis 序列化器》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

【2024最新版】Stable diffusion汉化版安装教程(附SD安装包),一键激活,永久免费!

目前广泛使用的Stable Diffusion Web UI简称(SDWebUI)是发布在开源平台Github上的一个Python项目,与通常的软件安装方法不同,这个项目并不是下载并安装即可使用的应用程序,而是需要准备执行环境,编译源码. 如果你是一个新手不会安装,现在可以直接使用一键启动包. 例如:国内的…

【Linux】信号量与生产消费模型

我们已经实现过锁条件变量的PC模型, 但是BlockingQueue并不能进行生产与消费的并发,原因在于我们使用的是STL提供的队列,进行了一个适配,底层的实现可能会修改到成员变量造成未知的错误。 而这次我们选择使用环形队列&#xff08…

python实现盲反卷积算法

python实现盲反卷积算法 盲反卷积算法算法原理算法实现Python实现详细解释优缺点应用领域盲反卷积算法 盲反卷积算法是一种图像复原技术,用于在没有先验知识或仅有有限信息的情况下,估计模糊图像的原始清晰图像和点扩散函数(PSF)。盲反卷积在摄影、医学成像、天文学等领域…

监控Windows文件夹下面的文件(C#和C++实现)

最近在做虚拟打印机时,需要实时监控打印文件的到达,并移动文件到另外的位置。一开始我使用了线程,在线程里去检测新文件的到达。实际上Windows提供了一个文件监控接口函数ReadDIrectoryChangesW。这个函数可以对所有文件操作进行监控。 ReadD…

当 Nginx 出现请求的乱序到达,如何处理?

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会! 文章目录 当 Nginx 出现请求的乱序到达,如何处理?一、理解请求乱序到达的现象二、请求乱序到达可能带来的影响三、解决方案(一&#xf…

安卓嘀嗒清单v7.2.2.2高级版

软件介绍 TickTick是一款轻便高效的任务管理、日程管理(GTD)和时间管理应用,配备强大的记事和提醒功能。你可以在手机、平板、网页等多达11个平台上使用滴答清单记录大小事务、制定工作计划、整理购物清单、设置生日提醒,甚至安排…

CSS技巧专栏:一日一例 12 -纯CSS实现边框上下交错的按钮特效

CSS技巧专栏:一日一例 12 -纯CSS实现边框上下交错的按钮特效 大家好,今天我们来做一个上下边框交错闪动的按钮特效。 本例图片 案例分析 虽说这按钮给人的感觉就是上下两个边框交错变换了位置,但我们都知道border是没法移动的。那么这个按…

土耳其云手机提升TikTok电商效率

在数字化飞速发展的今天,TikTok不仅是一个社交平台,更是一个巨大的电商市场。随着TikTok电商功能在全球范围内的扩展,土耳其的商家和内容创作者正面临着前所未有的机遇。本文将详细介绍土耳其云手机怎样帮助商家抓住机遇,实现业务…