使用第三方工具percona-xtrabackup进行数据备份与恢复

news2024/11/17 19:48:18

目录

准备工作

开始安装

innobackupex的使用

完全备份

增量备份

数据恢复


本次需要用到的软件

  • mysql 5.7.35
  • percona-xtrabackup-24-2.4.8

ps:---MySQL必须是5.7的版本,在8.0之后已经不支持 percona-xtrabackup-24

系统版本CentOS7.9

准备工作

下载软件percona-xtrabackup

链接  Software Downloads - Percona

当然,假如使用RHEL 9 或者 Rocky Linux 9 以上的版本 软件的版本也要求变高,如图所示

这两个是mysql的扩展包也需要安装

mysql-community-libs-compat-5.7.35-1.el7.x86_64.rpm
mysql-community-devel-5.7.35-1.el7.x86_64.rpm

由于安装此原件需要过多的扩展包,配置阿里云镜像源

wget -O https://mirrors.aliyun.com/repo/Centos-7.repo
[root@localhost script] yum makecache 
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
base                                                                          | 3.6 kB  00:00:00     
extras                                                                        | 2.9 kB  00:00:00     
local                                                                         | 3.6 kB  00:00:00     
percona-release-noarch                                                        | 1.5 kB  00:00:00     
percona-release-x86_64                                                        | 2.9 kB  00:00:00     
prel-release-noarch                                                           | 1.5 kB  00:00:00     
updates                                                                       | 2.9 kB  00:00:00     
元数据缓存已建立

或者可以在官方源中寻找yum仓库

yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm

开始安装

(CentOS 7.9)

[root@localhost src] ls
mysql  percona-xtrabackup-24-2.4.8-1.el7.x86_64.rpm

[root@localhost src] yum localinstall percona-xtrabackup-24-2.4.8-1.el7.x86_64.rpm 
已加载插件:fastestmirror, langpacks
正在检查 percona-xtrabackup-24-2.4.8-1.el7.x86_64.rpm: percona-xtrabackup-24-2.4.8-1.el7.x86_64
percona-xtrabackup-24-2.4.8-1.el7.x86_64.rpm 将被安装
正在解决依赖关系
--> 正在检查事务
---> 软件包 percona-xtrabackup-24.x86_64.0.2.4.8-1.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

========================================================================================
 Package             架构   版本        源                                         大小
========================================================================================
正在安装:
 percona-xtrabackup-24
                     x86_64 2.4.8-1.el7 /percona-xtrabackup-24-2.4.8-1.el7.x86_64  31 M

事务概要
========================================================================================
安装  1 软件包

总计:31 M
安装大小:31 M
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : percona-xtrabackup-24-2.4.8-1.el7.x86_64                            1/1 
  验证中      : percona-xtrabackup-24-2.4.8-1.el7.x86_64                            1/1 

已安装:
  percona-xtrabackup-24.x86_64 0:2.4.8-1.el7                                            

完毕!

Percona XtraBackup 2.4 版本主要提供了两个核心命令来进行MySQL的备份操作:

xtrabackup:这个命令是用于InnoDB和XtraDB存储引擎的物理备份工具,专注于高效、可靠的热备份。它能够执行全备(full backup)和增量备份(incremental backup),并在备份过程中不影响数据库的正常运行。

innobackupex:这是一个封装脚本,实际上是对xtrabackup命令的封装和扩展,旨在提供与mysqldump类似的使用体验,同时结合MyISAM等非事务表的支持。通过innobackupex,可以对包含InnoDB和非InnoDB表的MySQL实例进行热备份,它能够处理全备、增量备份以及备份的准备(prepare)阶段,以便备份文件可以被直接用于恢复。

innobackupex的使用

完全备份

[root@localhost src] innobackupex --user=root --password=Openlab123! --no-timestamp /db/full

这条命令是用来使用innobackupex工具执行一次MySQL数据库的全量备份操作。具体参数解释如下:

  • innobackupex:是命令名称,表示要使用的工具是Percona XtraBackup的封装脚本,用于执行MySQL数据库备份。

  • --user=root:指定连接MySQL数据库的用户名为root。这是备份操作需要的数据库用户权限,用户必须拥有足够的权限来读取数据库的所有数据。

  • --password=Openlab123!:指定连接MySQL数据库的密码为Openlab123!。请注意,在实际使用中直接在命令行中暴露密码可能会有安全风险,建议通过其他更安全的方式传递密码,如使用环境变量或配置文件。

  • --no-timestamp此选项指示innobackupex不要在备份目录名中自动添加时间戳。默认情况下,innobackupex会在备份目标目录后面加上一个时间戳,以区分不同的备份。如果使用--no-timestamp,则备份会被直接放在指定的目录下,这可能导致覆盖之前的备份,需谨慎使用。

  • /db/full:这是指定的备份目标目录。备份将会被保存到这个路径下。如果没有提供绝对路径,那么路径会被认为是相对于当前工作目录的。由于使用了--no-timestamp,所有备份文件都会直接存放在/db/full目录下,没有子目录区分。

该命令执行的操作是:以root用户身份,使用密码Openlab123!登录MySQL数据库,并执行一次全量备份,备份文件将被保存到/db/full目录下,且不会在目录名后添加时间戳。请确保在执行此类备份操作前,已正确配置MySQL的访问权限,并考虑备份文件的管理策略,避免无意识的覆盖重要备份。

使用root账号实现效果

使用其他账号需要增加权限

创建用户
mysql> CREATE USER 'backup'@'localhost' IDENTIFIED BY 'password';

给予用户权限
mysql> grant SELECT,RELOAD,SHOW DATABASES,LOCK TABLES,SUPER,PROCESS,REPLICATION CLIENT on *.* to backup@'localhost' identified by 'Openlab123!'
[root@localhost src] rm -rf /db
[root@localhost src] innobackupex --user=backup --password=Openlab123! --no-timestamp /db/full

同样也能实现功能

查看备份的目录

[root@localhost src]# ls /db/full/
backup-my.cnf   ibdata1      MyScl  performance_schema  xtrabackup_checkpoints  xtrabackup_logfile
ib_buffer_pool  Myschool_db  mysql  sys                 xtrabackup_info

增量备份

在执行增量备份之前,你需要有一个全量备份的基础。增量备份基于上一次的备份进行,只备份自那之后发生变化的数据。

[root@localhost src] innobackupex --user=backup --password=Openlab123! --host=localhost --port=3306 --incremental /db/incr_v1  --incremental-basedir=/db/full

这里,--incremental-basedir指定了上一次全量备份的位置。

实现效果

数据恢复

已经完成了备份的准备阶段,现在要恢复数据:

  1. 停止MySQL服务:确保MySQL服务已经停止。

  2. 复制备份文件:将备份文件复制到MySQL的数据目录(通常是/var/lib/mysql)或者你自定义的数据存放位置。

  3. 调整文件所有权和权限:确保MySQL服务用户(如mysql:mysql)拥有这些文件的适当权限。

  4. 启动MySQL服务:启动MySQL服务,数据应该已经被恢复到备份时的状态。

请注意,实际操作时务必根据系统环境和需求进行适当的调整。此外,定期检查和验证备份的有效性是非常重要的,以确保在真正需要时能够成功恢复数据。

以下是一个完整的恢复示例(已经备份好数据了):

停止MySQL服务: 首先,确保MySQL服务已经停止,以避免数据不一致的问题。在大多数Linux系统上,可以通过以下命令实现:

systemctl stop mysql

准备恢复目录: 确保MySQL的数据目录为空或已移除旧数据(小心操作,避免误删生产数据!)

[root@localhost ~] ls /var/lib/mysql
auto.cnf         ib_buffer_pool  MyScl               public_key.pem
back_db          ibdata1         mysql               server-cert.pem
ca-key.pem       ib_logfile0     mysql.sock          server-key.pem
ca.pem           ib_logfile1     mysql.sock.lock     sys
client-cert.pem  ibtmp1          performance_schema
client-key.pem   Myschool_db     private_key.pem

[root@localhost ~] rm -rf /var/lib/mysql/*

复制备份文件: 将备份的文件复制到MySQL的数据目录。--copy-back选项会自动处理文件复制和权限调整。

[root@localhost ~] innobackupex --copy-back /db/full/

调整权限: 如果在复制过程中权限没有被自动调整,可能需要手动调整MySQL数据目录的权限,确保MySQL服务用户(如 mysql:mysql)有正确的访问权限。

[root@localhost ~] ll /var/lib/mysql
总用量 12324
drwxr-x---. 2 root root       48 5月  31 14:25 back_db
-rw-r-----. 1 root root      282 5月  31 14:25 ib_buffer_pool
-rw-r-----. 1 root root 12582912 5月  31 14:25 ibdata1
drwxr-x---. 2 root root      166 5月  31 14:25 Myschool_db
drwxr-x---. 2 root root      254 5月  31 14:25 MyScl
drwxr-x---. 2 root root     4096 5月  31 14:25 mysql
drwxr-x---. 2 root root     8192 5月  31 14:25 performance_schema
drwxr-x---. 2 root root     8192 5月  31 14:25 sys
-rw-r-----. 1 root root      434 5月  31 14:25 xtrabackup_info

# 给予权限
[root@localhost ~] chown -R mysql:mysql /var/lib/mysql

[root@localhost ~] ll -a /var/lib/mysql
总用量 122964
drwxr-x--x.  8 mysql mysql     4096 5月  31 14:27 .
drwxr-xr-x. 64 root  root      4096 5月  30 10:49 ..
-rw-r-----.  1 mysql mysql       56 5月  31 14:27 auto.cnf
drwxr-x---.  2 mysql mysql       48 5月  31 14:25 back_db
-rw-------.  1 mysql mysql     1680 5月  31 14:27 ca-key.pem
-rw-r--r--.  1 mysql mysql     1112 5月  31 14:27 ca.pem
-rw-r--r--.  1 mysql mysql     1112 5月  31 14:27 client-cert.pem
-rw-------.  1 mysql mysql     1680 5月  31 14:27 client-key.pem
-rw-r-----.  1 mysql mysql      282 5月  31 14:25 ib_buffer_pool
-rw-r-----.  1 mysql mysql 12582912 5月  31 14:27 ibdata1
-rw-r-----.  1 mysql mysql 50331648 5月  31 14:27 ib_logfile0
-rw-r-----.  1 mysql mysql 50331648 5月  31 14:27 ib_logfile1
-rw-r-----.  1 mysql mysql 12582912 5月  31 14:27 ibtmp1
drwxr-x---.  2 mysql mysql      166 5月  31 14:25 Myschool_db
drwxr-x---.  2 mysql mysql      254 5月  31 14:25 MyScl
drwxr-x---.  2 mysql mysql     4096 5月  31 14:25 mysql
srwxrwxrwx.  1 mysql mysql        0 5月  31 14:27 mysql.sock
-rw-------.  1 mysql mysql        6 5月  31 14:27 mysql.sock.lock
drwxr-x---.  2 mysql mysql     8192 5月  31 14:25 performance_schema
-rw-------.  1 mysql mysql     1680 5月  31 14:27 private_key.pem
-rw-r--r--.  1 mysql mysql      452 5月  31 14:27 public_key.pem
-rw-r--r--.  1 mysql mysql     1112 5月  31 14:27 server-cert.pem
-rw-------.  1 mysql mysql     1676 5月  31 14:27 server-key.pem
drwxr-x---.  2 mysql mysql     8192 5月  31 14:25 sys
-rw-r-----.  1 mysql mysql      434 5月  31 14:25 xtrabackup_info

启动MySQL服务: 最后,重新启动MySQL服务以加载恢复的数据。

[root@localhost ~] systemctl start mysql

验证数据恢复: 登录MySQL,检查数据库是否正确恢复。

[root@localhost ~] mysql -u root -p
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| MyScl              |
| Myschool_db        |
| back_db            |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

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

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

相关文章

面试题 17.05. 字母与数字(前缀和)

给定一个放有字母和数字的数组,找到最长的子数组,且包含的字母和数字的个数相同。 返回该子数组,若存在多个最长子数组,返回左端点下标值最小的子数组。若不存在这样的数组,返回一个空数组。 示例 1: 输入: ["…

SpringBoot+layui实现Excel导入操作

excel导入步骤 第三方插件引入插件 效果图 (方法1)代码实现(方法1)Html代码( 公共)下载导入模板 js实现 (方法1)上传文件实现 效果图(方法2)代码实现&#xf…

一碗米线火了24年,蒙自源六一再献新作

当一碗热气腾腾的米线在餐桌上飘香四溢,你是否会想起那个陪伴了无数食客24年的名字——蒙自源?在这个充满欢笑与童真的六一儿童节,蒙自源米线品牌再度发力,用全新的儿童餐系列为孩子们带来了一份特别的节日礼物。 蒙自源&#xf…

性价比为王,物流商怎么选择高效的国际物流管理平台

在全球化贸易日益繁荣的今天,国际物流行业作为链接国内商家和海外市场的重要桥梁,发挥着极其重要的作用。 然而,随着国际物流市场竞争的加剧,对物流商来说,也面临着成本管控和效率提升的双重挑战。今天我们会重点探讨…

AI之下 360让PC商业生态大象起舞

时隔7年,淘宝PC版在前不久迎来重磅升级,在产品体验、商品供给、内容供给等方面做了全面优化,以全面提升PC端的用户体验;当大家都以为移动互联网时代下APP将成为主流时,PC端却又成为了香饽饽。其实PC端被重视&#xff0…

【Qt】【模型视图架构】代理模型示例

文章目录 1. 基本排序/过滤模型Basic Sort/Filter Model Example2. 自定义排序/过滤模型Custom Sort/Filter Model ExampleFilterLineEdit类定义及实现MySortFilterProxyModel类定义及实现 1. 基本排序/过滤模型Basic Sort/Filter Model Example 官方提供的基本排序/过滤模型示…

LeetCode42:接雨水

题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 代码 单调栈 class Solution { public:int trap(vector<int>& height) {stack<int> stk;int result 0;stk.push(0);for (int …

Android设备获取OAID调研和实现

什么是OAID、AAID、VAID OAID OAID是"Android ID"&#xff08;安卓ID&#xff09;的一种替代方案&#xff0c;其全称为"Open Anonymous Identifier"&#xff08;开放匿名标识符&#xff09;。 因传统的移动终端设备标识如国际移动设备识别码&#xff08;…

【Python内功心法】:深挖内置函数,释放语言潜能

文章目录 &#x1f680;一、常见内置函数&#x1f308;二、高级内置函数⭐1. enumerate函数&#x1f44a;2. eval函数❤️3. exec函数&#x1f4a5;4. eval与exec 中 globals与locals如何用☔4-1 globals 参数&#x1f3ac;4-2 locals 参数 ❤️5. filter函数&#x1f44a;6. z…

发电机组故障的原因、解决方案及解决措施

发电机组故障的原因、解决方案及解决措施可以总结如下&#xff1a; 一、故障原因 供电中断 原因&#xff1a;电网故障、线路短路或电力负荷过重等。 燃油问题 原因&#xff1a;燃油供应系统问题&#xff0c;如燃油管路堵塞、燃油质量不佳等。 轴承过热 原因&#xff1a;轴承过…

小学生四则运算练习器,用户可以选择进行加减乘除任意一项,也可以选择退出,然后每次计算后会提示正确与否,最后计算总分然后并给出评语。

⑴ 用户可以从菜单中选择某种运算进行练习。具体包括&#xff1a;加法&#xff0c;减法&#xff0c;乘法&#xff0c;除法&#xff1b;也可以退出程序. ⑵ 用户可以指定每次练习的题目数量、设置练习的总分&#xff1b; ⑶ 每小题练习后给出结果正确与否的提示&#xff1b;一…

【机器学习】智能选择的艺术:决策树在机器学习中的深度剖析

在机器学习的分类和回归问题中&#xff0c;决策树是一种广泛使用的算法。决策树模型因其直观性、易于理解和实现&#xff0c;以及处理分类和数值特征的能力而备受欢迎。本文将解释决策树算法的概念、原理、应用、优化方法以及未来的发展方向。 &#x1f680;时空传送门 &#x…

基于单片机的微型嵌入式温度测量仪的设计与实现分析

摘要 &#xff1a; 作为信息技术中重要的技术手段之一嵌入式单片机系统已经被应用到越来越多不同的行业领域中。如&#xff0c;各种手持监测设备、智能家电设备等。当前展开对单片机的微型嵌入式温度测量仪的设计和实现研究&#xff0c;从微型嵌入式单片机相关理论入手&#xf…

Java Apache Jaccard文本相似度匹配初体验

文章目录 前言一、文本相似度算法的选择二、常见的文本相似度算法介绍三、使用示例1、引入jar包2、方法示例3、Jaccard源码剖析4、Jaccard源码解释 写在最后 前言 产品今天提了个需求&#xff0c;大概是这样的&#xff0c;来&#xff0c;请看大屏幕。。。额。。。搞错了&#…

IDEA插件开发:自动生成setter

背景 在给Java局部变量的实体赋值时&#xff0c;往往有很多setter&#xff0c;一个一个写很麻烦&#xff0c;也会漏掉&#xff0c;因此开发一款插件&#xff0c;可以自动生成局部变量实体的所有setter。 插件效果如下&#xff1a; 可以在plugin marketplace 搜索&#xff1…

Nginx 1.26.0 爆 HTTP/3 QUIC 漏洞,建议升级更新到 1.27.0

据悉&#xff0c;Nginx 1.25.0-1.26.0 主线版本中涉及四个与 NGINX HTTP/3 QUIC 模块相关的中级数据面 CVE 漏洞&#xff0c;其中三个为 DoS 攻击类型风险&#xff0c;一个为随机信息泄漏风险&#xff0c;影响皆为允许未经身份认证的用户通过构造请求实施攻击。目前已经紧急发布…

【ARM-Linux篇】u-boot编译

一、u-boot简介 uboot是一种通用的引导加载程序&#xff0c;它可以用于多种嵌入式系统&#xff0c;支持多种操作系统&#xff0c;如Linux, Android,NetBSD等。uboot的主要作用是将操作系统内核从存储设备&#xff08;如Flash, SD卡等&#xff09;加载到内存中&#xff0c;并执…

Thread的stop和interrupt的区别

Thread.stop Thread.stop()方法已被废弃。 因为本质上它是不安全的&#xff0c;使用该方法可能会导致数据、资源不一致的问题&#xff0c; public class ThreadDemo {static class MyThread extends Thread {Overridepublic void run() {while (true) {try {Thread.sleep(10…

C#WPF数字大屏项目实战03--数据内容区域

1、内容区域划分 第一行标题&#xff0c;放了几个文本框 第二行数据&#xff0c;划分成3列布局 2、第1列布局使用UniformGrid控件 最外面放UniformGrid&#xff0c;然后里面放3个GroupBox控件&#xff0c;这3个groupbox都是垂直排列 3、GroupBox控件模板 页面上的3个Group…

基于SSM的“健身俱乐部网站”的设计与实现(源码+数据库+文档)

基于SSM的“健身俱乐部网站”的设计与实现&#xff08;源码数据库文档) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SSM 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 用户注册界面图 系统登录界面 添加管理员账户界面…