企业运维训练营之数据库原理与实践—云数据库备份与恢复—数据库备份恢复原理(下)

简介: 企业运维训练营之数据库原理与实践—云数据库备份与恢复—数据库备份恢复原理(下)

接上篇:https://developer.aliyun.com/article/1224053?groupCode=supportservice


二、 数据库备份恢复原理

 

image.png

 

Xtrabackup备份流程如下:

 

首先,备份开始时会Fork一个进程,也会启动redo拷贝线程。拷贝时会监听redo log变换并写到xtrabackup log文件中,拷贝InnoDB引擎的文件。InnoDB数据拷贝完成,线程退出。

 

后续如果有非事务性引擎,需要为全局加FTWRL锁保证一致。全局备份完成后,通知redo拷贝线程停止并退出,执行unlock,全部执行完毕之后退出。

 

备份文件时,事务型引擎只需拷贝redo文件,但非事务型引擎表没有事务保证,也没有log,因此需要FTWRL锁来保证所有数据一致。

 

以上为2.4版本的流程,后续版本使用了lock table with fullbackup这样轻量级的锁,不再有全局锁定。

 

FTWRL主要的工作包括:备份非事务性引擎表,获取binlog位点、GTID、redo log、LSN、redo log刷盘。

 

增量备份时,会先找到上次备份的to_lsn,从此处开始备份增量数据,增量数据即binlog。

 

image.png

 

快照备份是基于存储或文件系统,不同类型的快照有不同的技术,本文主要介绍copy-on-write的原理。

 

首先,发起快照备份时,只需初始化指向于所有数据块元数据的指针。跟踪元数据变化,在覆盖之前将旧数据拷贝到预留的快照空间,更新快照指针到新快照卷中的数据即可。

 

数据更新后将数据拷贝到另外的地方,指针会随之更改。读取时,没有变更的数据从原先的地方读取,变动的数据从快照卷中读取,只需读取指针即可。

 

该方式的优势在于,如果数据不更新,则空间开销特别小;备份时只需创建指针,速度极快;持续时间短,也不存在其他锁,因此影响小。缺点在于,每次数据更新时都会将数据再复制一份到预留的快照卷中,因此对写入性能有轻微影响。

 

image.png

 

恢复到任意时间点的流程如下:

 

找到恢复时间点前最近的一个全量备份集,将全量备份集还原至新数据库,再应用binlog增量数据直到指定的时间点。Binlog里的标识位点有position、datetime、GTID等帮助恢复到任意时间点。

 

image.png

 

三种备份方式的对比:

 

备份对象:逻辑备份更精细,可以自定义表、库或某一条数据、某个条件字段的数据;物理备份为数据库实例以及DB级别,快照备份为数据库实例级别。

 

备份效率:逻辑备份最慢,需要经过MySQL Server层到存储引擎层将数据读出再存储;物理备份比较快,只需要拷贝文件,额外操作较小;快照备份最快,因为基于存储,无需拷贝很多数据,只需生成快照指针。

 

恢复效率:逻辑备份需要将备份出的一条条数据应用到其他库中,因此执行特别慢;而物理备份只需做recover,备份恢复很快;快照备份只需在存储里进行,只需要做快照指针转化,因此恢复速度也很快。

 

备份影响:逻辑备份执行时间很长,开销很大,不仅有锁,还存在CPU等资源抢占,因此影响最大。物理备份和快照备份影响较小。

 

备份数据量:逻辑备份不会有数据碎片,因此比原库更小;物理备份与原库一致;而快照备份最小,因为只需要预留快照卷,保留更新数据的前镜像即可。

 

兼容性:逻辑备份可以恢复到绝大部分存储引擎;物理备份依赖于数据库版本架构,需要保持一致才可以存储;快照备份依赖于存储或文件系统,但是当前云上提供了下载快照备份的功能,可以将快照进行转换之后下载。

 

操作复杂性:逻辑备份最简单,只需要一个命令或简单的SQL;物理备份比较复杂,不同的工具会有很多参数,并且非常依赖于目标库的环境;快照备份原理比较复杂,但因为基于存储提供了现成的能力,因此操作较为简单。

 

数据库规模推荐范围:逻辑备份一般建议MB到百GB级别,大于该范围的开销过大,不推荐;物理备份是主流的备份方式,最大可到TB级别;快照备份推荐云盘版实例,是云盘最高效与稳定的一种方式。

相关文章
|
11天前
|
运维 监控
构建高效运维体系:从理论到实践
在当今快速发展的信息化时代,高效的运维体系是保障企业信息系统稳定运行的关键。本文旨在探讨如何构建一个高效、可靠的运维体系,通过分析当前运维面临的挑战,提出相应的解决策略,并结合实际案例,展示这些策略的实施效果。文章首先介绍了高效运维的重要性,接着分析了运维过程中常见的问题,然后详细阐述了构建高效运维体系的策略和步骤,最后通过一个实际案例来验证这些策略的有效性。
|
11天前
|
机器学习/深度学习 数据采集 人工智能
智能运维:从自动化到AIOps的演进与实践####
本文探讨了智能运维(AIOps)的兴起背景、核心组件及其在现代IT运维中的应用。通过对比传统运维模式,阐述了AIOps如何利用机器学习、大数据分析等技术,实现故障预测、根因分析、自动化修复等功能,从而提升系统稳定性和运维效率。文章还深入分析了实施AIOps面临的挑战与解决方案,并展望了其未来发展趋势。 ####
|
19天前
|
人工智能 运维 监控
构建高效运维体系:理论与实践的深度融合####
本文旨在探讨高效IT运维体系的构建策略,通过理论框架与实际案例并重的方式,深入剖析了现代企业面临的运维挑战。文章开篇概述了当前运维领域的新趋势,包括自动化、智能化及DevOps文化的兴起,随后详细阐述了如何将这些先进理念融入日常运维管理中,形成一套既灵活又稳定的运维机制。特别地,文中强调了数据驱动决策的重要性,以及在快速迭代的技术环境中保持持续学习与适应的必要性。最终,通过对比分析几个典型企业的运维转型实例,提炼出可复制的成功模式,为读者提供具有实操性的指导建议。 ####
|
21天前
|
机器学习/深度学习 人工智能 运维
智能运维:AIOps在大型系统运维中的实践与挑战
【10月更文挑战第28天】随着云计算、大数据和人工智能的发展,AIOps(人工智能运维)应运而生,旨在通过算法和机器学习提高运维效率和质量。本文探讨了AIOps在大型系统运维中的实践与挑战,包括数据质量、模型选择和团队协作等方面,并通过一个异常检测案例展示了其应用。尽管面临挑战,AIOps仍有望成为未来运维的重要方向。
49 5
|
17天前
|
运维 负载均衡 Ubuntu
自动化运维的利器:Ansible入门与实践
【10月更文挑战第31天】在当今快速发展的信息技术时代,高效的运维管理成为企业稳定运行的关键。本文将引导读者了解自动化运维工具Ansible的基础概念、安装步骤、基本使用,以及如何通过实际案例掌握其核心功能,从而提升工作效率和系统稳定性。
|
19天前
|
运维 资源调度 监控
提升运维效率的关键技术与实践
在当今快速发展的信息技术时代,运维工作面临着前所未有的挑战和机遇。本文旨在探讨如何通过采用先进的技术和实施最佳实践来提高IT运维的效率和效果。我们将深入分析自动化工具、监控策略、灾难恢复计划以及持续集成/持续部署(CI/CD)等关键领域,展示它们如何协同工作以优化运维流程。此外,文章还将提供一些实际案例研究,帮助读者更好地理解这些概念的应用。无论是对于初创公司还是大型企业,掌握这些技术都将是提升竞争力的关键。
|
28天前
|
运维 应用服务中间件 持续交付
自动化运维的利器:Ansible入门与实践
【10月更文挑战第21天】在现代IT基础设施的管理中,自动化运维已成为提升效率、降低错误率的关键。Ansible,作为一种简单而强大的自动化工具,正被广泛应用于配置管理、应用部署和任务自动化等领域。本文将引导你了解Ansible的基本概念,通过实际案例展示如何利用Ansible简化日常运维工作,并探讨其在现代IT运维中的应用价值。无论你是新手还是有经验的系统管理员,这篇文章都将为你开启Ansible的高效之旅提供指导。
|
28天前
|
运维 关系型数据库 MySQL
运维|MySQL 数据库被黑,心力交瘁
前一阵有一个测试用的 MySQL 数据库被黑了,删库勒索的那种,这里记录一下事情经过,给自己也敲个警钟。
35 2
|
1月前
|
运维 自然语言处理 开发者
作为一名运维人员,使用通义灵码个人版处理日常工作中的代码相关任务,极大地提升了我的工作效率。以下是我使用通义灵码的具体实践场景、效果和心得,以及相应的截图。
作为一名运维人员,我使用通义灵码处理日常工作中的代码任务,效率提升了30%。通义灵码帮助我快速理解复杂代码、生成准确的代码注释,并能从自然语言生成代码示例,大幅减少了代码编写和理解的时间。
57 3
|
1月前
|
运维 Prometheus 监控
运维之眼:监控的艺术与实践
在信息技术飞速发展的今天,运维监控已成为保障系统稳定运行的关键。本文将探讨运维监控的重要性,介绍常用的监控工具和方法,并通过实际案例分析,展示如何有效地实施监控策略,以确保系统的高可用性和性能。
下一篇
无影云桌面