从库延迟案例分析

PostgreSQL-搭建延迟备库 延迟备库是指可以配置备库和主库的延迟时间,这样备库始终和主库保存指定时间的延迟,例如设置备库和主库的延迟时间为 1 小时,理论上备库和主库的延时始终保持在一个小时左右。如果主库上由于误操作删除了表数据时,从库上的这些数据也瞬间被删除,这时,即使对数据库做了备份,要恢复到删除前的状态也是有难度的。在这一场景下,延迟的备库在一定程度上缓解了这一问题,因为在设置的延迟时间范围内,备库上的数据还没被删除,可以在备库上找回这些数据。如果超过了已设置的主备延迟时间,那备库上的数据也删除了延迟备库部署。 阅读详情

背景介绍

近来一套业务系统,从库一直处于延迟状态,无法追上主库,导致业务风险较大。从资源上看,从库的CPU、IO、网络使用率较低,不存在服务器压力过高导致回放慢的情况;从库开启了并行回放;在从库上执行show processlist看到没有回放线程阻塞,回放一直在持续;解析relay-log日志文件,发现其中并没大事务回放。

过程分析

现象确认

收到运维同事的反馈,有一套从库延迟的非常厉害,提供了show slave status延迟的截图信息

file

持续观察了一阵show slave status的变化,发现pos点位信息在不停的变化,Seconds_Behind_master也是不停的变化的,总体趋势还在不停的变大。

资源使用

观察了服务器资源使用情况,可以看到占用非常低

file

观察从库进程情况,基本上只能看到有一个线程在回放工作

file

并行回放参数说明

在主库设置了binlog_transaction_dependency_tracking=WRITESET

在从库设置了slave_parallel_type=LOGICAL_CLOCK和slave_parallel_workers=64

error log日志对比

从error log中取并行回放的日志进行分析

$ grep 010559 100werror3306.log | tail -n 3
2024-01-31T14:07:50.172007+08:00 6806 [Note] [MY-010559] [Repl] Multi-threaded slave statistics for channel 'cluster': seconds elapsed = 120; events assigned = 3318582273; worker queues filled over overrun level = 207029; waite
d due a Worker queue full = 238; waited due the total size = 0; waited at clock conflicts = 348754579743300 waited (count) when Workers occupied = 34529247 waited when Workers occupied = 76847369713200

2024-01-31T14:09:50.078829+08:00 6806 [Note] [MY-010559] [Repl] Multi-threaded slave statistics for channel 'cluster': seconds elapsed = 120; events assigned = 3319256065; worker queues filled over overrun level = 207029; waite
d due a Worker queue full = 238; waited due the total size = 0; waited at clock conflicts = 348851330164000 waited (count) when Workers occupied = 34535857 waited when Workers occupied = 76866419841900

2024-01-31T14:11:50.060510+08:00 6806 [Note] [MY-010559] [Repl] Multi-threaded slave statistics for channel 'cluster': seconds elapsed = 120; events assigned = 3319894017; worker queues filled over overrun level = 207029; waite
d due a Worker queue full = 238; waited due the total size = 0; waited at clock conflicts = 348943740455400 waited (count) when Workers occupied = 34542790 waited when Workers occupied = 76890229805500

上述信息的详细解释,可以参考MTS性能监控你知道多少

去掉了发生次数比较少的统计,显示了一些关键数据的对比

file

可以发现自然时间120,回放的协调线程有90多秒由于无法并行回放而进入等待,有近20秒是由于没有空闲的work线程进入等待,折算下来协调线程工作的时间只有10秒左右。

并行度统计

众所周知,mysql从库并行回放主要依赖于binlog中的last_commmitted来做判断,如果事务的last_committed相同,则基本上可以认为这些事务可以并行回放,下面从环境中获取一个relay log进行并行回放的大概统计

$ mysqlsqlbinlog --no-defaults 046638 |grep -o 'last_committed.*' | sed 's/=/ /g' | awk '{print $2}' |sort -n | uniq -c |awk 'BEGIN {print "last_commited group_count Percentage"} {count[$2]=$1
; sum+=$1} END {for (i in count) printf "%d %d %.2f%%\n", i, count[i], (count[i]/sum)*100|"sort -k 1,1n"}' | awk '{if($2>=1 && $2 <11){sum+=$2}} END {print sum}' 
235703
$ mysqlsqlbinlog --no-defaults 046638 |grep -o 'last_committed.*' | sed 's/=/ /g' | awk '{print $2}' |sort -n | uniq -c |awk 'BEGIN {print "last_commited group_count Percentage"} {count[$2]=$1
; sum+=$1} END {for (i in count) printf "%d %d %.2f%%\n", i, count[i], (count[i]/sum)*100|"sort -k 1,1n"}' | awk '{if($2>10){sum+=$2}} END {print sum}'
314694

上述第一条命令,是统计last_committed相同的事务数量在1-10个,即并行回放程度较低或者是无法并行回放,这些事务总数量为235703,占43%,详细解析并行回放度比较低的事务分布,可以看出这部分last_committed基本上都是单条的,都需要等待先序事务回放完成后,自己才能进行回放,这就会造成前面日志中观察到的协调线程等待无法并行回放而进入等待的时间比较长的情况

$ mysqlbinlog --no-defaults 046638 |grep -o 'last_committed.*' | sed 's/=/ /g' | awk '{print $2}' |sort -n | uniq -c |awk 'BEGIN {print "last_commited group_count Percentage"} {count[$2]=$1; sum+=$1} END {for (i in count) printf "%d %d %.2f%%\n", i, count[i], (count[i]/sum)*100|"sort -k 1,1n"}' | awk '{if($2>=1 && $2 <11) {print $2}}' | sort | uniq -c
 200863 1
  17236 2
     98 3
     13 4
      3 5
      1 7

第二条命令统计last_committed相同的事务数量超过10个的总事务数,其数量为314694,占57%,详细解析了这些并行回放度比较高的事务,可以看到每一组是在6500~9000个事务数间

$ mysqlsqlbinlog --no-defaults 046638 |grep -o 'last_committed.*' | sed 's/=/ /g' | awk '{print $2}' |sort -n | uniq -c |awk 'BEGIN {print "last_commited group_count Percentage"} {count[$2]=$1
; sum+=$1} END {for (i in count) printf "%d %d %.2f%%\n", i, count[i], (count[i]/sum)*100|"sort -k 1,1n"}' | awk '{if($2>11){print $0}}' | column -t
last_commited  group_count  Percentage
1              7340         1.33%
11938          7226         1.31%
23558          7249         1.32%
35248          6848         1.24%
46421          7720         1.40%
59128          7481         1.36%
70789          7598         1.38%
82474          6538         1.19%
93366          6988         1.27%
104628         7968         1.45%
116890         7190         1.31%
128034         6750         1.23%
138849         7513         1.37%
150522         6966         1.27%
161989         7972         1.45%
175599         8315         1.51%
189320         8235         1.50%
202845         8415         1.53%
218077         8690         1.58%
234248         8623         1.57%
249647         8551         1.55%
264860         8958         1.63%
280962         8900         1.62%
297724         8768         1.59%
313092         8620         1.57%
327972         9179         1.67%
344435         8416         1.53%
359580         8924         1.62%
375314         8160         1.48%
390564         9333         1.70%
407106         8637         1.57%
422777         8493         1.54%
438500         8046         1.46%
453607         8948         1.63%
470939         8553         1.55%
486706         8339         1.52%
503562         8385         1.52%
520179         8313         1.51%
535929         7546         1.37%

last_committed机制介绍

主库的参数binlog_transaction_dependency_tracking用于指定如何生成其写入二进制日志的依赖信息,以帮助从库确定哪些事务可以并行执行,即通过该参数控制last_committed的生成机制,参数可选值有COMMIT_ORDER、WRITESET、SESSION_WRITESET。 从下面这段代码,很容易看出来三种参数关系:

1) 基础算法为COMMIT_ORDER 2) WRITESET算法是在COMMIT_ORDER基础上再计算一次 3) SESSION_WRITESET算法是在WRITESET基础上再计算一次

file

由于我的实例设置的是WRITESET,因此关注COMMIT_ORDER算法和的WRITESET算法即可。

COMMIT_ORDER

COMMIT_ORDER计算规则:如果两个事务在主节点上是同时提交的,说明两个事务的数据之间没有冲突,那么一定也是可以在从节点上并行执行的,理想中的典型案例如下面的例子

session-1session-2
BEGINBEGIN
INSERT t1 values(1)
INSERT t2 values(2)
commit (group_commit)commit (group_commit)

但对于MySQL来说,group_commit是内部行为,只要session-1和session-2是同时执行commit,不管内部是否合并为group_commit,两个事务的数据本质上都是没有冲突的;再退一步来讲,只要session-1执行commit之后,session-2没有新的数据写入,两个事务依旧没有数据冲突,依然可以并行复制。

session-1session-2
BEGINBEGIN
INSERT t1 values(1)
INSERT t2 values(2)
commit
commit

对于更多并发线程的场景,可能这些线程不能同时并行复制,但部分事务却可以。以如下一个执行顺序来说,在session-3提交之后,session-2没有新的写入,那么这两个事务是可以并行复制的;而session-3提交后,session-1又插入了一条新的数据,此时无法判定数据冲突,所以session-3和session-1的事务无法并行复制;但session-2提交后,session-1之后没有新数据写入,所以session-2和session-1又可以并行复制。因此,这个场景中,session-2分别可以和session-1,session-3并行复制,但3个事务无法同时并行复制。

session-1session-2session-3
BEGINBEGINBEGIN
INSERT t1 values(1)INSERT t2 values(1)INSERT t3 values(1)
INSERT t1 values(2)INSERT t2 values(2)
commit
INSERT t1 values(3)
commit
commit
WRITESET

实际上是commit_order+writeset的组合,会先通过commit_order计算出一个last_committed值,然后再通过writeset计算一个新值,最后取两者间的小值作为最终事务gtid的last_committed。

在MySQL中,writeset本质上是对 schema_name + table_name + primary_key/unique_key 计算的hash值,在DML执行语句过程中,通过binlog_log_row生成row_event之前,会将DML语句中所有的主键/唯一键都单独计算hash值,并加入到事务本身的writeset列表中。而如果存在无主键/唯一索引的表,还会对事务设置has_missing_keys=true。

参数设置为WRITESET,但是并不一定就能使用上,其限制如下

1) 非DDL语句或者表具有主键或者唯一键或者空事务 2) 当前session使用的hash算法与hash map中的一致 3) 未使用外键 4) hash map的容量未超过binlog_transaction_dependency_history_size的设置 以上4个条件均满足时,则可以使用WRITESET算法,如果有任意一个条件不满足,则会退化为COMMIT_ORDER计算方式

file

具体WRITESET算法如下,事务提交时:

  1. last_committed设置为m_writeset_history_start,此值为m_writeset_history列表中最小的sequence_number

  2. 遍历事务的writeset列表

    a 如果某个writeset在全局m_writeset_history中不存在,构建一个pair<writeset, 当前事务的sequence_number>对象,插入到全局m_writeset_history列表中

    b. 如果存在,那么last_committed=max(last_committed, 历史writeset的sequence_number值),并同时更新m_writeset_history中该writeset对应的sequence_number为当前事务值

  3. 如果has_missing_keys=false,即事务所有数据表均包含主键或者唯一索引,则最后取commit_order和writeset两种方式计算的最小值作为最终的last_committed值

file

TIPS:基于上面WRITESET规则,就会出现后提交的事务的last_committed比先提交的事务还小的情况

结论分析

结论描述

根据WRITESET的使用限制,对relay-log及事务中涉及到的表结构进行了对比,分析单last_committed的事务组成发现如下两种情况:

1) 单last_committed的事务中涉及到的数据和sequence_number存在数据冲突 2) 单last_committed的事务中涉及到的表存在无主键的情况,而且这种事务特别多

从上面的分析中可以得出结论:无主键表的事务太多,导致WRITESET退化为COMMIT_ORDER,而由于数据库为TP应用,事务都快速提交,多个事务提交无法保证在一个commit周期内,导致COMMIT_ORDER机制产生的last_committed重复读很低。从库也就只能串行回放这些事务,引起回放延迟。

优化措施

1) 从业务侧对表做改造,在允许的情况下给相关表都添加上主键。 2) 尝试调大参数binlog_group_commit_sync_delay、binlog_group_commit_sync_no_delay_count从0修改为10000,由于特殊环境限制,该调整并未生效,不同的场景可能会有不同的表现。


Enjoy GreatSQL :)

关于 GreatSQL

GreatSQL是适用于金融级应用的国内自主开源数据库,具备高性能、高可靠、高易用性、高安全等多个核心特性,可以作为MySQL或Percona Server的可选替换,用于线上生产环境,且完全免费并兼容MySQL或Percona Server。

相关链接: GreatSQL社区 Gitee GitHub Bilibili

GreatSQL社区:

image

社区有奖建议反馈: https://greatsql.cn/thread-54-1-1.html

社区博客有奖征稿详情: https://greatsql.cn/thread-100-1-1.html

(对文章有疑问或者有独到见解都可以去社区官网提出或分享哦~)

技术交流群:

微信&QQ群:

QQ群:533341697

微信群:添加GreatSQL社区助手(微信号:wanlidbc )好友,待社区助手拉您进群。

mysql主库delete一个没主键的表导致从库延迟很久问题处理 表没有主键的时候,delete很多数据,会导致从库出现很长时间延迟,因此需要严格把控,定期检查,确保主库上不存在没有主键的表。发现trx_query为空,以前线上从库出现延迟,能看到当前运行的sql的,不知为何这次看不到。因为上面已经在从库建过主键了,所以从库复制会停止,提示主键冲突,可以通过跳过这个事务来处理。#查看慢事务对应的进程id,注意别多杀了,只杀运行时间很久的,导致延迟的sql。如果没有主键,就需要先在从库上为这个表建下主键,先解决这个延迟的问题。只需要在从库执行以下命令就能跳过一个事务。 阅读详情

相关推荐

音频功放电路大全

作为硬件工程师,特别是做纯粹模拟电路、应用于音频功放的工程师,对于A类,B类,AB类,D类,G类,H类,T类功放应该特别熟悉。大多数工程师或许只知道其中的一部分、或者知道大概,为了让更多的工程师掌握更加详尽的音频功放知识,下文对以上说的音频功放做详细的说明。 功放,顾名思义,就是功率放大的缩写。与电压或者电流放大来说,功放要求获得一定的、不失真的功率,一般在大信号状态下工作,因此,功放电路一般包含电压放大或者电流放大电路没有的特殊问题,具体表现在:①输出功率尽可能大;②通常在大信号状态下工作;③非线性失真突

ltqdxl的博客 6595

测试备库应用主库日志时有无using current logfile选项的区别

测试备库应用主库日志时,alter database recover managed standby database语句中,有无using current logfile选项的区别 一、配置信息 库版本:11.2.0.1 DG保护模式:最大性能 DG配置方式:物理备库 LGWR ASYNC 详细如下: 主库配置信息: [oracle@db u

一片叶子飞舞 3126

Java本地AI推理初体验:Jlama+LangChain4j构建离线问答系统

Jlama 是专为 Java 生态设计的现代化大型语言模型(LLM)推理引擎,旨在让开发者无需依赖外部服务即可直接在 Java 应用中运行本地化模型推理。本文将结合Jlama + langchain4j 实现一个本地可运行的简单问答Demo。

2501_92589102的博客 407

MySQL延迟从库

延迟从库 控制从库的SQL线程执行速度,二进制日志照常去主库取,但是存放到中继日志之后就延迟执行,如果主库被误操作,这时候对中继日志进行处理,就不用根据全备二进制日志恢复,节省了大部分的时间 设置延迟同步 假设这时候2台数据库正在主从,现在设置延迟同步 mysql&amp;amp;gt; STOP SLAVE; -- 先停止同步 mysql&amp;amp;gt; CHANGE MASTER TO MASTER_DELAY...

十五十六 2060

手把手教你用GEM-2多频电磁仪找地下管道(附真实数据图)

本文详细解析了使用GEM-2多频电磁仪精准定位地下管线的全流程,包括设备调试、频率选择、现场扫描技巧及数据解读。通过真实案例展示了如何应对复杂干扰环境,提升管线检测效率与准确性,特别适合市政工程和地下管线普查。

weixin_42565652的博客 397

单片机技术入门与实战:从零基础到项目开发

单片机(MCU)作为嵌入式系统的核心组件,集成了CPU、内存和各种接口电路,广泛应用于智能家居、工业控制和汽车电子等领域。其工作原理基于实时控制和低功耗设计,通过定时器、中断系统和通信接口等功能模块实现各种控制任务。在物联网和智能硬件快速发展的背景下,掌握单片机开发技术成为电子工程师的重要技能。本文以STM32和PIC系列为例,详细解析单片机的基本概念、功能模块和选型指南,并分享从入门到项目实战的系统学习方法,帮助开发者在3-6个月内快速掌握这一关键技术。

weixin_35753291的博客 652

oracle 主备库延迟,DG备库上做备库,并延迟应用日志

DG备库上做备库,并延迟应用日志有时候备库不需要查询实时数据,如OLAP报表分析,又比如防止主库有误操作后找回原来的数据,故意让备库延迟几小时应用主库日志。如何让备库延迟应用主库日志呢?方法1: 在备库应用主库日志的语句中指定delay属性如alter database recover managed standby database delay 120 disconnect from sessi...

weixin_42682754的博客 1352

从数据到图片:手把手构建FMCW雷达人体行为识别数据集(行走、跌倒、喝水等6类动作)

本文详细解析了如何利用FMCW雷达构建人体行为识别数据集,涵盖行走、跌倒、喝水等6类动作。通过多普勒特征可视化、图像标准化处理和自动化流水线设计,将原始雷达信号转化为高质量时频图像数据集,为智能家居和健康监护等应用提供可靠数据支持。

weixin_30706691的博客 384

MySQL 延迟从库介绍

MySQL 延迟从库介绍

MySQL技术 844

ConnectionResetError 10054 根因分析与全链路防御指南

ConnectionResetError(错误码10054)是TCP协议中服务端主动发送RST包导致的强制断连,本质并非网络连接失败,而是服务端基于空闲超时、连接满载、TLS协商失败等策略做出的确定性终止决策。理解其底层原理有助于跳出‘重试’误区,转向连接生命周期管理。该错误高频出现在HTTP长连接、WebSocket、第三方API对接等场景,尤其在Nginx反向代理、负载均衡器(如AWS ALB)、WAF设备及内核conntrack机制下极易触发。本文结合Wireshark抓包分析、客户端心跳保鲜、协议指

weixin_30225755的博客 639

Android P车机添加屏幕多指全局自定义手势操作

参照原生状态栏全局下拉手势拦截,实现屏幕全局多指手势响应操作,并对手势进行转换为KeyEvent,以便项目自定义手势行为或应用拦截手势行为。

shusuanly的博客 1251

-备库有延迟怎么办?

使用MySQL的数据复制功能时,要监控好备库的状态和延迟情况。很多原因都会导致备库延迟,这一讲中提供了一些基本的方法。有一些延迟问题是可以避免的。如果是因为主库写入并发高引起的延迟,使用多线程复制能在一定程度上降低延迟。主库上参数binlog_transaction_dependency_tracking设置为WRITESET,能提升事务在备库的可并行度。如果你使用了级联复制架构,中间层的实例上,也要将 binlog_transaction_dependency_tracking设置为WRITESET。

qq_33240556的博客 973

基于STM32设计的校园智慧路灯系统(华为云IOT)(212)

当前设计并研发了基于STM32的智慧路灯系统,本系统的目的是打造一个高效节能、智能化管理的校园照明环境。通过集成STM32F103RCT6高性能微控制器为核心,结合多种传感器模块如BH1750光敏传感器、热释电人体感应模块以及中科微电子GPS模块等,实现了对校园路灯的精准控制与实时监控。

5137

【解决从库复制延迟的问题】

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨。

AmorHZR的博客 1854

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

PostgreSQL:备库的延迟问题处理步骤

通过以上步骤,您可以全面排查 PostgreSQL 备库的延迟问题,找出可能的原因并采取相应的措施进行解决。该命令将搜索所有日志文件中包含“replication”字样的行,帮助您快速定位与复制相关的问题。该命令的输出将包括每个节点的角色、状态、时间线等信息,帮助您了解主备节点的当前状态。:该命令可以帮助您了解集群状态的变化历史,识别可能导致延迟的事件。,您可以识别出集群状态变化的时间点,帮助定位可能导致延迟的事件。在该目录下,您可以找到以日期命名的日志文件,如。该查询会返回当前复制连接的状态信息,包括。

喝醉酒的小白 2023

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

PostgreSQL配置延迟备库

PostgreSQL延迟备库是指可以配置备库和主库的延迟时间,这样备库始终和主库保持指定时间的延迟,例如设置备库和主库之间的延迟时间为1小时 ,理论上备库和主库的延时始终保持在一小时左右;...

qq_58883939的博客 1223

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

- 备库为什么会延迟好几个小时

在上一篇文章中,我和你介绍了几种可能导致备库延迟的原因。你会发现,这些场景里,不论是偶发性的查询压力,还是备份,对备库延迟的影响一般是分钟级的,而且在备库恢复正常以后都能够追上来。但是,如果备库执行日志的速度持续低于主库生成日志的速度,那这个延迟就有可能成了小时级别。而且对于一个压力持续比较高的主库来说,备库很可能永远都追不上主库的节奏。这就涉及到今天我要给你介绍的话题:备库并行复制能力。为了便于你理解,我们再一起看一下第24篇文章的主备流程图。图1 主备流程图。

qq_33240556的博客 810

STM32hal库实现微秒延迟

stm32 us

嵌入式与人工智能 2745

【mysql】如何解决主从架构从库延迟问题

2.调整 slave_parallel_workers:在 MySQL 5.7 及更高版本中,可以使用多线程复制,通过设置 slave_parallel_workers 参数来开启从库的多线程复制。3.使用SSD存储:SSD 相较于传统的 HDD,有更快的读写性能,可以显著提高从库的写入速度。2.多级复制:将从库分层,主库同步到一级从库,一级从库再同步到二级从库,以分散同步压力。2.低延迟的网络连接:确保主库和从库之间的网络连接低延迟、高带宽。1.通过调整 MySQL 从库的配置,可以提高从库的复制性能。

王佑辉的博客 1225

主从延迟案例分析一

问题背景: 在我们实际工作过程中,会遇到形形色色的数据库问题,有些问题可以迎刃而解,而有的问题处理起来却比较让人揪心,比如说“延迟问题”。你是否也在工作中遇到过类似的问题呢?它到底是怎么造成的呢?我们该如何处理呢?首先,我们先来看一个用户主从延迟的案例:【下面展示步骤为测试环境复现用户主从延迟场景】 排查步骤: 1、查询同步延迟状态: 登录RO(只读实例)执行show...

236

在 SQL Server 环境中模拟备库同步延迟

上执行此命令(即之前执行 SUSPEND 的同一个实例):此方法需自定义事件捕获逻辑,操作较复杂。根据实际环境选择合适方案,AG 的。是最直接可控的方法。

喝醉酒的小白 1186

备库为什么会延迟好几个小时

主备流程图:主备的并行复制能力主要是上图的两个黑色箭头,一个箭头代表客户端写入主库,另一个箭头代表备库上sql_thread执行中转日志。主库上影响并发度的原因是各种锁,由于InnoDB支持行锁,除了所有并发事务都在更新同一行这种极端场景外,对业务并发度的支持总体良好。备库上影响并发度是sql_thread更新数据的逻辑,在单线程的情况下会导致备库应用日志不够快,造成主备延迟。从单线程复制到最新版本的多线程复制,中间的演化经历了好几个版本。

sdgfafg_25的博客 1440

部署MySQL延迟从库的几个好处

|导读 MySQL延迟从库的好处多多,你了解吗 MySQL的主从复制(replication)关系,不太严谨的叫法是“同步”或者“主从同步”。实际上在早期,MySQL的主从并不能实现真正的“同步”(sync),而是“异步”的(async)。 MySQL主从复制它可以有多种模式,最经典的也是最早出现的异步复制(async replication),从5.5版本开始有了半同步复制(semi-sync ...

Evelyn_Lv的博客 189

MySQL 优化从库延迟的一些思路

本文针对MySQL从库延迟问题,提供了五种优化思路:1)调整sync参数提升日志落盘效率;2)优化buffer和并发参数,如增大缓冲池并调整change buffer比例;3)开启并行复制并调整相关参数;4)MGR架构可临时改为异步复制;5)其他性能参数优化。作者强调需根据实际情况调整,并警示内存过度分配风险。文章还包含并行复制积压日志的解析方法,为DBA解决从库延迟问题提供了实用参考。

ActionTech的博客 579

流复制浅析 —— 延迟备库

延迟备库是指可以配置备库与主库的延迟时间,这样备库始终和主库保持指定时间的延迟。 延迟备库的意义: 一般流复制环境下,如果主库不是很忙并且备库硬件资源充分,通常备库和主库的延时能在毫秒级别。如果主库上误操作删除了表数据或者表,从库上的这些数据也瞬间就被删除,即使对数据库做了备份,要恢复到删除前的状态也是有难度的,需要做PITR维护成本较高。在这种场景下,延迟备库在一定程度上缓解了这一问题。 延迟备库的部署: 在备库revocery.conf配置文件中配置 recovery_min_apply_delay

HighGO 1478
上一篇: 5.7打补丁—编译和官方一致的Linux_Generic包
下一篇: 主从延迟调优思路
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值