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

目录

准备工作

开始安装

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                |
+--------------------+

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于tensorflow和NasNet的皮肤癌分类项目

数据来源 https://challenge.isic-archive.com/data/#2019 数据划分 写了个脚本划分 for line in open(ISIC/labels.csv).readlines()[1:]:split_line line.split(,)img_file split_line[0]benign_malign split_line[1]# 0.8 for train, 0.1 for test, 0.1 for validati…

前端Vue自定义带加减按钮的数字输入框组件的设计与实现

随着前端技术的不断发展,开发的复杂度日益提升。传统的整块应用开发方式在面对小改动或小功能增加时,常常需要修改大量代码,导致整个系统的逻辑受到影响。为了解决这个问题,组件化开发成为了前端开发的必然趋势。 一、组件化开发…

【Python系列】Python 元组(Tuple)详解

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

springboot结合mybatis使用多数据源的方式

背景 最近有一个需求,有两个库需要做同步数据,一个Doris库,一个mysql库,两边的表结构一致,这里不能使用navicat等工具提供的数据传输之类的功能,只能使用代码做同步,springboot配置多数据…

乐高小人分类项目

数据来源 LEGO Minifigures | Kaggle 建立文件目录 BASE_DIR lego/star-wars-images/ names [YODA, LUKE SKYWALKER, R2-D2, MACE WINDU, GENERAL GRIEVOUS ] tf.random.set_seed(1)# Read information about dataset if not os.path.isdir(BASE_DIR train/):for name in …

GPT-4o:新一代人工智能技术的全方位解析引言

目录 🐋引言 🐋梳理 GPT 各版本之间的内容 🦈GPT-1:开创性的起点 🦈 GPT-2:参数规模的大幅提升 🦈 GPT-3:参数爆炸与多任务学习 🦈GPT-4:进一步提升的智…

嵌入式模块学习小记(未分类)

L298N电机驱动板模块 Output A:接DC 电机 1 或步进电机的 A和 A-; Output B:接DC 电机 2 或步进电机的 B和 B-; 5V Enable:如果使用输入电源大于12V的电源,请将跳线帽移除。输入电源小于12V时短接可以提…

【Python面试50题】

1. **基础概念** 1. Python 是解释型还是编译型语言? 2. 什么是 Python 的 GIL(全局解释器锁)? 3. 如何理解 Python 中的可变与不可变数据类型? 4. 解释一下 Python 中的 pass 语句。 5. Python 中的列…

让低代码平台插上AI的翅膀 - 记开源驰骋AI平台升级

让低代码系统插上AI的翅膀——驰骋低代码开发平台引领新时代 在当今日新月异的科技世界中,人工智能(AI)已经成为各个行业不可或缺的一部分。从制造业的自动化生产到金融行业的智能风控,再到医疗领域的精准诊断,AI技术…

FPGA-ARM架构与分类

ARM架构,曾称进阶精简指令集机器(Advanced RISC Machine)更早称作Acorn RISC Machine,是一个32位精简指令集(RISC)处理器架构。 主要是根据FPGA zynq-7000的芯片编写的知识思维导图总结,废话不多说自取吧 …

GPT LoRA 大模型微调,生成猫耳娘

往期热门专栏回顾 专栏描述Java项目实战介绍Java组件安装、使用;手写框架等Aws服务器实战Aws Linux服务器上操作nginx、git、JDK、VueJava微服务实战Java 微服务实战,Spring Cloud Netflix套件、Spring Cloud Alibaba套件、Seata、gateway、shadingjdbc…

Windows环境安装redis

1、下载redis https://github.com/tporadowski/redis/releases 2、解压 .zip 3、更改文件名 更改文件名称为:redis 4、将本地解压后的redis,作为本地服务器下的应用服务 从redis文件路径下,执行cmd .\redis-server --service-install re…

使用wireshark分析tcp握手过程

开启抓包 tcpdump -i any host 127.0.0.1 and port 123 -w tcp_capture.pcap 使用telnet模拟tcp连接 telnet 127.0.0.1 123 如果地址无法连接,则会一直重试SYN包,各个平台SYN重试间隔并不一致,如下: 异常站点抓包展示&#xff…

word中设置页眉,首页不设置

在设计文档时,有时候会给文档设置页眉,但是一设置,就是每页都会同时设置,大部分都不需要首页设置,那咋么解决呢,请看以下的解说,Come On!!! 1、首先点击头部…

基于SSM的“基于Apriori算法的网络书城”的设计与实现(源码+数据库+文档)

基于SSM的“基于Apriori算法的网络书城”的设计与实现(源码数据库文档) 开发语言:Java 数据库:MySQL 技术:SSM 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 网站功能展示图 首页 商品分类 热销 新品 我的订单 个…

组装电脑(使用老机箱)

昨天同事拿来一台联想 ThinkCentre M6210t的台式机,说计算机实在是太慢了,在只保留主机箱想升级一下。   她拿来了配件,有电源、主板、CPU、CPU风扇、内存条、机箱风扇、硬盘:   主板:华硕 Prime H610M-K D4&#…

FPGA高端项目:FPGA解码MIPI视频+图像缩放+视频拼接,基于MIPI CSI-2 RX Subsystem架构实现,提供4套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我这里已有的 MIPI 编解码方案本方案在Xilinx Artix7-35T上解码MIPI视频的应用本方案在Xilinx Artix7-100T上解码MIPI视频的应用本方案在Xilinx Kintex7上解码MIPI视频的应用本方案在Xilinx Zynq7000上解码MIPI视频的应用本方案在…

【云原生 | 60】Docker中通过docker-compose部署kafka集群

🍁博主简介: 🏅云计算领域优质创作者 🏅2022年CSDN新星计划python赛道第一名 🏅2022年CSDN原力计划优质作者 🏅阿里云ACE认证高级工程师 🏅阿里云开发者社区专…

基于WIN2016搭建MS2016 ALWAYS ON域控故障转移群集

基于WIN2016搭建MS2016 ALWAYS ON域控故障转移群集 一、前言1、Always On简介2、AD DC域控简介 二、部署实施1、部署环境简介2、搭建流程简介3、域控服务器安装及群集节点加域3.1、安装域控,安装同时会安装DNS系统3.2、执行安装,完成后重启服务器3.3、将…

哇塞!数字营销竟是企业增长的魔法棒!

​嘿,朋友们!你们有没有发现“蚓链数字营销”就像一根神奇的魔法棒,为企业带来了超乎想象的市场影响力! 首先,蚓链数字营销能够利用互联网和数字技术,精准地定位目标用户群体。比如,通过搜索引擎…