【MySQL精通之路】InnoDB(18)-备份与恢复

news/2024/7/24 8:51:22/文章来源:https://blog.csdn.net/qq_29519041/article/details/139078303

目录

1.InnoDB备份

1.1 热备份

1.2 冷备份

1.3 使用mysqldump的逻辑备份

2.InnoDB恢复

2.1 实时恢复

2.2 从数据损坏或磁盘故障中恢复

2.3 InnoDB崩溃恢复

2.3.1 表空间发现

2.3.2 Redolog应用程序

2.3.3 未完成交易的回滚

2.3.4 更改缓冲区合并

2.3.5 清除

2.4 故障恢复期间的表空间发现


本节介绍与InnoDB备份和恢复相关的主题。

有关适用于InnoDB的备份技术的信息,请参阅“InnoDB备份”。

有关时间点恢复磁盘故障损坏的恢复以及InnoDB如何执行崩溃恢复的信息,请参阅“InnoDB恢复”

1.InnoDB备份

安全数据库管理的关键是定期备份

根据您的数据量、MySQL服务器数量和数据库工作负载,您可以单独或组合使用这些备份技术:热备份与MySQL Enterprise backup;

MySQL服务器关闭时通过复制文件进行冷备份;

使用mysqldump进行逻辑备份,用于较小的数据卷或记录数据库对象的结构信息

热备份和冷备份是复制实际数据文件的物理备份,mysql直接使用这些文件进行快速恢复。

推荐使用MySQL Enterprise Backup备份工具进行数据备份。

笔记
InnoDB不支持使用第三方备份工具恢复的数据库。

1.1 热备份

        mysqlbackup命令是MySQL Enterprise Backup组件的一部分,它允许您备份正在运行的MySQL实例,包括InnoDB表,在生成数据库的一致快照的同时,对操作的干扰最小。

当mysqlbackup复制InnoDB表时,对InnoDB表的读写可以继续。

MySQL Enterprise Backup还可以创建压缩备份文件,并备份数据库的子集

结合MySQL的Binlog,用户可以执行实时恢复。

MySQL Enterprise Backup是MySQL Enterprise订阅的一部分。

有关更多详细信息,请参阅“MySQL企业备份概述”。

MySQL Enterprise Backup为MySQL数据库执行热备份操作。该产品是为InnoDB存储引擎创建的表的高效可靠备份而设计的。为了完整起见,它还可以备份MyISAM和其他存储引擎中的表。
以下讨论简要总结了MySQL企业备份。有关更多信息,请参阅MySQL Enterprise Backup手册,可在https://dev.mysql.com/doc/mysql-enterprise-backup/en/.
热备份是在数据库运行和应用程序对其进行读写时执行的。这种类型的备份不会阻止正常的数据库操作,甚至可以捕获备份时发生的更改。出于这些原因,当您的数据库“增长”时,热备份是可取的——当数据足够大,备份需要大量时间,当数据对您的业务足够重要,您必须捕获最后的每一次更改,而不会使您的应用程序、网站或web服务离线。
MySQL Enterprise Backup对所有使用InnoDB存储引擎的表进行热备份。对于使用MyISAM或其他非InnoDB存储引擎的表,它会进行“热”备份,数据库会继续运行,但在备份时无法修改这些表。为了高效的备份操作,您可以将InnoDB指定为新表的默认存储引擎,或者将现有表转换为使用InnoDB存储引擎。

1.2 冷备份

如果你可以关闭MySQL服务器,你可以制作一个物理备份,该备份由InnoDB用来管理其表的所有文件组成。使用以下步骤:

1.慢关闭MySQL服务器,并确保其停止时没有错误。

2.将所有InnoDB数据文件(ibdata文件和.ibd文件)复制到一个安全的地方。

3.将所有InnoDB重做日志文件(MySQL 8.0.30及更高版本中的#ib_redoXX文件或早期版本中的ib_logfile文件)复制到安全的地方。

4.将您的my.cnf配置文件复制到安全的地方。

1.3 使用mysqldump的逻辑备份

除了物理备份之外,建议您通过使用mysqldump转储表来定期创建逻辑备份。

二进制文件可能在您没有注意到的情况下被损坏。转储的表存储在可读的文本文件中,因此察觉表损坏变得更容易。

此外,由于格式更简单,发生严重数据损坏的可能性更小

mysqldump还有一个--singletransaction选项,用于在不锁定其他客户端的情况下生成一致的快照。

请参阅“建立备份策略”。

复制与InnoDB表一起工作,因此您可以使用MySQL复制功能在需要高可用性的数据库站点上保留数据库的副本。

请参阅“InnoDB和MySQL主从复制”。

2.InnoDB恢复

2.1 实时恢复

        要将InnoDB数据库从物理备份的时候恢复到现在,您必须在启用二进制日志记录的情况下运行MySQL服务器,甚至在进行备份之前也是如此。

要在恢复备份后实现实时恢复,可以应用备份后二进制日志中的更改。

请参阅“实时(增量)恢复”。

2.2 从数据损坏或磁盘故障中恢复

        如果数据库损坏或发生磁盘故障,则必须使用备份执行恢复。

如果发生损坏,请首先查找未损坏的备份

恢复基本备份后,使用mysqlbinlog和mysql从二进制日志文件中进行实时恢复,以恢复备份后发生的更改。

        在某些数据库损坏的情况下,只需转储删除重新创建一个几个损坏的表就足够了。您可以使用CHECK TABLE语句来检查表是否已损坏,尽管CHECK TABLE自然无法检测到所有可能的损坏类型。

        在某些情况下,明显的数据库页面损坏实际上是由于操作系统损坏了自己的文件缓存,磁盘上的数据。最好先尝试重新启动计算机。这样做可以消除看起来是数据库页面损坏的错误。

如果MySQL仍然因为InnoDB一致性问题而无法启动,

请参阅“强制InnoDB恢复”

了解在恢复模式下启动实例的步骤,这允许您转储数据。

2.3 InnoDB崩溃恢复

要从MySQL服务器意外关闭中恢复,唯一的要求就是重新启动MySQL服务器。

InnoDB会自动检查日志,并将数据回滚到当前位置。InnoDB会自动回滚崩溃时存在的未提交事务。

InnoDB崩溃恢复包括五个步骤:

2.3.1 表空间发现

表空间发现是InnoDB用来识别需要redolog应用程序的表空间的程序。

请参阅下文故障恢复期间的表空间发现。

2.3.2 Redolog应用程序

Redolog应用程序在初始化期间执行,然后再接受任何连接。

如果在关闭或崩溃时将所有更改从缓冲池刷新到表空间ibdata*和*.ibd文件),则会跳过Redolog应用程序

如果启动时缺少重做日志文件,InnoDB也会跳过重做日志应用程序。

每次记录更改时,都会将当前最大自动增量计数器数值写入重做日志,这使其能够安全崩溃。

在恢复过程中,InnoDB扫描Redolog日志以收集计数器值的更改,并将这些更改应用于内存中的表对象。

有关InnoDB如何处理自动增量值的更多信息,请参阅

InnoDB中的AUTO_INCREMENT处理:

InnoDB auto_increment计数器初始化:

当遇到索引树损坏时,InnoDB会向Redolog中写入损坏标志,这使得损坏标志可以安全崩溃。

InnoDB还将内存中的损坏标志数据写入每个检查点上的存储引擎专用系统表。

在恢复过程中,InnoDB从两个位置读取损坏标志并合并结果,然后将内存表索引对象标记为损坏。

不建议删除Redolog以加快恢复速度,即使某些数据丢失是可以接受的。只有在干净关闭之后才应考虑删除Redolog,innodb_fast_shutdown设置为0或1。

2.3.3 未完成交易的回滚

        不完整事务是指在意外退出或快速关闭时处于活动状态的任何事务。回滚不完整事务所需的时间可能是事务中断前活动时间的三到四倍,具体取决于服务器负载。

不能取消正在回滚的事务。在极端情况下,当回滚事务预计需要非常长的时间时,innodb_force_recovery设置为3或更大时InnoDB可能会更快启动。

请参阅“强制InnoDB恢复”。

2.3.4 更改缓冲区合并

在将索引页读取到缓冲池时,将Change Buffer(系统表空间的一部分)中的更改应用于二级索引的叶页。

2.3.5 清除

将删除对于活动事务中不再可见拥有删除标记的记录。


        重做日志应用程序后面的步骤不依赖于redolog(除了记录写操作),并且与正常处理并行执行。其中,只有不完整事务的回滚对于崩溃恢复是特殊的。

insert缓冲区合并和清除是在正常处理过程中执行的。

在重做日志应用程序后,InnoDB尝试尽早接受连接,以减少停机时间。

作为崩溃恢复的一部分,InnoDB回滚服务器退出时未提交或处于XA PREPARE状态的事务。

回滚由后台线程执行,与来自新连接的事务并行执行

在回滚操作完成之前,新连接可能会遇到与已恢复事务的锁冲突。

在大多数情况下,即使MySQL服务器在大量活动中意外死亡,恢复过程也会自动进行,不需要DBA执行任何操作。

如果硬件故障或严重的系统错误损坏了InnoDB数据,MySQL可能会拒绝启动

在这种情况下,请参阅“强制InnoDB恢复”。

有关二进制日志和InnoDB崩溃恢复的信息,请参阅“二进制日志”。

2.4 故障恢复期间的表空间发现

如果在恢复过程中,InnoDB遇到自上一个检查点以来写入的重做日志,则必须将重做日志应用于受影响的表空间。在恢复过程中识别受影响的表空间的过程称为表空间发现。

表空间发现依赖于innodb_directories设置,该设置定义了启动时要扫描的目录以查找表空间文件。

innodb_directories默认设置为NULL,但当innodb构建启动时要扫描的目录列表时,innodb_data_home_dir、innodb_undo_directorydatadir定义的目录总是附加到innodb_directories参数值之后。

无论是否显式指定了innodb_directories设置,都会附加这些目录。

使用绝对路径定义的表空间文件或位于附加到innodb_directories设置的目录之外的表空间应添加到innodd_directories设置中。

如果以前未发现重做日志中引用的任何表空间文件,则恢复将终止。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于MySQL特殊储存引擎的介绍

目录 ——什么是储存引擎? ——关于表的储存引擎查询和建表语句 ---查询建表引擎语句 ---查询当前数据库支持的储存引擎 ---指定建表的储存引擎 ——关于特殊储存引擎的介绍 ---INNODB 特点: 关于INNDB的文件: 逻辑储存结构 ---MyI…

利用cherry pick巧妙地将某次提交单独合并到其他分支

0. 引言 最近在进行系统的多版本并行开发,涉及一些共有基础功能提交时就遇到了麻烦,一份代码需要向多个版本分支进行同步,以保证多版本都能有更新该基础功能。 多次对比提交的方式显然会带来巨大的工作量。但实际上我们可以通过git的cherry…

ES 查询踩坑-全字段匹配

需求:name字段需要全匹配查询 name的映射 普通的must查询 GET power_engin/_search {"from": 0,"size": 10,"query": {"bool": {"must": [{"term": {"name": {"value": "尼…

Java时间类--JDK8

为什么JDK8会又新增时间相关类呢? ① JDK7的时间对象如果需要比较大小的话,必须都先转换成毫秒值;JDK8则不需要,可以直接比较。 ② JDK7的时间对象可以修改,在多线程环境下就会导致数据不安全;JDK8不能修改…

如何找到docker的run(启动命令)

使用python三方库进行 需要安装python解释器 安装runlike安装包 pip3 install runlike 运行命令 runlike -p <container_name> # 后面可以是容器名和容器id&#xff0c;-p参数是显示自动换行实验 使用docker启动一个jenkins 启动命令为 docker run -d \ -p 9002:80…

7个靠谱的副业赚钱方法,宝妈,上班族,学生党可以做的兼职副业

你是否也曾面临过这样的困境&#xff1a;生活费紧张&#xff0c;想要找份兼职来补贴家用或是满足自己的小心愿&#xff1f;别担心&#xff0c;今天我将带领你踏入这个丰富多彩的兼职世界&#xff0c;助你轻松达成月入过千的小目标&#xff01; 在我漫长的兼职探索旅程中&#…

预训练模型语义相似性计算(十一) - M3E和BGE

M3E m3e由MokaAI 训练&#xff0c;开源和评测。 m3e的详细介绍可以看官方的github介绍。本文简要摘录其中一些点&#xff0c;以便后续的应用。 1.千万级 (2200w) 的中文句对数据(开源)。 2.支持同质相似句计算(s2s)和异质检索(s2p)&#xff0c;后续支持代码检索。 3.m3e基座模…

Nature 正刊!瑞典于默奥大学研究团队在研究全球河流和溪流的甲烷排放中取得新进展

甲烷(CH4)是一种强有力的温室气体&#xff0c;自工业革命以来&#xff0c;其在大气中的浓度增加了两倍。有证据表明&#xff0c;全球变暖增加了淡水生态系统的 CH4 排放&#xff0c;为全球气候提供了积极的反馈。然而&#xff0c;对于河流和溪流来说&#xff0c;甲烷排放的控制…

测试网0撸大毛 — AI 公链ALIENX推出HAL Testnet活动(含保姆级教程)

近期&#xff0c;OpenAI推出了新一代的GPT-4o让AI再次获得关注。AI硬件销售商英伟达的股价也突破1000美元&#xff0c;市值攀升到2.6万亿美元。AI继续影响到我们生活的方方面面。 在加密货币行业&#xff0c;市场行情也逐渐走出低谷。以太坊现货ETF被批准&#xff0c;为整个市场…

拖线无人机技术:像风筝一样飞行,无人能干扰

拖线无人机技术是一种独特且高效的无人机应用技术&#xff0c;其设计理念源于风筝。这种无人机不仅能够在空中稳定飞行&#xff0c;而且具备极强的抗干扰能力&#xff0c;使其在各种复杂环境下都能保持通信畅通和任务执行的高效。 拖线无人机技术的核心在于其拖线系统。与传统的…

爬虫案例-亚马逊反爬流程分析梳理(验证码突破)(x-amz-captcha)

总体概览&#xff1a;核心主要是需要突破该网站的验证码&#xff0c;成功后会返回我们需要的参数后再去请求一个中间页&#xff08;类似在后台注册一个session&#xff09;&#xff0c;最后需要注意一下 IP 是不能随意切换的 主要难点&#xff1a; 1、梳理整体反爬流程 2、验证…

YOLOv10:实时端到端目标检测

Ao Wang Hui Chen∗  Lihao Liu Kai Chen Zijia Lin  Jungong Han Guiguang Ding Tsinghua University Corresponding Author. 文献来源&#xff1a;中英文对照阅读 摘要 在过去的几年里&#xff0c;YOLO 因其在计算成本和检测性能之间的有效平衡而成为实时目标检测领…

币安领资,可验证计算协议 Marlin Protocol 如何推动去中心化

随着Web3应用的繁荣&#xff0c;DApp应用的整体去中心化和数据隐私也成为重点&#xff0c;同时AI与各类场景的融合也让不少去中心化应用都遇到了网络数据的计算、处理与结果验证等进行协调的问题。面对市场对各种交易和数据通讯的场景的需求不断增加&#xff0c;Marlin Protoco…

计算机毕业设计 | springboot养老院管理系统 老人社区管理(附源码)

1&#xff0c;绪论 1.1 背景调研 养老院是集医疗、护理、康复、膳食、社工等服务服务于一体的综合行养老院&#xff0c;经过我们前期的调查&#xff0c;院方大部分工作采用手工操作方式,会带来工作效率过低&#xff0c;运营成本过大的问题。 院方可用合理的较少投入取得更好…

Java | Leetcode Java题解之第103题二叉树的锯齿形层序遍历

题目&#xff1a; 题解&#xff1a; class Solution {public List<List<Integer>> zigzagLevelOrder(TreeNode root) {List<List<Integer>> ans new LinkedList<List<Integer>>();if (root null) {return ans;}Queue<TreeNode> n…

内网穿透入门使用(frp和natapp)

内网穿透入门使用 简单介绍穿透工具推荐FrpFrp下载安装服务端配置启动服务端配置客户端启动客户端效果查看 NATAppNATApp下载安装NATApp配置启动NATApp 使用途径 我的博客&#xff1a;Lichg&#xff0c;欢迎大家访问留言。 简单介绍 什么是内网穿透&#xff1a; 首先我们对内网…

内网安全--域渗透准备知识

目录 知识点&#xff1a; 0x01 0x02 0x03 系列点&#xff1a; Linux主机信息收集 windows主机信息收集 知识点&#xff1a; 0、域产生原因 1、内网域的区别 2、如何判断在域内 3、域内常见信息收集 4、域内自动化工具收集 -局域网&工作组&域环境区别 -域…

汽车电子零部件(14):TMS热管理系统

前言: TMS(thermal management system)热管理系统,这是新能源汽车诞生后随之而产生的一种新汽车零部件,一旦热管理失控会触发自燃,这种现象也是对EV来说是件头疼的事。汽车的热管理系统(TMS)是一个关键部件,有助于调节汽车电池组、车厢和其他车辆系统的温度。TMS的主要…

【Vue】性能优化

使用 key 对于通过循环生成的列表&#xff0c;应给每个列表项一个稳定且唯一的 key&#xff0c;这有利于在列表变动时&#xff0c;尽量少的删除和新增元素。 使用冻结的对象 冻结的对象&#xff08;Object.freeze(obj)&#xff09;不会被响应化&#xff0c;不可变。 使用函…

Vue3学习使用axios和qs进行POST请求和响应处理

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、前言1.准备工作2.发送POST请求3.处理响应数据4.总结 一、前言 在前端开发中&#xff0c;经常需要与后端进行数据交互&#xff0c;其中包括发送POST请求并处理响…