当前位置: 首页 > news >正文

percona软件介绍 、 innobackupex备份与恢复

1. 常用的mysql备份工具

  • 物理备份缺点:
  • 跨平台差。
  • 备份时间长、冗余备份、浪费存储空间。
    解释如下:
  • 如Linux操作系统和Windows操作系统之间,由于文件系统不一样,如Linux操作系统的文件系统是ext4、xfs,Windows操作系统的文件系统是FAT16/32、NTFS,这样可能会导致数据读写的问题。
  • 由于物理备份用的是cp命令,所以可能会导致拷贝的时间很长,而且可能会存在重复的内容占用空间,导致空间变大浪费存储空间。
  • mysqldump备份缺点:
  • 效率较低、备份和还原速度慢、锁表。
  • 备份过程中,数据插入和更新操作被阻塞。
    解释如下:
  • 正常公司的数据量非常大几十个G,一般几十个G备份需要一两个小时,在备份期间不能数据插入和更新导致阻塞。
  • binlog增量备份缺点:
  • 在进行范围内备份恢复的时候,我们需要在日志文件中寻找起始偏移量和结束偏移量或者起始时间和结束时间,当日志文件非常庞大的时候,这样的操作就很变得很繁琐。
  • XtraBackup 工具介绍:
  • 一款强大的在线热备份工具,备份过程中不锁库表,适合生产环境。
  • 由专业组织Percona提供(改进MySQL分支)。
  • 主要包含两个组件:
  1. xtrabackup:C程序,支持InnoDB/XtraDB。
  2. Innobackupex:以Perl脚本封装xtrabackup,还支持MyISAM。
    注:Innobackupex这个组件只有数据库使用InnoDB存储引擎时可以实现增量备份。

2. 安装percona软件

2.1. 官网下载软件包:

官网地址:https://www.percona.com/downloads
##下载软件包[root@localhost ~]# wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.8/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.8-1.el7.x86_64.rpm

2.2. 安装软件包

  • 环境需要两台服务器都安装mysql,备份在A服务器,恢复在B服务器
  • 软件两台服务器都需要安装
yum -y install percona-xtrabackup-24-2.4.8-1.el7.x86_64.rpm

3. innobackupex 命令介绍:

在这里插入图片描述

在这里插入图片描述

3.1. 命令格式

  • 完全备份:
innobackupex  --user  用户名   --password  密码  备份目录名   --no-timestamp
  • 完全恢复:
innobackupex  --apply-log 目录名  ---准备恢复数据
innobackupex  --copy-back 目录名   ---恢复数据	
  • 增量备份:
innobackupex  --user  --password 密码 --incremental  增量目录  --incremental-basedir=完全备份目录  --no-timestamp
  • 增量恢复:
innobackupex  --apply-log  --redo-only 完全备份目录    ---合并日志   
innobackupex  --apply-log  --redo-only 完全备份目录  --incremental-dir  目录名   ---准备恢复数据
innobackupex  --copy-back  目录名   --恢复数据

4. 完整备份与恢复

##创建数据库
create database db1 default charset=utf8mb4;
##创建表格
use db1;
create table t1(id int primary key auto_increment,name char(20)not null)engine=innodb;
##插入数据
insert into t1(name) values('bob'),('tom'),('andy'),('abel'),('adam'),('ada'),('alice'),('afra');
select * from t1;
+----+-------+
| id | name  |
+----+-------+
| 1  | bob   |
| 2  | tom   |
| 3  | andy  |
| 4  | abel  |
| 5  | adam  |
| 6  | ada   |
| 7  | alice |
| 8  | afra  |
+----+-------+
##备份db1数据库
[root@localhost ~]# innobackupex --user root --password 1234 --databases db1  /data/backup	  --不加--no-timestamp会自动创建一个当前时间子目录。
[root@localhost ~]# ls /data/backup/  
2023-02-15_16-08-40    ---这个目录就是不加--no-timestamp创建的子目录##备份所有数据库:
这里不加--databases 这个选项就代表备份所有库
[root@localhost ~]# innobackupex --user root --password 1234   /data/backup   --no-timestamp[root@localhost ~]# ls /data/backup/  --查看备份的数据
2023-02-15_16-08-40  db1             ibdata1  performance_schema  xtrabackup_binlog_info  xtrabackup_info
backup-my.cnf        ib_buffer_pool  mysql    sys                 xtrabackup_checkpoints  xtrabackup_logfile
###删除备份db1库
[root@localhost backup]# rm -rf /data/backup/2023-02-15_16-08-40/
##把所有库备份数据传给B服务器
[root@localhost backup]# scp -r /data/backup/ 192.168.2.20:/root
##在B服务器恢复所有数据
[root@localhost ~]# systemctl stop mysqld
[root@localhost ~]# rm -rf /var/lib/mysql/*    ---必须清空mysql数据目录的内容,不然下面恢复失败
[root@localhost ~]# innobackupex --apply-log /root/backup/    ---准备恢复数据
[root@localhost ~]# innobackupex --copy-back /root/backup/   ---恢复数据
##修改mysql目录下的数据所属主和所属组
[root@localhost ~]# chown -R mysql. /var/lib/mysql
##登录mysql查看db1库的t1表
mysql> select * from db1.t1;
+----+-------+
| id | name  |
+----+-------+
|  1 | bob   |
|  2 | tom   |
|  3 | andy  |
|  4 | abel  |
|  5 | adam  |
|  6 | ada   |
|  7 | alice |
|  8 | afra  |
+----+-------+
---数据已经

4.1. 使用完全备份数据恢复1张表的所有数据

[root@localhost ~]# ls /var/lib/mysql/db1/
db.opt  t1.frm  t1.ibd
t1.frm   ---是t1表结构
t1.ibd   ---是t1表空间
表空间:存储数据的表文件。
###删除t1的表空间
mysql> alter table db1.t1 discard tablespace;
Query OK, 0 rows affected (0.00 sec)
##查看是否删除成功
mysql> system ls /var/lib/mysql/db1;
db.opt  t1.frm
##导出表信息
[root@localhost ~]# ls backup/db1/
db.opt  t1.frm  t1.ibd
[root@localhost ~]# innobackupex --apply-log --export /root/backup/
##验证
[root@localhost ~]# ls backup/db1/
db.opt  t1.cfg  t1.exp  t1.frm  t1.ibd	
t1.cfg  t1.exp   ---这两个是表信息日志文件
##拷贝表信息文件到数据库目录下:
[root@localhost ~]# cp -r backup/db1/t1.{ibd,cfg,exp}    /var/lib/mysql/db1/
##查看是否拷贝成功
[root@localhost ~]# ls /var/lib/mysql/db1/
db.opt  t1.cfg  t1.exp  t1.frm  t1.ibd
##修改表信息文件的所属者及组为mysql
[root@localhost ~]# chown -R mysql. /var/lib/mysql
##导入表空间:
mysql> alter table db1.t1 import tablespace;
##删除表信息文件
[root@localhost ~]# rm -rf /var/lib/mysql/db1/t1.{cfg,exp}
##查看是否恢复成功
mysql> select * from db1.t1;
+----+-------+
| id | name  |
+----+-------+
|  1 | bob   |
|  2 | tom   |
|  3 | andy  |
|  4 | abel  |
|  5 | adam  |
|  6 | ada   |
|  7 | alice |
|  8 | afra  |
+----+-------+
8 rows in set (0.00 sec)

5. 增量备份与恢复

  • 增量备份:备份上次备份后所有新产生的数据。
  • 增量备份时,必须先有一次备份,通常是完全备份。
  • 一般周一完全备份,周二~周日增量备份。
  • 增量备份原理:

在执行增量备份时,会从事务日志文件对比上次备份的last_lsn序列值是否有变化,如果有变化说明产生了新数据,然则无,增量备份是从上次备份的to_lsn序列值作为from_lsn(起点序列值)开始备份。

  • 增量备份的恢复原理:

在执行增量恢复命令时,首先把增量备份的数据拷贝到完全备份目录下,并修改xtrabackup_checkpoints的结束序列号(把增量备份的结束序列号改为完全备份目录的xtrabackup_checkpoints序列号为结束序列号)然后把完全备份目录的数据拷贝至/var/lib/mysql/目录(拷贝之前保证此目录为空)

###继续往db1.t1表插入内容。
insert into t1(name) values('eden'),('john'),('noah'),('amos');
##查看表格
select * from t1;
+----+-------+
| id | name  |
+----+-------+
| 1  | bob   |
| 2  | tom   |
| 3  | andy  |
| 4  | abel  |
| 5  | adam  |
| 6  | ada   |
| 7  | alice |
| 8  | afra  |
| 9  | eden  |
| 10 | john  |
| 11 | noah  |
| 12 | amos  |
+----+-------+
##增量备份:
[root@localhost ~]#  innobackupex --user root --password 1234 --incremental /data/zlbf/  --incremental-basedir=/data/backup
##查看备份内容:
[root@localhost ~]# ls /data/zlbf/2023-02-16_10-32-46/
backup-my.cnf  ib_buffer_pool  ibdata1.meta  performance_schema  xtrabackup_binlog_info  xtrabackup_info
db1            ibdata1.delta   mysql         sys                 xtrabackup_checkpoints  xtrabackup_logfile
##查看xtrabackup_checkpoints文件内容
[root@localhost ~]# cat /data/backup/xtrabackup_checkpoints
backup_type = full-backuped    ---备份类型为完全备份
from_lsn = 0                   ---备份起点为0
to_lsn = 3189344               ---备份结束为3189344
last_lsn = 3189353             ---事务日志文件目录最后的系列号
compact = 0
recover_binlog_info = 0
[root@localhost ~]# cat /data/zlbf/2023-02-16_10-32-46/xtrabackup_checkpoints
backup_type = incremental    ---备份类型为增量备份
from_lsn = 3189344           ---这个备份起点是前面完全备份的终点
to_lsn = 3191428             ----备份终点
last_lsn = 3191437
compact = 0
recover_binlog_info = 0
##lsn:日志序列号,记录执行的SQL命令的编号,表的存储引擎必须是innodb。
##查看事务日志文件
[root@localhost ~]# ls /var/lib/mysql/ib_logfile*
/var/lib/mysql/ib_logfile0  /var/lib/mysql/ib_logfile1
##增量恢复:此操作在B服务器上执行
[root@localhost ~]# scp -r /data/zlbf/2023-02-16_10-32-46/ 192.168.2.20:/root/  ---把增量备份文件拷贝至B服务器。
[root@localhost ~]# innobackupex --apply-log  --redo-only  /root/backup/
[root@localhost ~]# innobackupex --apply-log  --redo-only  /root/backup/  --incremental-dir  /root/2023-02-16_10-32-46/
[root@localhost ~]# systemctl stop mysqld.service
[root@localhost ~]# rm -rf /var/lib/mysql/*
[root@localhost ~]#  innobackupex  --copy-back  /root/backup/
[root@localhost ~]# chown -R mysql. /var/lib/mysql
[root@localhost ~]# systemctl restart mysqld
###验证:
[root@localhost ~]# mysql -uroot -p1234 -e " select * from db1.t1;"
mysql: [Warning] Using a password on the command line interface can be insecure.
+----+-------+
| id | name  |
+----+-------+
|  1 | bob   |
|  2 | tom   |
|  3 | andy  |
|  4 | abel  |
|  5 | adam  |
|  6 | ada   |
|  7 | alice |
|  8 | afra  |
|  9 | eden  |
| 10 | john  |
| 11 | noah  |
| 12 | amos  |
+----+-------+

相关文章:

percona软件介绍 、 innobackupex备份与恢复

1. 常用的mysql备份工具 物理备份缺点: 跨平台差。备份时间长、冗余备份、浪费存储空间。 解释如下:如Linux操作系统和Windows操作系统之间,由于文件系统不一样,如Linux操作系统的文件系统是ext4、xfs,Windows操作系统…...

Towards Adversarial Attack on Vision-Language Pre-training Models

摘要虽然视觉-语言预训练模型(VLP)在各种视觉-语言(VL)任务上表现出革命性的改进,但关于其对抗鲁棒性的研究在很大程度上仍未被探索。本文研究了常用VLP模型和VL任务的对抗性攻击。首先,我们分析了不同设置下对抗性攻击的性能。通过研究不同扰动对象和攻…...

2022年最新数据库调查报告:超八成DBA月薪过万,你拖后腿了吗?

数据库管理员属于IT行业高薪职业的一种,近几年关于数据库管理员的薪资统计文章也层出不穷,那么当前,DBA们的薪资究竟到达了怎样的水平呢?墨天轮数据社区发布最新《2022年墨天轮数据库大调查报告》,数据显示超八成DBA月…...

ESP-C3入门10. 创建TCP Client

ESP-C3入门10. 创建TCP Client一、创建 tcp client的一般步骤1. 创建 tcp 套接字2. 配置服务器地址3. 连接服务器4. 发送数据5. 接收数据6. 关闭套接字二、创建tcp_client任务三、示例代码1. tcpClient.h2. tcpClient.c3. main.c一、创建 tcp client的一般步骤 本文示例使用的…...

【Vue】浅谈vue2、vue3响应式原理,vue中数组的响应式,响应式常见问题分析

前言:此处响应式指的是数据响应式变化,而不是页面的响应式布局,页面的响应式布局在我的其他文章中有提到。 一、什么是vue响应式 Vue 最标志性的功能就是其低侵入性的响应式系统。组件状态都是由响应式的 JavaScript 对象组成的。当更改它们…...

股航顶峰先锋一号

{选股} TT:MA(C,30)>MA(C,60) AND MA(C,60)>MA(C,120);{均线多头} DD:C>REF(C,1);{收阳线} QQ:V>REF(V,1);{放量}; TT1:COUNT(L<MA(C,13),5)1; TT2:(C-REF(C,1))/REF(C,1)*100>3; DD1:V>REF(V,1)*2 AND C>REF(C,1); DD2:TT1 AND 0<MA(C,13)AND TT2 …...

MYSQL安装部署--Linux 仓库安装

声明 &#xff1a;# 此次我们安装的 MYSQL 版本是 8.0.32 版本 我们本次安装 MYSQL 总共要介绍 四种方式 # 仓库安装# 本地安装# 容器安装# 源码安装我们本篇介绍的是 仓库安装 仓库安装 下载 MYSQL 安装包 # MYSQL 安装&#xff0c;我们都是基于 MYSQL 官方网站里进行下载~&a…...

NFS服务器搭建

NFS服务器搭建1. NFS简介2. NFS工作原理3. 配置NFS服务端3.1 启动服务3.2 修改配置文件4. 配置NFS客户端1. NFS简介 NFS是Network File System的简写,即网络文件系统. 网络文件系统是FreeBSD支持的文件系统中的一种&#xff0c;也被称为NFS。 NFS允许一个系统在网络上与他人共…...

【数据挖掘实战】——航空公司客户价值分析(K-Means聚类案例)

目录 一、背景和挖掘目标 1、RFM模型缺点分析 2、原始数据情况 3、挖掘目标 二、分析方法与过程 1、初步分析&#xff1a;提出适用航空公司的LRFMC模型 2、总体流程 第一步&#xff1a;数据抽取 第二步&#xff1a;探索性分析 第三步&#xff1a;数据预处理 第四步&…...

AnlogicFPGA-IO引脚约束设置

&#xff08;https://www.eefocus.com/article/472120.html此链接是一篇关于XillinxFPGA的IO的状态分析&#xff0c;希望自己也要能了解到AnLogic的IO状态并有对此问题的分析能力&#xff09; 1、DriveStrength: 驱动强度&#xff0c;即最大能驱动的电流大小&#xff08;见带负…...

Java SSM 笔记(一)重置版

Spring核心技术 **前置课程要求&#xff1a;**请各位小伙伴先完成《JavaWeb》篇、《Java 9-17新特性》篇视频教程之后&#xff0c;再来观看此教程。 **建议&#xff1a;**对Java开发还不是很熟悉的同学&#xff0c;最好先花费半个月到一个月时间大量地去编写小项目&#xff0…...

centos安装java,目录授权

centos安装java (1)查看可安装版本: yum -y list java* 安装&#xff1a;sudo yum -y install java-17-openjdk.x86_64 验证&#xff1a;java –version (2)二进制安装&#xff1a;下载&#xff1a;wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.…...

【大数据】HADOOP-YARN容量调度器多队列配置详解实战

简介 Capacity调度器具有以下的几个特性&#xff1a; 层次化的队列设计&#xff0c;这种层次化的队列设计保证了子队列可以使用父队列设置的全部资源。这样通过层次化的管理&#xff0c;更容易合理分配和限制资源的使用。容量保证&#xff0c;队列上都会设置一个资源的占比&a…...

加密技术在android系统安全中的应用

前言android 系统安全内容总结 1、算法基础 算法基础参照linux的全盘加密与文件系统加密在android中的应用的2、预备知识 android系统安全特性用到加密算法的如下表:...

KNN&K-means从入门到实战

作者&#xff1a;王同学 来源&#xff1a;投稿 编辑&#xff1a;学姐 1. 基本概念 1.1 KNN k近邻法&#xff08;k-nearest neighbor&#xff0c;k-NN&#xff09;是一种基本分类与回归方法。 k近邻法的输入为实例的特征向量对应于特征空间的点&#xff1b;输出为实例的类别&…...

SpringBoot整合RabbitMQ

SpringBoot整合RabbitMQ&#xff0c;生产者 &#xff08;1&#xff09;创建maven项目 &#xff08;2&#xff09;引入依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><versi…...

Hive---安装教程

Hive安装教程 Hive属于Hadoop生态圈&#xff0c;所以Hive必须运行在Hadoop上 文章目录Hive安装教程上传安装包解压并且更名修改 /etc/profile创建hive-site.xml将mysql的jar包放入Hive库中开启刷新配置文件hadoop开启mysql初始化启动hive上传安装包 将安装包上传到/opt/insta…...

MySQL作业四

学生表&#xff1a;Student (Sno, Sname, Ssex , Sage, Sdept) 学号&#xff0c;姓名&#xff0c;性别&#xff0c;年龄&#xff0c;所在系 Sno为主键 课程表&#xff1a;Course (Cno, Cname,) 课程号&#xff0c;课程名 Cno为主键 学生选课表&#xff1a;SC (Sno, Cno, Score)…...

云原生安全检测器 Narrows(CNSI)的部署和使用

近日&#xff0c; 云原生安全检测器 Narrows&#xff08;Cloud Native Security Inspector&#xff0c;简称CNSI&#xff09;发布了0.2.0版本。 &#xff08;https://github.com/vmware-tanzu/cloud-native-security-inspector&#xff09; 此项目旨在对K8s集群中的工作负载进…...

【并发编程】【3】Java线程 创建线程与线程运行

并发编程 3.Java线程 本章内容 创建和运行线程 查看线程 线程 API 线程状态 3.1 创建和运行线程 方法一&#xff0c;直接使用 Thread // 创建线程对象 Thread t new Thread() {public void run() {// 要执行的任务} }; // 启动线程 t.start();例如&#xff1a; // 构…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来&#xff0c;在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂&#xff0c;网络攻击、数据泄露等事件频发&#xff0c;现行法律已难以完全适应新的风险挑战。 2025年3月28日&#xff0c;国家网信办会同相关部门起草了《网络安全…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...