【MySQL备份】Percona XtraBackup加密备份实战篇

news2024/10/7 4:34:01

目录

 1.前言

2.准备工作

2.1.环境信息

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

 2.3.授予root用户BACKUP_ADMIN权限

 2.4.生成加密密钥

 2.5.配置加密密钥文件

3.加密备份 

4.优化加密过程

5.解密加密备份

 6.准备加密备份

 7.恢复加密备份

7.1.使用rsync进行恢复

 7.2.使用xtrabackup命令恢复

8.总结


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

 1.前言

继探索了【MySQL备份】Percona XtraBackup压缩备份实战篇后,本文将进一步深入,揭开Percona XtraBackup加密备份的神秘面纱,解锁数据安全的高级实践策略。

在数据保护日益重要的今天,仅仅实现备份是不够的,确保备份数据的私密性和安全性成为新的挑战。Percona XtraBackup,这一MySQL备份领域的佼佼者,不仅以其快速、高效著称,还内置了强大的加密功能,为你的数据库备份穿上坚不可摧的防护盔甲。本篇文章将引领你步入加密备份的实战殿堂,细致剖析如何在Percona XtraBackup中实施加密备份,为敏感信息构建一道坚固的安全防线。

我们不仅会介绍如何启用加密选项,选用合适的加密算法(如AES128、AES192、AES256)来为备份过程加码,还会深入讨论密钥管理的策略与实践,确保加密密钥如同保险箱的钥匙,既强大又安全地守护着你的数据宝藏。同时,考虑到实际操作中的效率与安全性平衡,文中还将涵盖并行加密技术的应用,让你在享受加密带来的安全保障的同时,也能保持备份的高效性。

此外,文章还将指导你如何在需要时,正确且安全地利用之前加密的备份进行数据恢复,确保在任何紧急情况下,都能迅速且无缝地恢复数据,让业务连续性得到最强有力的保障。

总之,本文不仅是对Percona XtraBackup加密备份功能的一次全面梳理,更是一份实战手册,旨在帮助你掌握高级数据保护技能,无论面对何种威胁,都能确保数据的绝对安全。让我们一起深入探究,为你的数据库备份战略增添一份不容忽视的安全力量。

2.准备工作

2.1.环境信息

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

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

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

 2.3.授予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提供了更小的性能影响,因为它不会完全阻止写操作,只是限制了可能引起数据不一致的活动,更适合于高可用性和高性能要求的生产环境。

 2.4.生成加密密钥

openssl rand -base64 24

 2.5.配置加密密钥文件

echo -n "VCGgD7I04P/kBhwSzBUvK4fyT214H9XP" > /data/keyfile

3.加密备份 

xtrabackup --backup --target-dir=/data/backups --encrypt=AES256 \
--encrypt-key="VCGgD7I04P/kBhwSzBUvK4fyT214H9XP"

或者

xtrabackup --backup --target-dir=/data/backups/ --encrypt=AES256 \
--encrypt-key-file=/data/keyfile

 

4.优化加密过程

 加密备份中引入了两个选项,可用于 加快加密过程这些是 xtrabackup --encrypt-threads和 xtrabackup --encrypt-chunk-size.通过使用 xtrabackup --encrypt-threads选项 可以指定多个线程用于并行加密。选项xtrabackup --encrypt-chunk-size可用于指定大小(以 字节)(默认值为 64K)。

5.解密加密备份

xtrabackup --decrypt=AES256 --encrypt-key-file=/data/keyfile \
--target-dir=/data/backups/

 

 6.准备加密备份

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

 7.恢复加密备份

7.1.使用rsync进行恢复

停止MySQL服务进行恢复数据  

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

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

 chown -R mysql.mysql /var/lib/mysql

重启MySQL服务

systemctl start mysqld

 7.2.使用xtrabackup命令恢复

使用xtrabackup命令恢复之前需要删除MySQL数据目录

rm -rf /var/lib/mysql/*

停止MySQL服务

systemctl stop mysqld

xtrabackup有一个xtrabackup --copy-back选项,它执行 将备份恢复到服务器的datadir

xtrabackup --copy-back --target-dir=/data/backups/

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

 chown -R mysql.mysql /var/lib/mysql

 重启MySQL服务

systemctl start mysqld

8.总结

本篇文章和前面的文章其实没有什么区别,都是利用不同的参数实现不同的需求。本篇文章还介绍到了使用xtrabackup命令恢复备份,这里有个缺点就是要清除MySQL的数据目录下面的数据,而之前使用的rsync则不需要这个过程。

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

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

相关文章

go Channel原理 (四)

Channel 设计原理 不要通过共享内存的方式进行通信,而是应该通过通信的方式共享内存。 在主流编程语言中,多个线程传递数据的方式一般都是共享内存。 Go 可以使用共享内存加互斥锁进行通信,同时也提供了一种不同的并发模型,即通…

终极指南:RNNS、Transformers 和 Diffusion 模型

一、说明 作为广泛使用这些工具和模型的人,我的目标是解开 RNN、Transformer 和 Diffusion 模型的复杂性和细微差别,为您提供详细的比较,为您的特定需求提供正确的选择。 无论您是在构建语言翻译系统、生成高保真图像,还是处理时间…

【ACM出版,马来西亚-吉隆坡举行】第四届互联网技术与教育信息化国际会议 (ITEI 2024)

作为全球科技创新大趋势的引领者,中国不断营造更加开放的科技创新环境,不断提升学术合作的深度和广度,构建惠及各方的创新共同体。这是对全球化的新贡献,是构建人类命运共同体的新贡献。 第四届互联网技术与教育信息化国际学术会议…

【CSAPP】-binarybomb实验

目录 实验目的与要求 实验原理与内容 实验设备与软件环境 实验过程与结果(可贴图) 操作异常问题与解决方案 实验总结 实验目的与要求 1. 增强学生对于程序的机器级表示、汇编语言、调试器和逆向工程等方面原理与技能的掌握。 2. 掌握使用gdb调试器…

【ONLYOFFICE】| 桌面编辑器从0-1使用初体验

目录 一. 🦁 写在前面二. 🦁 在线使用感受2.1 创建 ONLYOFFICE 账号2.2 编辑pdf文档2.3 pdf直接创建表格 三. 🦁 写在最后 一. 🦁 写在前面 所谓桌面编辑器就是一种用于编辑文本、图像、视频等多种自媒体的软件工具,具…

.NET周刊【6月第5期 2024-06-30】

国内文章 呼吁改正《上海市卫生健康信息技术应用创新白皮书》 C# 被认定为A 组件 的 错误认知 https://www.cnblogs.com/shanyou/p/18264292 近日,《上海市卫生健康“信息技术应用创新”白皮书》发布,提到医疗信创核心应用适配方法及公立医院信息系统…

thinksboard新建table表格

html文件 <div fxFlex fxLayoutAlign"left top" style"display: block"> <!-- <mat-card appearance"raised" style"max-height: 80vh; overflow-y: auto;">--><div><button mat-raised-button (click)&…

linux和mysql基础指令

Linux中nano和vim读可以打开记事文件。 ifdown ens33 ifup ens33 关闭&#xff0c;开启网络 rm -r lesson1 gcc -o code1 code1.c 编译c语言代码 ./code1 执行c语言代码 rm -r dir 删除文件夹 mysql> show databases-> ^C mysql> show databases; -------…

基于STM32的卫星GPS路径记录仪

目录 引言环境准备卫星GPS路径记录仪基础代码实现&#xff1a;实现卫星GPS路径记录仪 4.1 数据采集模块4.2 数据处理与分析4.3 存储系统实现4.4 用户界面与数据可视化应用场景&#xff1a;路径记录与分析问题解决方案与优化收尾与总结 1. 引言 卫星GPS路径记录仪通过使用STM…

第十四届蓝桥杯省赛C++B组A题【日期统计】题解(AC)

题目大意 给定的字符串中&#xff0c;有几个子序列是 2023 2023 2023 年的日期&#xff08;每个日期只能算一次&#xff09;。 法一 枚举所有长度为 8 8 8 的子序列&#xff0c;判断是否是有效日期并去重&#xff0c;时间复杂度 O ( C 100 8 ) O(C^8_{100}) O(C1008​)。…

秋招Java后端开发冲刺——并发篇1(线程与进程、多线程)

一、进程 1. 进程 进程是程序的一次动态执行过程&#xff0c;是操作系统资源分配的基本单位。 2. 进程和线程的区别 特性进程线程定义独立运行的程序实例&#xff0c;资源分配的基本单位进程中的一个执行单元&#xff0c;CPU调度的基本单位资源进程拥有独立的内存空间和资源线…

Java_多线程:线程池

1、线程池优点&#xff1a; 降低资源消耗&#xff1a;通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度&#xff1a;当任务到达时&#xff0c;任务可以不需要等到线程创建就能立即执行。提高线程的可管理性&#xff1a;线程是稀缺资源&#xff0c;如果无限…

c语言的烫烫烫烫烫??

当初学习C语言时&#xff0c;对于一些特殊的打印输出可能会感到困惑&#xff0c;比如会出现一堆乱码烫烫烫的情况。其实这是因为在C语言中&#xff0c;对于字符类型和数字类型之间的隐式转换可能会导致打印输出的结果不符合预期。这并不意味着程序员"烫"&#xff0c;…

鸿蒙开发Ability Kit(程序访问控制):【安全控件概述】

安全控件概述 安全控件是系统提供的一组系统实现的ArkUI组件&#xff0c;应用集成这类组件就可以实现在用户点击后自动授权&#xff0c;而无需弹窗授权。它们可以作为一种“特殊的按钮”融入应用页面&#xff0c;实现用户点击即许可的设计思路。 相较于动态申请权限的方式&am…

Dify入门指南

一.Dify介绍 生成式 AI 应用创新引擎&#xff0c;开源的 LLM 应用开发平台。提供从 Agent 构建到 AI workflow 编排、RAG 检索、模型管理等能力&#xff0c;轻松构建和运营生成式 AI 原生应用&#xff0c;比 LangChain 更易用。一个平台&#xff0c;接入全球大型语言模型。不同…

Google地图获取位置的前端代码与测试

test.html <script src"http://maps.google.com/maps/api/js?sensorfalse"></script> <script > if (navigator.geolocation) {  console.log(Geolocation is supported!);// var startPos;var geoSuccess function(position) {startPos p…

MySQL4(事务、函数、慢查询和索引)

目录 一、MySQL事务 1. 概念 2. 事务的ACID原则 3. MySQL实现事务的方法 4. MySQL实现事务的步骤 5. 事务的原子性、一致性、持久性 6. 事务的隔离性 7. MySql中的锁 1. 共享锁 2. 排他锁 3. 行级锁 4. 表级锁 5. 间隙锁 6. 临键锁 7. 记录锁 8. 意向共享锁…

236、二叉树的最近公共祖先

前提&#xff1a; 所有 Node.val 互不相同 。p ! qp 和 q 均存在于给定的二叉树中。 代码如下&#xff1a; class Solution { public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {if (root q || root p || root NULL) return root;TreeN…

赛灵思FFT的IP核——非实时模式 Non real time

一、IP核配置 使用非实时模式配置如下 二、时序 是遵守AXIS协议的&#xff0c;不像real time mode&#xff0c;一旦开始吭哧吭哧的读数据&#xff0c;根本不管s_axis_data_tvalid信号了。 三、资源消耗 在implement查看两者的资源消耗差不多 四、仿真 4.1 中间不停顿 输入…

uniapp微信接口回调 response.sendRedirect nginx 报404错误

如题 参考 uniapp打包H5时,访问index.html页面白屏报错net::ERR_ABORTED 404 - 简书 nginx中修改 配置文件 location / { try_files $uri $uri/ /index.html; root html; index index.html index.htm; } uniapp里配置 重新载入