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

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

接上篇: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级别;快照备份推荐云盘版实例,是云盘最高效与稳定的一种方式。

相关文章
|
15天前
|
机器学习/深度学习 人工智能 运维
企业内训|LLM大模型在服务器和IT网络运维中的应用-某日企IT运维部门
本课程是为某在华日资企业集团的IT运维部门专门定制开发的企业培训课程,本课程旨在深入探讨大型语言模型(LLM)在服务器及IT网络运维中的应用,结合当前技术趋势与行业需求,帮助学员掌握LLM如何为运维工作赋能。通过系统的理论讲解与实践操作,学员将了解LLM的基本知识、模型架构及其在实际运维场景中的应用,如日志分析、故障诊断、网络安全与性能优化等。
40 2
|
30天前
|
缓存 算法 关系型数据库
Mysql(3)—数据库相关概念及工作原理
数据库是一个以某种有组织的方式存储的数据集合。它通常包括一个或多个不同的主题领域或用途的数据表。
46 5
Mysql(3)—数据库相关概念及工作原理
|
7天前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
20 2
|
1月前
|
SQL 关系型数据库 数据库
SQL数据库:核心原理与应用实践
随着信息技术的飞速发展,数据库管理系统已成为各类组织和企业中不可或缺的核心组件。在众多数据库管理系统中,SQL(结构化查询语言)数据库以其强大的数据管理能力和灵活性,广泛应用于各类业务场景。本文将深入探讨SQL数据库的基本原理、核心特性以及实际应用。一、SQL数据库概述SQL数据库是一种关系型数据库
36 5
|
1月前
|
运维 Prometheus 监控
运维中的自动化实践每月一次的系统维护曾经是许多企业的噩梦。不仅因为停机时间长,更因为手动操作容易出错。然而,随着自动化工具的引入,这一切正在悄然改变。本文将探讨自动化在IT运维中的重要性及其具体应用。
在当今信息技术飞速发展的时代,企业对系统的稳定性和效率要求越来越高。传统的手动运维方式已经无法满足现代企业的需求。自动化技术的引入不仅提高了运维效率,还显著降低了出错风险。本文通过几个实际案例,展示了自动化在IT运维中的具体应用,包括自动化部署、监控告警和故障排除等方面,旨在为读者提供一些实用的参考。
|
1月前
|
SQL 关系型数据库 MySQL
sql注入原理与实战(三)数据库操作
sql注入原理与实战(三)数据库操作
sql注入原理与实战(三)数据库操作
|
1月前
|
SQL 存储 Java
sql注入原理与实战(二)数据库原理
sql注入原理与实战(二)数据库原理
|
5月前
|
存储 SQL BI
毫秒级查询性能优化实践!基于阿里云数据库 SelectDB 版内核:Apache Doris 在极越汽车数字化运营和营销方向的解决方案
毫秒级查询性能优化实践!基于阿里云数据库 SelectDB 版内核:Apache Doris 在极越汽车数字化运营和营销方向的解决方案
毫秒级查询性能优化实践!基于阿里云数据库 SelectDB 版内核:Apache Doris 在极越汽车数字化运营和营销方向的解决方案
|
4月前
|
存储 安全 Cloud Native
阿里云数据库多款产品支持米哈游新游《绝区零》全球开服!
这一次,阿里云继续与大家共同守护「新艾利都」!

热门文章

最新文章