【MySQL备份】Percona XtraBackup增量备份实战篇

目录

1.前言

2.准备工作

2.1.环境信息

2.2.创建备份目录

2.3.配置/etc/my.cnf文件 

2.4.授予root用户BACKUP_ADMIN权限

3.增量备份

3.1.第一步:全量备份

3.2.第二步:增量备份

3.3.第三步:再次增量备份 

4.准备备份

4.1.准备全量备份

4.2.逐个应用增量备份

4.3.最终准备

5.备份恢复

6.总结 


"实战演练:利用Percona XtraBackup执行MySQL增量备份操作详解"

1.前言

在承接上篇【MySQL备份】Percona XtraBackup全量备份实战篇智慧之后,我们再度启航,深化对Percona XtraBackup这一强大工具的探索之旅。本章节,我们将从全量备份的稳固基石出发,迈向更加精细化的领域——增量备份实战策略。在这里,不仅会揭示如何高效地运用Percona XtraBackup捕获数据库的每一次微妙变化,还会详述如何在数据海洋的波涛中,精准锚定并保护那些宝贵的新增信息,从而构建起一道既灵活又坚不可摧的数据防护网。

通过本篇的深入解析,您将学会如何在不影响数据库正常运行的前提下,以最小的资源开销,实现对数据库变化的持续追踪与备份。我们将一步步揭开增量备份的神秘面纱,从策略规划、命令行操作的细微调整,到备份效率与数据一致性的双重优化,全方位展示如何在数据保护的征途中,步步为营,稳扎稳打。

不论是对于寻求优化备份策略的数据库管理员,还是渴望深入了解MySQL备份机制的IT专业人员,本文都将是一份不可或缺的实战指南,旨在助力您在数据保护的道路上行稳致远,让每一次数据备份都成为数据安全的一块坚固磐石。

2.准备工作

2.1.环境信息

主机IP操作系统Mysql版本XtraBackup版本
172.17.0.2CentOS Stream release 98.0.378.0.35

2.2.创建备份目录

mkdir -p /data/full_backup

2.3.配置/etc/my.cnf文件 

[xtrabackup]
host=localhost
port=3306
user=root
password=123456
socket=/var/lib/mysql/mysql.sock
target_dir=/data/full_backup

2.4.授予root用户BACKUP_ADMIN权限

grant BACKUP_ADMIN on *.* to 'root'@'%'

LOCK INSTANCE FOR BACKUP 是MySQL 8.0引入的一种新的备份相关SQL语句,主要用于在进行数据库备份时,以一种更为细粒度和高效的方式控制对数据库实例的访问,以保证备份的一致性。这个命令的工作原理及特点如下:

目的:在执行备份操作时,此命令用于获取一个实例级别的锁,该锁允许在备份过程中继续执行DML(数据操作语言,如INSERT、UPDATE、DELETE)操作,同时防止那些可能导致数据快照不一致的DDL(数据定义语言,如CREATE、ALTER、DROP)操作和某些管理操作。这样可以在不影响数据库服务的情况下进行备份,特别适用于需要最小化服务中断的在线备份场景。

权限需求:执行LOCK INSTANCE FOR BACKUP语句需要用户具备BACKUP_ADMIN权限。这是一个专门为了备份相关的高级操作而设计的权限级别。

兼容性:此特性是在MySQL 8.0及以上版本中引入的,早于8.0的MySQL版本并不支持这一语句,因此在使用旧版本时,可能需要依赖其他机制(如FLUSH TABLES WITH READ LOCK)来确保备份的一致性。

解锁:执行备份后,需要使用UNLOCK INSTANCE语句来释放之前由LOCK INSTANCE FOR BACKUP获得的锁,从而恢复正常操作。

与传统备份命令的对比:相比于传统的备份方法,如使用FLUSH TABLES WITH READ LOCK,LOCK INSTANCE FOR BACKUP提供了更小的性能影响,因为它不会完全阻止写操作,只是限制了可能引起数据不一致的活动,更适合于高可用性和高性能要求的生产环境。

3.增量备份

登陆数据库查看现有的数据,可以看到tes1库中有两个表

3.1.第一步:全量备份

xtrabackup --backup --target-dir=/data/full_backup --user=root --password=123456 --host=172.17.0.2 --port=3306
  • --target-dir=/data/full_backup 指定了全量备份的目标目录。

如果查看xtrabackup_checkpoints文件,应该会看到类似的内容 内容取决于您的LSN编号:

3.2.第二步:增量备份

登陆数据库创建一个employees 表为后面的测试做准备

CREATE TABLE employees (id INT AUTO_INCREMENT,          -- 自增的ID作为主键first_name VARCHAR(50) NOT NULL, -- 姓名,最大长度50,不能为空email VARCHAR(100) UNIQUE,      -- 电子邮件,最大长度100,必须唯一hire_date DATE,                 -- 入职日期PRIMARY KEY (id)                -- 指定id列为表的主键) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 使用InnoDB存储引擎,字符集为utf8mb4支持更多字符

在第一次全量备份之后,你可以进行增量备份。增量备份只备份自上次备份以来发生变化的数据。

xtrabackup --backup --incremental-basedir=/data/full_backup --target-dir=/data/incr_backup_1 --user=root --password=123456 --host=172.17.0.2 --port=3306
  • --incremental-basedir=/data/full_backup 指定了增量备份的基础全量备份目录。
  • --target-dir=/data/incr_backup_1 指定了这次增量备份的目标目录。

这里xtrabackup_checkpoints的 from_lsn是备份的起始LSN,对于增量备份,它必须与上一个/基本备份的to_lsn(如果是最后一个检查点)相同 备份.

3.3.第三步:再次增量备份 

如果你需要进行多次增量备份,只需重复执行增量备份命令,并每次更改--target-dir的值即可。例如,第二次增量备份: 

这里我们登陆数据库再次创建一个employees 1表为后面的测试做准备

CREATE TABLE employees1 (id INT AUTO_INCREMENT,          -- 自增的ID作为主键first_name VARCHAR(50) NOT NULL, -- 姓名,最大长度50,不能为空email VARCHAR(100) UNIQUE,      -- 电子邮件,最大长度100,必须唯一hire_date DATE,                 -- 入职日期PRIMARY KEY (id)                -- 指定id列为表的主键) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 使用InnoDB存储引擎,字符集为utf8mb4支持更多字符

xtrabackup --backup --incremental-basedir=/data/incr_backup_1 --target-dir=/data/incr_backup_2 --user=root --password=123456 --host=172.17.0.2 --port=3306

 这里xtrabackup_checkpoints的 from_lsn是备份的起始LSN,对于增量备份,它必须与上一个/增量备份的to_lsn(如果是最后一个检查点)相同 备份.

4.准备备份

当您完成了全量备份以及一系列增量备份后,若需要恢复数据到某个时间点,您需要按照以下步骤准备增量备份: 

4.1.准备全量备份

首先,需要准备全量备份,这一步通常会应用日志文件到数据文件上,确保数据的一致性。命令如下:

xtrabackup --prepare --apply-log-only --target-dir=/data/full_backup

 

4.2.逐个应用增量备份

接下来,按照时间顺序,对每个增量备份执行准备操作,将增量备份中的变化应用到前一个备份(全量或上一个增量)的准备结果上。例如,对于第一个增量备份:

xtrabackup --prepare --apply-log-only --incremental-dir=/data/incr_backup_1 --target-dir=/data/full_backup

 

对于后续的增量备份,重复上述命令,每次更新--incremental-dir指向下一个增量备份目录,而--target-dir保持不变,指向已准备好的全量备份目录。

xtrabackup --prepare --apply-log-only --incremental-dir=/data/incr_backup_2 --target-dir=/data/full_backup

 

4.3.最终准备

一旦所有增量备份都已应用,全量备份目录中的数据就反映了所有备份点的累计变化,处于一个可以恢复的状态。如果这是最后一个步骤,您可能不再需要使用--apply-log-only选项,而是直接执行--apply-log来最终准备数据以供使用或恢复到MySQL服务器: 

xtrabackup --prepare --target-dir=/data/full_backup

5.备份恢复

首先登陆数据库删除之前创建的2个表为后面测试做准备

停止MySQL服务进行恢复数据 

systemctl stop mysqld
rsync -avrP /data/full_backup/ /var/lib/mysql/

恢复数据时,一定要记得更改数据目录下的文件拥有者以及所属组权限,否则mysql无法启动 

 重启数据库查看数据是否恢复,可以看到之前被删除的表已经成功恢复

6.总结 

  • 对于全量备份,在准备阶段中,需要将已提交事务从日志文件写入数据文件,回滚未提交的事务,确保数据处于一致性状态。
  • 对于增量备份,在准备阶段中,不能回滚未提交的事务,因为事务可能在下次备份中提交。因此必须使用 --apply-log-only选项来阻止回滚阶段,否则你的增量备份将毫无用处。事务回滚后,无法应用下一次的增量备份。
  • 如果有多次增量备份,最后一次增量备份prepare准备阶段则不能使用–apply-log-only选项,之前的增量备份则需要使用–apply-log-only选项。
  • 要恢复到不同时间点的增量备份只需利用不同时间点的增量备份 在全量备份的基础上进行准备备份 然后恢复即可

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

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

相关文章

windows自带的性能采集配置方法

1 计算机---右键---管理 2 性能--数据收集器几---用户自定义 3新建--输入程序名称 并在此页面选择--手动创建(高级) 4 下一步--勾选性能计数器---下一步 5 添加--找到process Processor Time User Time Handle Count ID Process Private Bytes…

爬虫逆向实战(42)-某巢登陆(AES、MD5、RSA、滑块验证码)

一、数据接口分析 主页地址:某巢 1、抓包 通过抓包可以发现在登录时,网站首先请求captcha/querySlideImage/来获取滑块验证码的图片,然后请求captcha/checkCode/接口来验证滑块验证码。滑块验证码校验成功后,请求noshiro/getPu…

理解MySQL核心技术:存储过程与函数的强大功能

在大型应用程序和复杂的数据库操作中,存储过程与函数扮演着至关重要的角色。它们不仅可以提高代码的可维护性,还能加强数据库的安全性和性能。本篇文章将深入探讨MySQL存储过程与函数的基础知识、创建、管理及其在实际应用中的优势。 什么是存储过程和函…

无人机热成像分析图谱原理

一、热成像原理 热成像,也称为红外热成像或红外成像,是一种利用红外辐射(通常指的是热辐射)来获取物体表面温度分布信息的成像技术。在无人机上集成热成像传感器,可以远程捕获并分析目标物体的热特征,不受…

【高性能服务器】多线程并发模型

🔥博客主页: 我要成为C领域大神🎥系列专栏:【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞👍收藏⭐评论✍️ 本博客致力于知识分享,与更多的人进行学习交流 ​​ 对于常见的C/…

ROS2使用Python开发动作通信

1.创建接口节点 cd chapt4_ws/ ros2 pkg create robot_control_interfaces --build-type ament_cmake --destination-directory src --maintainer-name "joe" --maintainer-email "1027038527qq.com" mkdir -p src/robot_control_interfaces/action touch…

跨模型知识融合:大模型的知识融合

大模型(LLMs)在多个领域的应用日益广泛,但确保它们的行为与人类价值观和意图一致却充满挑战。传统对齐方法,例如基于人类反馈的强化学习(RLHF),虽取得一定进展,仍面临诸多难题&#…

LeetCode Top 100 题目概览及部分题目解答【两数之和,接雨水,最长回文子串,三数之和】

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

django开源电子文档管理系统_Django简介、ORM、核心模块

Django简介 Django是一种开源的大而且全的Web应用框架,是由python语言来编写的。他采用了MVC模式,Django最初是被开发来用于管理劳伦斯出版集团下的一些以新闻为主内容的网站。一款CMS(内容管理系统)软件。并于 2005 年 7 月在 BSD 许可证下发布。这套框…

Pytest+Yaml+Request+Allure+PyMsql+Jenkins+GitLab框架源代码之(二)config配置

config公共配置包 config.yml 公共配置文件,主要配置路径及日志 base:base_info_url: https://XXXX.combase_php_url: http://XXXX.combase_weixin_url: https://XXXX.qq.combase_fenmi_url: http://XXXXX.com # base_czt_url: http://XXXXXbase_czt_url: hhttps:…

自然语言处理:第四十章 如何与大模型交流-Prompt工程

文章链接:Principled Instructions Are All You Need for Questioning LLaMA-1/2, GPT-3.5/4 主页: VILA-Lab/ATLAS: A principled instruction benchmark on formulating effective queries and prompts for large language models (LLMs). Our paper: https://arxiv.org/abs…

Redis 7.x 系列【13】数据类型之地理位置(Geospatial)

有道无术,术尚可求,有术无道,止于术。 本系列Redis 版本 7.2.5 源码地址:https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 常用命令2.1 GEOADD2.2 GEODIST2.3 GEORADIUS2.4 GEOPOS2.5 GEORADIUSBYMEM…

半导体工艺的完美搭档 —— PEEK晶片夹

PEEK(聚醚醚酮 Polyetheretherketone)是一种高性能的工程塑料,以其耐高温、耐磨性、尺寸稳定性、低释气性和低吸湿性等特性,在电子半导体、光伏及液晶光电工业中得到广泛应用。 PEEK晶片夹作为其中的一种应用,具有以下…

液压件工厂的MES解决方案:智能生产,高效未来

一、引言 虽然我国液压件行业发展迅速,但是大多数液压件生产企业规模小、自主创新能力不足,大部分液压产品处于价值链中低端。且由于技术、工艺、设备及管理等多方面的限制,高端液压件产品研发生产水平不足,无法形成有效的供给&a…

如何在工作中应用六西格玛绿带培训所学的知识和技能?

近年来,六西格玛作为一种被广泛认可的质量管理工具,为企业提供了一种系统的、数据驱动的方法来优化流程、提高产品质量并减少成本。然而,仅仅接受培训是不够的,如何在工作中有效应用六西格玛绿带培训所学的知识和技能,…

录屏软件哪个好用?分享5款(2024最新)

随着网络时代的发展,电脑的使用频率也越来越高,还有近些年出现的网课、直播等,这让电脑的录屏功能显得更重要。随之而来的录屏软件也越来越多样化,选择一款好的软件是录屏至关重要的环节。 在数字浪潮汹涌的时代,录屏…

前端利用vue如何实现导入和导出功能.md

1. 前端利用vue如何实现导入和到处功能 1.1. 导入功能&#xff08;以导入Excel文件为例&#xff09; 1.1.1. 实现步骤: 1.1.1.1. 安装依赖: 首先&#xff0c;你需要安装处理Excel文件的库&#xff0c;如xlsx。1.1.1.2. 创建上传组件: 使用Element UI的<el-upload>组件或其…

绘唐3一键追爆款文刻创作聚星文社

聚星文社是一个中国的文学社交平台&#xff0c;提供了一个让作家和读者相互交流和分享作品的平台。 在聚星文社&#xff0c;作家可以在平台上发布自己的作品&#xff0c;获得读者的阅读和评论&#xff0c;同时也可以与其他作家进行交流与学习。 点击下载即可 读者可以在平台上…

一、安全完善度等级SIL(Safety Integrity Level)介绍

目录 一、背景 二、定义 2.1 相关概念介绍如下&#xff1a; 2.2 扩展 2.3 注意事项 一、背景 在轨道交通行业中&#xff0c;安全完善度等级&#xff08;SIL&#xff0c;Safety Integrity Level&#xff09;是一个至关重要的概念&#xff0c;它用于评估安全相关系统&#x…

Linux基础IO操作详解

C文件IO相关接口 fopen函数 pathname: 要打开的文件名字符串mode: 访问文件的模式 模式描述含义“r”读文件不存在失败返回null“r”读写文件不存在打开失败返回null&#xff0c;文件存在则从头开始覆盖现有的数据&#xff08;不会清空数据&#xff09;“w”写文件不存在创建…