包拯断案 | 集群备份为什么多次失败@还故障一个真相

2024-03-29 13:28

本文主要是介绍包拯断案 | 集群备份为什么多次失败@还故障一个真相,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

提问:作为DBA运维的你是否遇到过这些烦恼

1)数据库集群在夜间全量备份时,会出现多次报错?

2)而且一般在备份的准备阶段就退出了,根本没法完成数据备份工作?

心中有章,遇事不慌

作为DBA的你,遇到问题无从下手,除了在问题面前徘徊,还能如何选择?如果你一次或多次遇到该问题还是无法解决,又很懊恼,该如何排忧呢?关注公众号,关注《包拯断案》专栏,让小编为你排忧解难~

#包拯秘籍#

秘籍不能少,一整套故障排错及应对策略送给你,让你像包拯一样断案如神:

#首先

遇到此类问题后,我们要做到心中有章(章程),遇事不慌。一定要冷静,仔细了解故障现象(与研发/用户仔细沟通其反馈的问题,了解故障现象、操作流程、数据库架构等信息)

#其次

我们要根据故障现象进行初步分析。心中要想:是什么情况导致夜间数据库集群全量备份多次报错?例如:是配置参数还是功能组件的问题?

#然后

针对上述思考,我们需要逐步验证并排除,确定问题排查方向。

#接着

确定了问题方向,进行具体分析。通过现象得出部分结论,通过部分结论继续排查并论证。

#最后

针对问题有了具体分析后,再进行线下复现,最终梳理故障报告。

真刀实战,我们能赢

说了这么多理论,想必实战更让你心动。那我们就拿一个真实项目案例进行分析---某国有大型银行项目现场,运维人员在夜间进行数据库集群全量备份时,多次遭遇备份报错,该如何快速分析处理:

1、故障发生场景

夜间在项目现场兢兢业业进行项目运维的你,正在为某个数据库集群进行全量数据备份,却在备份的准备阶段,系统就退出了,根本没法完成备份工作。经过多次备份尝试仍然行不通,对现场情况和原因不太清楚。

2、故障排查

通过管控报错定位到备份任务日志,看到备份失败的原因均是因为undo log 清理导致undo log 的space_id变化,从而导致xtrabackup备份失败。

查看备份节点数据目录,发现在其目录下均存在undo_1_trunc.log文件。两个集群从库情况基本一致,也都存在undo_1_trunc.log文件。

undo_1_trunc.log文件是undo表空间truncate 时创建、用于记录truncate操作的临时日志文件,truncate操作完成后自动删除,但undo_1_trunc.log文件一直存在,说明truncate操作一直在进行中,且文件日期比较早,说明truncate操作夯住的时间比较长。

查阅官方bug信息https://bugs.mysql.com/bug.php?id=104573 ,发现有类似的从库undo表空间长时间处于清理状态,该问题是由参数 super_read_only =ON 触发的。

3、故障处理

为了减少触发bug引起的备份失败,需要调整两个参数:innodb_max_undo_log_sizeinnodb_purge_rseg_truncate_frequency。

innodb_max_undo_log_size

01这个参数主要用于定义undo表空间的阈值大小。如果undo表空间超过此阈值,则在innodb_undo_log_truncate=ON时,将其标记为truncation。标记为truncation的undo表空间将被置为inactive,不会被新的事务所使用,现有事务允许完成。purge线程清空、释放那些不再需要的回滚段,当undo表空间的所有回滚段释放后,undo表空间会执行一个truncate 操作,undo表空间截断为初始化大小值(16MB)。truncate完成后,undo表空间重新激活,可以分配新的事物。

采取措施:将innodb_max_undo_log_size由2147483648(2G)调整为4294967296(4G),减少标记为truncation的可能性。

innodb_purge_rseg_truncate_frequency

02这个参数是根据调用purge的次数,定义释放回退段的频率。在回滚段被释放之前,undo表空间不能被truncate。通常情况下,清除系统每调用(默认)128次purge,就释放一次回滚段。加大该值会减低purge线程释放回滚段的频率。

采取措施:将innodb_purge_rseg_truncate_frequency由16调整为128(默认值),降低释放回滚段的频率,从而降低truncate的频率。

本期复盘总结

1、在InnoDB 存储引擎中,undo 在完成事务回滚和 MVCC 之后,就可以 purge 掉了,purge后文件大小虽然不会变,但可以被重新分配使用。

2、在 innodb_max_undo_log_size 设置较大情况下,在undo log 大小达到阈值前被 purge 掉,这样空间就能重用,很难达到阈值,就不会触发 undo log truncate,也就不会触发数据备份失败这个 bug了 。

这篇关于包拯断案 | 集群备份为什么多次失败@还故障一个真相的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/858712

相关文章

Springboot项目启动失败提示找不到dao类的解决

《Springboot项目启动失败提示找不到dao类的解决》SpringBoot启动失败,因ProductServiceImpl未正确注入ProductDao,原因:Dao未注册为Bean,解决:在启... 目录错误描述原因解决方法总结***************************APPLICA编

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

SpringBoot整合Dubbo+ZK注册失败的坑及解决

《SpringBoot整合Dubbo+ZK注册失败的坑及解决》使用Dubbo框架时,需在公共pom添加依赖,启动类加@EnableDubbo,实现类用@DubboService替代@Service,配... 目录1.先看下公共的pom(maven创建的pom工程)2.启动类上加@EnableDubbo3.实

Jenkins分布式集群配置方式

《Jenkins分布式集群配置方式》:本文主要介绍Jenkins分布式集群配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装jenkins2.配置集群总结Jenkins是一个开源项目,它提供了一个容易使用的持续集成系统,并且提供了大量的plugin满

Java进程异常故障定位及排查过程

《Java进程异常故障定位及排查过程》:本文主要介绍Java进程异常故障定位及排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、故障发现与初步判断1. 监控系统告警2. 日志初步分析二、核心排查工具与步骤1. 进程状态检查2. CPU 飙升问题3. 内存

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模

SpringBoot连接Redis集群教程

《SpringBoot连接Redis集群教程》:本文主要介绍SpringBoot连接Redis集群教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 依赖2. 修改配置文件3. 创建RedisClusterConfig4. 测试总结1. 依赖 <de

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

Mac备忘录怎么导出/备份和云同步? Mac备忘录使用技巧

《Mac备忘录怎么导出/备份和云同步?Mac备忘录使用技巧》备忘录作为iOS里简单而又不可或缺的一个系统应用,上手容易,可以满足我们日常生活中各种记录的需求,今天我们就来看看Mac备忘录的导出、... 「备忘录」是 MAC 上的一款常用应用,它可以帮助我们捕捉灵感、记录待办事项或保存重要信息。为了便于在不同