MySQL主从复制延时

news2024/9/27 21:26:23

主从复制原理

MySQL主从复制是MySQL数据库中一种数据备份和数据同步的方式。它将一台MySQL服务器(主服务器)的数据同步到另外一台MySQL服务器(从服务器)。主服务器是数据的提供者,而从服务器是数据的接收者。主从复制可以用于数据备份和读写分离等场景。

MySQL主从复制的原理如下:

  • 主服务器将更新的日志写入二进制日志文件(binary log)。
  • 从服务器连接主服务器,通过读取主服务器的二进制日志文件并解析其中的更新记录,将这些记录应用到自己的数据库中,从而实现数据的同步。
  • 从服务器会定期向主服务器发送心跳包,以确保主服务器的可用性。当主服务器宕机或网络不通时,从服务器会自动切换为主服务器,继续提供服务。

详细的主从同步主要有三种形式(binlog格式):statement、row、mixed

  • 语句复制(Statement-based replication,SBR): 会将对数据库操作的sql语句写道binlog中
  • 行复制(Row-based replication,RBR): 会将每一条数据的变化写道binlog中。
  • 混合复制(Mixed-based replication,MBR): statement与row的混合。Mysql决定何时写statement格式的binlog, 何时写row格式的binlog。

在 MySQL 中,可以通过配置参数 binlog_format 来选择使用的复制格式,包括 STATEMENT、ROW 和 MIXED。

主从复制延时问题

I/O线程存在延迟

  • 网络延迟
  • 磁盘I/O存在瓶颈
  • 网卡存在问题

SQL线程存在延迟

  • 高并发:主库写入量过大,sql线程单线程重放
  • 大事务:如果从库执行的二进制日志中包含一个较长时间的事务,而且该事务尚未完成,则SQL线程会一直等待这个事务完成。这会导致SQL线程在处理其他的更新操作时被阻塞,表现为卡顿。

解决主从复制延时的方案

  • 网络优化
  • 事务优化
  • 数据库性能优化
  • MySQL配置优化

网络优化

使用高速网络连接

尽可能使用高速网络连接,例如千兆以太网连接或更高速的连接,以确保快速传输数据。

优化网络带宽

通过调整网络带宽分配,可以确保主从数据库之间的网络连接稳定并且带宽充足。

减少跨数据中心的复制

如果数据中心之间的网络延迟比较大,则可以考虑将主从数据库部署在同一数据中心或就近的数据中心。

事务优化

将大事务拆分成多个小事务

将大事务拆分成多个小事务,可以减少主从复制延迟,同时减少锁定资源的时间。

减少并发事务的数量

减少并发事务的数量,可以避免过多的锁定资源和占用资源,从而减少主从复制延迟。

使用InnoDB存储引擎

在使用InnoDB存储引擎时,可以通过设置事务隔离级别,来避免锁定资源的时间。

数据库性能优化

提升硬件性能

通过升级硬件配置,例如增加内存、硬盘容量等,可以提升从数据库性能。

调整服务器负载

通过调整服务器负载,例如减少并发连接数、优化查询语句等,可以减轻从数据库的负载,从而提升性能。

使用缓存技术

在从数据库中使用缓存技术,例如Memcached或Redis等,可以减少从数据库的查询次数,从而提升性能。

MySQL配置优化

调整主从服务器时间

如果主从服务器之间的时间存在偏差,则可以通过调整时间来减少主从复制延迟。可以使用ntpdate命令来同步时间。

修改binlog格式

在MySQL中,有三种binlog格式:STATEMENT、ROW和MIXED。可以通过修改binlog格式来减少主从复制延迟。

STATEMENT格式适用于执行简单的SQL语句,但可能会出现一些不一致的情况。ROW格式记录了每一行数据的修改,但是可能会产生大量的日志,增加复制的负担。MIXED格式将根据具体情况自动选择STATEMENT或ROW格式。

如果使用的是STATEMENT格式,则可以考虑切换到ROW格式,以减少主从复制延迟。如果使用的是ROW格式,则可以考虑切换到MIXED格式,以避免大量的日志。

调整binlog缓存大小

binlog缓存大小是指MySQL服务器用来缓存二进制日志的内存大小。如果binlog缓存大小过小,则可能会导致主从复制延迟。可以通过修改my.cnf文件来调整binlog缓存大小。

调整复制线程数

slave_parallel_workers=n(开启多线程复制)

复制线程是指用于复制二进制日志的MySQL线程。如果复制线程数量过少,则可能会导致主从复制延迟。可以通过修改my.cnf文件来调整复制线程数。

使用半同步复制

半同步复制是一种MySQL复制模式,它可以提高主从复制的可靠性,并减少主从复制延迟。在半同步复制模式下,当从服务器收到主服务器发送的日志时,它会向主服务器发送一个确认消息,以确保数据已经正确地复制到从服务器上。

可以通过在my.cnf文件中启用半同步复制来减少主从复制延迟。

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

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

相关文章

23秋季学期期中考核(密码题)

师兄新学的Decode姿势 题目给出的 const SM4 require("gm-crypt").sm4; var payload "inu7s0XGslLFsPe0xok/nxqwtceG0cuMoh7hBbpwyNBrn3g/lMdcFYobv/KeRgWwI/TIA4qMtjqpNKOet E3TD0gWoSknGF6OhkRJ3LxrNUZ/Mi8ISz3xrDLawIY8NwbalYcQUGWtVjdC3nJL…

对象补充-原型和函数原型-创建对象

defineProperties可以定义多个属性描述符 var obj {// 私有属性(js里面是没有严格意义的私有属性)_age: 18,_eat: function() {} }Object.defineProperties(obj, {name: {configurable: true,enumerable: true,writable: true,value: "why"}…

软件测试面试高频30道面试题

如果哪个测试经理在看我的文章,希望对面试者要微笑,不然面试结束,出门之后就一万个草泥马奔腾而过,其实面试者并不是希望你给他们什么,而是一种尊重,平等的谈话,不要高高在上感觉自己超牛逼一样…

二蛋赠书六期:《Linux管理入门经典(第8版)》

前言 大家好!我是二蛋,一个热爱技术、乐于分享的工程师。在过去的几年里,我一直通过各种渠道与大家分享技术知识和经验。我深知,每一位技术人员都对自己的技能提升和职业发展有着热切的期待。因此,我非常感激大家一直…

linux入门---线程的互斥

目录标题 什么是线程安全为什么会出现负数几个概念的介绍锁的理解锁有关函数的介绍锁的问题如何看待加锁和解锁锁的实现原理锁的封装线程安全和可重入函数死锁的概念 什么是线程安全 我们通过下面的例子来了解一下线程安全问题,首先我们实现一个模拟抢票的功能创建…

docker搭建halo个人博客

docker run -it -d --name halo -p 9090:8090 -v /usr/local/halo2:/root/.halo2 halohub/halo:2.10halo个人网站搭建效果 提供皮肤市场 编辑界面 自定义菜单

在win10下,使用torchviz对深度学习网络模型进行可视化

目录 1. 安装 graphviz 和 torchviz 2.安装 graphviz.exe 3.实例测试 4.如果你的电脑还是无法画图,并且出现了下面的报错: 5.参考文章: 1. 安装 graphviz 和 torchviz 首先打开 Anaconda prompt 进入自己的 pytorch 环境(图中 pt 是我自…

liunx练习题之在同一主机提供多个的web服务

虚拟web主机类型 一、基于端口 1.vim /etc/httpd/conf.d/vhost2.conf ---- — 改变http服务默认访问路径 <directory /testweb1>allowoverride none 表示不允许覆盖其他配置require all granted 表示允许所有请求 </directory> <virtualhost 0.0.0.0:…

【Leetcode】【简单】13. 罗马数字转整数

力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能&#xff0c;轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/roman-to-integer/description/ …

【网络协议】聊聊套接字socket

网络编程我们知道是通过socket进行编程的&#xff0c;其实socket也是基于TCP和UDP协议进行编程的。但是在socket层面是感知不到下层的&#xff0c;所以在设置参数的时候&#xff0c;其实是端到端协议智商的网络层和传输层。TCP是数据流所以设置为SOCK_STREAM&#xff0c;而UDP是…

【配置环境】VS Code中JavaScript环境搭建

一&#xff0c;环境 Windows 11 家庭中文版&#xff0c;64 位操作系统, 基于 x64 的处理器VS Code 版本: 1.83.1 (user setup)Node.js 版本&#xff1a;20.9.0 二&#xff0c;为什么搭建JavaScript环境 因为在看《重构改善既有代码的设计第2版》的时候&#xff0c;书中的代码展…

嵌入式基础知识-RSA非对称加密基本原理

之前的文章嵌入式基础知识-信息安全与加密&#xff0c;介绍过数据加密的一些基本概念&#xff0c;对称加密的原理比较简单&#xff0c;加密和解密的密钥相同&#xff0c;而非对称加密&#xff0c;两个密钥不同&#xff0c;本篇就来具体介绍RSA这种非对称加密的密钥计算原理。 …

【PyQt学习篇 · ⑧】:QWidget - 窗口特定操作

文章目录 图标标题不透明度窗口状态最大化和最小化窗口标志案例 图标 setWindowIcon(QIcon("resource/header_icon.png"))&#xff1a;该函数用于设置QWidget的窗口图标。可以为窗口设置一个图标&#xff0c;以显示在窗口标题栏、任务栏或窗口管理器中。 windowIcon…

全面解析:oa系统是什么?有哪些好用的oa系统

oa系统是什么&#xff1f;有哪些好用的oa系统 一、什么是OA系统 OA系统全称为Office Automation&#xff0c;即办公自动化系统。它是一种专门为企业和机构的日常办公工作提供服务的综合性软件平台&#xff0c;具有信息管理、流程管理、知识管理&#xff08;档案和业务管理&am…

视频剪辑软件Corel VideoStudio Ultimate 会声会影2024中文旗舰版免费下载安装步骤

我喜欢视频剪辑软件Corel VideoStudio Ultimate 会声会影2024中文旗舰版&#xff0c;因为它使用起来很有趣。它很容易使用&#xff0c;但仍然给你很多功能和力量。VideoStudio让我与世界分享我的想法&#xff01;“这个产品的功能非常多&#xff0c;我几乎没有触及它的表面&…

分布式系统之CAP理论

1. CAP 概念 CAP 概念指的是分布式系统中的三个核心属性&#xff1a;一致性&#xff08;Consistency&#xff09;、可用性&#xff08;Availability&#xff09;、分区容错性&#xff08;Partition Tolerance&#xff09;。CAP 定理由计算机科学家 Eric Brewer 在 2000 年提出&…

keealived安装配置启动

1.keepalived作用和原理图 keepalived作用:解决单点故障简单原理图1: 2.keepalived安装配置启动 地址: https://www.keepalived.org/download.html# 1)解压 tar -zxvf keepalived-2.0.18.tar.gz # 2)进入keepalived目录 cd keepalived-2.0.18/ # 3)安装libnl/libnl-3依赖…

系统架构设计之云原生架构

云原生架构 一. 云原生技术介绍二. 传统架构模式 VS 云原生架构模式三. 云原生架构反模式四. 云原生架构设计原则 其它相关推荐&#xff1a; 软考系统架构之案例篇(架构设计相关概念) 系统架构之微服务架构 系统架构设计之微内核架构 鸿蒙操作系统架构 所属专栏&#xff1a;系统…

Tomcat简介 安装 站点部署 多实例配置 反向代理

一、Tomcat简介二 、Tomcat帮手 --- JDK安装jdk检查jdk是否安装成功 三.安装TomcatTomcat配置管理页面 四、web站点部署五、部署开源站点&#xff08;jspgou商城&#xff09;安装数据库 六、 jspgou商城上线配置数据库连接 七、Tomcat多实例配置复制程序文件浏览器访问 八、Tom…