【数据库8.0备份还原】之Percona XtraBackup

目录

    • Percona XtraBackup备份数据库
      • 1、Percona XtraBackup的介绍
      • 2、Percona XtraBackup安装
      • 3、Percona XtraBackup8.0的使用
        • 1.全库备份和还原
        • 2.增量备份和还原
        • 3.差异备份和还原
        • 4.差异备份和增量备份的区别
        • 5.压缩备份和还原

Percona XtraBackup备份数据库

yum源安装:网站: https://repo.percona.com/yum/

Percona XtraBackup 下载网站:https://repo.percona.com/yum/
https://www.percona.com/downloads
官方下载太慢

1、Percona XtraBackup的介绍

无论是 24x7 高负载服务器还是低事务量服务器 环境中,Percona XtraBackup 旨在实现无缝备份 过程,而不会中断生产中服务器的性能 环境。Percona XtraBackup (PXB) 是一个 100% 开源备份解决方案,为希望从 MySQL 的全面、响应迅速且经济灵活的数据库支持中受益的组织提供商业支持。

Percona XtraBackup 是世界上唯一的开源免费 MySQL 热备份 为 InnoDB 和 XtraDB 执行非阻塞备份的软件 数据库。使用 Percona XtraBackup,您可以获得以下优势:

快速可靠地完成备份
备份期间不间断的事务处理
节省磁盘空间和网络带宽
自动备份验证
由于恢复时间更快,正常运行时间更长

xtrabakackup有3个工具,分别是
xtrabakup、
innobakupex、

xbstream 通过流数据功能,可将备份内容打包并传给管道后的压缩工具进行压缩
xtrabackup 支持InnoDB,XtraDB
innobakupex 支持Myisam,InnoDB、XtraaDB
xbstream:以专有格式压缩 xtrabackup 输出的信息

支持的存储引擎:
Percona XtraBackup 可以备份 MySQL 8.0 服务器以及 Percona Server for MySQL with XtraDB、Percona Server for MySQL 8.0 和 Percona XtraDB Cluster 8.0 上的 InnoDB、XtraDB、MyISAM 和 MyRocks 表中的数据。
局限性:

1、Percona XtraBackup 8.0 目前不可能同时支持 8.0 之前的版本
2、Percona XtraBackup 2.4 支持 MySQL 和 Percona Server for MySQL 5.65.7 数据库
3、Percona XtraBackup 8.1 不支持对数据库进行备份 在 MySQL 8.1 之前的版本中创建,Percona Server for MySQL 或 Percona XtraDB 集群。

2、Percona XtraBackup安装

用阿里或者清华大学percona源yum安装Percona XtraBackup==
事例:我用的redhat9安装这个软件
写源仓库:
cat <>/etc/yum.repos.d/percona.repo
[percona]
name = Percona
baseurl = https://mirrors.tuna.tsinghua.edu.cn/percona/release/$releasever/RPMS/$basearch
enabled = 1
gpgcheck = 0

[epel]
name=epelrepo
baseurl=https://mirrors.aliyun.com/epel/$releasever/$basearch
gpgcheck=0
enable=1
eof

[root@manged ~]# yum list all| grep xtraback -i    查看xtraback有哪些软件包
报错
Errors during downloading metadata for repository 'epel':- Status code: 404 for https://mirrors.aliyun.com/epel/9/x86_64/repodata/repomd.xml (IP: 118.112.22.214)
错误:为仓库 'epel' 下载元数据失败 : Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried

去epel官网:https://docs.fedoraproject.org/en-US/epel/ 下载额外的软件包。

dnf install
https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

如果安装失败,就下载下来rpm安装:

[root@manged ~]# wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
[root@manged ~]# rpm -ivh epel-release-latest-9.noarch.rpm 
可以[root@manged ~]# yum repolist   查看
[root@manged ~]# yum list all| grep xtraback -i   好了耶
Repository epel is listed more than once in the configuration
holland-xtrabackup.noarch                                                                1.2.10-1.el9                                   epel               
percona-xtrabackup-24.x86_64                                                             2.4.28-1.el9                                   percona            
percona-xtrabackup-24-debuginfo.x86_64                                                   2.4.28-1.el9                                   percona            
percona-xtrabackup-24-debugsource.x86_64                                                 2.4.28-1.el9                                   percona            
percona-xtrabackup-80.x86_64                                                             8.0.35-30.1.el9                                percona            
percona-xtrabackup-80-debuginfo.x86_64                                                   8.0.35-30.1.el9                                percona            
percona-xtrabackup-80-debugsource.x86_64                                                 8.0.35-30.1.el9                                percona            
percona-xtrabackup-81.x86_64                                                             8.1.0-1.1.el9                                  percona            
percona-xtrabackup-81-debuginfo.x86_64                                                   8.1.0-1.1.el9

[root@manged ~]# yum install percona-xtrabackup-80
安装对应数据库版本的,速度快多了。

3、Percona XtraBackup8.0的使用

常用选项:  --host     指定主机--user     指定用户名--password    指定密码--port     指定端口--databases     指定数据库--incremental    创建增量备份--incremental-basedir   指定包含完全备份的目录--incremental-dir      指定包含增量备份的目录   --apply-log        对备份进行预处理操作 --defaults-file	  指定默认配置文件,默认是读取/etc/my.cf

一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处理不一致状态。“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态。
–redo-only 不回滚未提交事务
–copy-back 恢复备份目录

1.全库备份和还原

一、全库备份
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/backup -uroot -predhat -H localhost -P 3306

-p 后面是mysql的密码 -H 后面是主机,支持远程备份,-P是端口

   如果出现如下问题是在没有创建/data/backup/目录
2023-12-13T18:05:19.164770+08:00 0 [Note] [MY-011825] [Xtrabackup] Redo Log Archiving is not set up.
2023-12-13T18:05:19.257242+08:00 0 [ERROR] [MY-011825] [Xtrabackup] cannot mkdir: 2 /data/backup/

出现的这个没有权限问题:

2023-12-13T11:40:23.815725-05:00 0 [ERROR] [MY-011825] [Xtrabackup] failed to execute query 'LOCK INSTANCE FOR BACKUP' : 1227 (42000) 
Access denied; you need (at least one of) the BACKUP_ADMIN privilege(s) for this operation

解决方法:

GRANT BACKUP_ADMIN ON *.* TO 'root'@'localhost';  
FLUSH PRIVILEGES;

二、数据库恢复
删掉数据库:

先停掉数据库systemctl stop mysqld
rm -rf  /var/lib/mysql/*         mysql这个目录的所有者,所属组都是mysql   
这个目录删除之后,重启数据库就是一个全新的数据库

启动数据库,这时是一个全新的数据库。

备份之前要删除/var/lib/mysql/* 的文件,并且先停掉数据库,还原的时候数据库dead状态
先备份备份集:
备份后的数据并不处于一致性状态,为了可以用来恢复,需要使用-prepare准备备份集
[root@redhat ~]# xtrabackup --prepare --target-dir=/data/backup 准备数据备份集
[root@redhat ~]# xtrabackup --copy-back --target-dir=/data/backup 备份
然后chown mysql:mysql /var/lib/mysql/ -R
再重启数据库就完成了。非常完美!

注意:好像数据库版本不一样,还原的时候会出错

2.增量备份和还原

先进行全备:
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/backup -uroot -predhat -H localhost -P 3306
增备份1:
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/inc1 --incremental-basedir=/data/backup -uroot -predhat -H localhost -P 3306

解释:target-dir=/data/inc1中的inc1目录不用自己创建,--incremental-basedir=/data/backup增备份是在全备的基础上做得,这个参数是填全备的路径,全备和增备的目录要分开,不能放在一起。

增备份2:
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/inc2 --incremental-basedir=/data/inc1 -uroot -predhat -H localhost -P 3306

第二天也做了增量备份 ,incremental-basedir=/data/inc1,这里的参数是参照增备1里备份的,所以这个参数是填增备1的路径。

备份好后会在/data出现3个目录,一个是全备的数据,还有个增备1的数据,还有个增备2的数据。

恢复数据:
准备还原命令:
xtrabackup --defaults-file=/etc/my.cnf --prepare --apply-log-only --target-dir=/data/backup/

xtrabackup --defaults-file=/etc/my.cnf --prepare --apply-log-only --target-dir=/data/backup --incremental-dir=/data/inc1/

xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/backup --incremental-dir=/data/inc2/

以上命令就是把增量备份合并到完全备份的日志里,到时候直接还原完全备份的目录数据就行

注意:最好一次把增量备份恢复到全部不要加 --apply-log-only,不然会出现问题,说你没有准备好。

恢复数据到目录:
停止数据库并清空数据库目录
xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=/data/backup 恢复
chown mysql:mysql /var/lib/mysql/ -R 把文件的所有文件属组改成mysql

重启数据库,所有的数据都在,实验完成!👌
遇到问题:
当最后一次增备加了 --apply-log-only,还原的时候会报这个错误:

2023-12-15T08:03:29.481391-05:00 0 [Note] [MY-011825] [Xtrabackup] cd to /datas/backup/
2023-12-15T08:03:29.481464-05:00 0 [ERROR] [MY-011825] [Xtrabackup] The target is not fully prepared. Please prepare it without option --apply-log-only
解决方法:
xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/datas/backup/
xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=/datas/backup
解释:也就是在做一次全备份,并且全备的时候删除--apply-log-only,再进行还原,这时候就成功了。
3.差异备份和还原

先进行全备:
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/backup -uroot -predhat -H localhost -P 3306
增备份1:
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/inc1 --incremental-basedir=/data/backup -uroot -predhat -H localhost -P 3306
增备份2:
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/inc2 --incremental-basedir=/data/backup -uroot -predhat -H localhost -P 3306

解释:差异备份跟增量备份其实差不多,只不过增量备份每次的参照物是前一个,而差异备份的参照物就是全备

恢复数据:
准备还原命令:
xtrabackup --defaults-file=/etc/my.cnf --prepare --apply-log-only --target-dir=/data/backup/

xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/backup --incremental-dir=/data/inc2/

解释:准备还原只需要第一次备份和最后一次备份就行

恢复数据到目录:
停止数据库并清空数据库目录
xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=/data/backup 恢复
chown mysql:mysql /var/lib/mysql/ -R 把文件的所有文件属组改成mysql
重启数据库,所有的数据都在,差异备份实验完成!👌

4.差异备份和增量备份的区别

在这里插入图片描述
总结一下,感觉差异备份更好用。差异备份都是基于全备备份的,而且还原的 时候只需要准备全备和最后一次增量备份就行。

5.压缩备份和还原

xtrabackup --defaults-file=/etc/my.cnf --backup --compress --target-dir=/data/backup/compressed/ -uroot -predhat -H localhost -P3306
解释:compress就是压缩的命令,因为数据库的备份的数据比较大,占用的空间也比较多,而压缩就能减少文件大小。

xtrabackup --defaults-file=/etc/my.cnf --backup --compress-threads=4 --target-dir=/data/backup/compress/ -uroot -predhat -H localhost -P3306
如果要加速压缩,可以使用--compress-threads=4 ,使用四个线程同时进行压缩

解压缩和还原:
xtrabackup --defaults-file=/etc/my.cnf --decompress --target-dir=/data/backup/compressed/
解释:解压命令 --decompress,使用这个压缩的备份集在准备备份之前需要解压,解压工具是qpress(报错就安装这个),解压的原来的文件不会被删除,可以使用 --remove-original选项清除。

xtrabackup --prepare --target-dir=/data/backup/compressed/ 准备数据集
xtrabackup --copy-back --target-dir=/data/backup/compressed 还原

解释:跟全备一样的还原
chown mysql:mysql /var/lib/mysql/ -R 把文件的所有文件属组改成mysql
重启数据库,所有的数据都在,压缩备份实验完成!👌

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

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

相关文章

Spring基础属性一览:注释、对象装配、作用域、生命周期

在Spring中想要更简单的存储和读取对象的核心是使用注解&#xff0c;也就是我们接下来要学的Spring中相关注解。 之前我们存储Bean时&#xff0c;需要在自己添加的配置文件中添加一行bean才行&#xff1a; 而现在我们只需要一个注解就可以替代之前要写的一行配置的繁琐了。 …

消息队列的作用与使用场景?

一、消息队列的作用 队列的主要作用是消除高并发访问高峰&#xff0c;加快网站的响应速度。 在不使用消息队列的情况下&#xff0c;用户的请求数据直接写入数据库&#xff0c;在高并发的情况下&#xff0c;会对数据库造成巨大的压力&#xff0c;同时也使得系统响应延迟加剧。 …

基恩士PLC编程kv7000软件KV-STUDIO V11.63从入门到精通学习资料

恩士PLC软件KV-STUDIO V11.63是一款用于编程和配置基恩士PLC的软件。它提供了一个直观的界面&#xff0c;使用户能够轻松地创建和编辑PLC程序&#xff0c;并进行在线调试和监视。该软件还具有丰富的功能&#xff0c;包括数据记录、报警管理、远程访问等。此外&#xff0c;KV-ST…

HDFS WebHDFS 读写文件分析及HTTP Chunk Transfer Encoding相关问题探究

文章目录 前言需要回答的首要问题DataNode端基于Netty的WebHDFS Service的实现基于重定向的文件写入流程写入一个大文件时WebHDFS和Hadoop Native的块分布差异 基于重定向的数据读取流程尝试读取一个小文件尝试读取一个大文件 读写过程中的Chunk Transfer-Encoding支持写文件使…

《佛法修学概要》期中座谈(三)

大乘佛教&#xff0c;有很多的法门可以来修学。古德把整个大乘佛教的修学分成两个重点&#xff1a;一个叫作理观&#xff1b;一个叫作事修。不管你是什么法门&#xff0c;就理观跟事修两个重点。理观是属于对真理的观察&#xff0c;事修是法门的实际操作。 理观跟事修的关系&a…

postman 简单测试(二)

接着上一节 https://blog.csdn.net/myy2012/article/details/135616719 1.Tests的简单使用&#xff08;后置处理器&#xff09; 具体的截图是每一步操作后得来的&#xff0c;记录方便自己以后查阅&#xff0c;也希望能帮助到有缘人。 1.1 把返回值存入到环境变量中&#xff…

protobuf学习日记 | 初识protobuf

目录 前言 一、序列化与反序列化 二、protobuf是什么 三、protobuf的使用特点 四、快速上手 1、proto文件编写 2、编译proto文件 3、序列化与反序列化的使用 前言 这是小编新开的一个栏目&#xff0c;为了记录自己在学习ProtoBuf的历程&#xff0c;也希望能帮助大家&am…

Center项目创建——数据初始化(Linux/Windows版本)

本博客主要讲述Center的模块安装配置和数据初始化 1、定义安装Install函数&#xff0c;IP地址由makefile自动传入&#xff0c;也就是用户自动传入 bool Install(std::string ip); 2、编写Install函数 #define CENTER_CONF "ip bool XCenter::Install(std::string ip)…

亚马逊店飞飞ERP系统,跟卖+铺货+物流发货模式综合一体的ERP系统

跨境电商亚马逊&#xff0c;目前为止电商行业比较靠前的电商平台&#xff01;那么有人做电商&#xff0c;就会有人出单&#xff0c;有人出单就会有中转仓需求&#xff0c;代打包&#xff0c;代贴单&#xff01;那么这一切都是有一套逻辑完善的ERP来完成&#xff01;前端通过授权…

iptables使用

iptables简介 iptables 是 Linux 防火墙系统的重要组成部分&#xff0c;iptables 的主要功能是实现对网络数据包进出设备及转发的控制。当数据包需要进入设备、从设备中流出或者由该设备转发、路由时&#xff0c;都可以使用 iptables 进行控制。 iptables 是集成在 Linux 内核…

将.NET应用转换成Window服务

写在前面 本文介绍了将.NET8.0应用程序转换成Windows服务。 需要在NuGet中获取并安装&#xff1a;Microsoft.Extensions.Hosting.WindowsServices 包 代码实现 using System.Runtime.InteropServices; using WorkerService1;public class Program {public static void Main…

Kafka 简介

目录 1、概念介绍 Kafka 由来 ZooKeeper Kafka 特性 Kafka 使用场景 Kafka 复制备份 2、Kafka 架构 Broker Topic Producer Partition Consumers Consumer Group Distribution 1、概念介绍 Kafka 由来 Kafka 是最初由 Linkedin 公司开发&#xff0c;是一个分布…

aigc修复美颜学习笔记

目录 GFPGAN进行图像人脸修复 美颜 修复畸形手势 GFPGAN进行图像人脸修复 原文&#xff1a;本地使用GFPGAN进行图像人脸修复_人相修复处理网页 csdn-CSDN博客 人脸修复 1.下载项目和权重文件 2.部署环境 3.下载权重文件 4.运行代码 5.网页端体验 首先来看一下效果图 1.下…

uni-app的项目创建和环境搭建

uni-app 是一个使用 Vue.js 开发所有前端应用的框架&#xff0c;开发者编写一套代码&#xff0c;可发布到iOS、Android、Web&#xff08;响应式&#xff09;、以及各种小程序&#xff08;微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝&#xff09;、快应用等多个平台。 第一步…

clip安装使用教程

1.配置环境 安装依赖 pip install transformers pip install torch 看缺失什么包自己先安装好 2.安装clip 进入https://github.com/openai/CLIP&#xff0c;先将CLIP文件夹下载到本地&#xff0c;随便什么位置。即点击下图中的Download ZIP&#xff0c;下载到本地后进行解压…

HNU-编译原理-实验2-Bison

编译原理实验2Bison 计科210X 甘晴void 202108010XXX 实验要求 详细的实验项目文档为 https://gitee.com/coderwym/cminus_compiler-2023-fall/tree/master/Documentations/lab2 实验步骤 本次实验需要在 Lab1 已完成的 flex 词法分析器的基础上&#xff0c;进一步使用 b…

某侠网js逆向wasm解析

本次目标地址如下&#xff0c;使用base64解密获得 aHR0cHM6Ly93d3cud2FpbWFveGlhLm5ldC9sb2dpbg 打开网址&#xff0c;本次的目标是登录接口&#xff0c;如下图 本文主要讲解wasm的解析&#xff0c;所以对其他参数不做逆向处理&#xff0c;本次由wasm加密的参数只有sign一个&a…

DApp:去中心化的革命与挑战

DApp&#xff08;去中心化应用&#xff09;是一种基于区块链技术的应用程序&#xff0c;与传统的中心化应用程序不同&#xff0c;DApp具有去中心化、透明、不可篡改等特性。本文将介绍DApp的前世今生&#xff0c;以及它的优势和未来发展。 DApp的前世可以追溯到区块链技术的出现…

Java函数式编程最佳实践

别人说烂了的stream api不就不想赘述了&#xff0c;我想和大家分享一下&#xff0c;如何用函数式编程来简化我们的开发&#xff0c;想说点不一样的东西 转载链接 简化事务 对于事务而言&#xff0c;应该粒度越小越好&#xff0c;并且读写逻辑应该分开&#xff0c;只在写的逻辑…