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

news2024/11/17 6:42:13

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

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

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

相关文章

K8s+SpringBoot+gRpc

本文使用K8s当做服务注册与发现、配置管理&#xff0c;使用gRpc用做服务间的远程通讯一、先准备K8s我在本地有个K8s单机二、准备service-providerpom<?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.…

浅谈性能测试监控系统,做好关键指标的监控

随着业务的增长&#xff0c;服务器部署由单一架构向分布式集群架构转变&#xff0c;性能测试过程中指标监控也由单一服务器向集群服务器转变。 对于性能测试团队来说&#xff0c;需要建立起适用于测试的多机监控系统&#xff0c;以便后期顺利且高效地进行监控分析调优&#xf…

Java程序员拿下高薪offer需要具备哪些能力?这份Java面试专题汇总助你拿下心仪offer!!

背景今天这篇文章的灵感来自一个粉丝的亲身经历&#xff0c;想必也是求职浪潮中很多朋友的经历&#xff0c;内卷大环境找不到满意工作的人太多了&#xff0c;之前也有很多人问过我怎么才能找到不错的工作&#xff0c;甚至是进大厂&#xff0c;所以今天就借这位粉丝的经历来聊聊…

对JAVA 中“指针“理解

对于Java中的指针&#xff0c;以下典型案例会让你对指针的理解更加深刻。 首先对于&#xff1a; 系统自动分配对应空间储存数字 1&#xff0c;这个空间被变量名称b所指向即: b ——> 1 变量名称 空间 明…

linux下yum安装consul实现动态配置管理

一、yum安装consul #安装yum-utils yum install -y yum-utils#配置consul的下载仓库 yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo#必须上面步骤&#xff0c;不然会找不到仓库 yum -y install consul#查看版本 consul -v 二、启动…

基于深度学习的三维重建(二):pytorch的简单操作及DataLoader、Dataset类简介

目录 1.numpy举几个demo 2.pytorch基础 2.1 tensor介绍 3.简单版DataSet & DataLoader 4.模型构建 5.深度学习模型demo&#xff1a;手写文字识别 5.1 构建网络 5.2 前向传播过程 5.3 训练部分 5.4 测试部分 5.5 模型导出 5.6 模型测试 6.pytorch可视化工具ten…

MySQL数据库调优————索引数据结构

B-TREE B-TREE数据结构 B-TREE特性 根节点的子结点个数2 < X < m&#xff0c;m是树的阶 假设m 3&#xff0c;则根节点可有2-3个孩子 中间节点的子节点个数m/2 < y < m 假设m 3&#xff0c;中间节点至少有2个孩子&#xff0c;最多3个孩子 每个中间节点包含n个关…

《MySql学习》 行锁对业务的影响

一. 行锁介绍 行锁由各个存储引擎分别实现&#xff0c;MyISAM存储引擎是不支持行锁的&#xff0c;这也是MySQL使用InnoDB作为默认存储引擎的一个重要原因&#xff0c;锁更细的InnoDB能支持更多的并发业务。但需要注意的是&#xff0c;行锁在InnoDB的实现是给索引加的锁&#x…

智慧养殖无线通讯解决方案

一、方案概述农植畜禽/水产养殖智能监控系统可以在远端设备实现对如温度、湿度、气体浓度、光照度等传感设备的自动调节与控制功能。管理者可随时通过电脑了解养殖场各环节的运行状况&#xff0c;并根据养殖现场内外环境因子的变化情况将命令下发到现场执行设备。为动植物营造舒…

docker-compose安装SonarQube

前言SonarQube 是一个开源的代码分析平台, 用来持续分析和评测项目源代码的质量。 通过SonarQube我们可以检测出项目中重复代码&#xff0c; 潜在bug&#xff0c; 代码规范&#xff0c;安全性漏洞等问题&#xff0c; 并通过SonarQube web UI展示出来。一、docker-compose配置#v…

【Python】编写代码实现指定下标值顺序进行正序和倒序排序算法编程

&#x1f389;&#x1f389; 在本次python文章中&#xff0c;主要通过定义一个排序方法&#xff0c;实现一组数列能够按照另一组数列指定的位置进行重新排序输出&#xff0c;默认正序排序&#xff0c;可通过True表示逆序输出 目录1、知识点2、数列和元组1&#xff09;错误遍历方…

全网多种方式解决Knife4j文档请求异常

文章目录1. 复现问题2. 分析问题3. 解决问题4. 其他方法解决此异常5. 其他说明1. 复现问题 今天在本地启动项目后&#xff0c;刷新Knife4j接口文档&#xff0c;却报出如下错误&#xff1a; 即Knife4j文档请求异常。 2. 分析问题 报出Knife4j文档请求异常错误时&#xff0c;赶…

生活不一定很酷,但是一定要全力以赴

题记&#xff1a;努力是为了让自己不平庸 当看到这个话题“竞赛那些事”&#xff0c;我还是有所触动的&#xff0c;我本身就是一个不喜欢安逸&#xff0c;喜欢折腾的人&#xff0c;纵使不能把日子过成诗&#xff0c;也要折腾成向往的样子。 我的记忆在脑海中不停翻着页&#x…

黑马redis学习记录:分布式锁

一、基本原理和实现方式对比 分布式锁&#xff1a;满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的核心思想就是让大家都使用同一把锁&#xff0c;只要大家使用的是同一把锁&#xff0c;那么我们就能锁住线程&#xff0c;不让线程进行&#xff0c;让程序串行…

Linux_基本权限

Linux入门第二篇已送达&#xff01; Linux_基本权限shell外壳权限Linux的用户分类角色划分Linux的文件文件类型查看权限目录的权限默认权限粘滞位shell外壳 为了保护操作系统&#xff0c;用户的指令不能由操作系统直接进行执行&#xff0c;需要一个中间者&#xff0c;比如Linu…

MySQL优化篇-MySQL压力测试

备注:测试数据库版本为MySQL 8.0 MySQL压力测试概述 为什么压力测试很重要&#xff1f;因为压力测试是唯一方便有效的、可以学习系统在给定的工作负载下会发生什么的方法。压力测试可以观察系统在不同压力下的行为&#xff0c;评估系统的容量&#xff0c;掌握哪些是重要的变化…

基于ThinkPHP6.0+Vue+uni-app的多商户商城系统好用吗?

likeshop多商户商城系统适用于B2B2C、多商户、商家入驻、平台商城场景。完美契合平台自营联营加盟等多种经营方式使用&#xff0c;系统拥有丰富的营销玩法&#xff0c;强大的分销能力&#xff0c;支持官方旗舰店&#xff0c;商家入驻&#xff0c;平台抽佣商家独立结算&#xff…

重生之我是赏金猎人-SRC漏洞挖掘(八)-记一次移花接木的GetShell

0x00&#xff1a;前言 https://github.com/J0o1ey/BountyHunterInChina 欢迎亲们点个star 作者&#xff1a;RGM78sec 某天测厂商业务时&#xff0c;发现其中有一个提供音乐播放业务的资产&#xff0c;正好里面有我想听的歌&#xff0c;于是就有了这篇文章 0x01&#xff1a;…

天翼云服务器如何限制端口仅限部分ip地址访问

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。 前言 最近买了个服务器&#xff0c;没错&#xff0c;是天翼云的。 客户没有钱&#xff0c;买大厂的太贵舍不得&#xff0c;那就买个普通的吧&#xff0c;经媒人介绍&#xff0c;觉得天翼…

vue小案例

vue小案例 组件化编码流程 1.拆分静态组件&#xff0c;按功能点拆分 2.实现动态组件 3.实现交互 文章目录vue小案例组件化编码流程1.父组件给子组件传值2.通过APP组件给子组件传值。3.案例实现4.项目小细节1.父组件给子组件传值 父组件给子组件传值 1.在父组件中写好要传的值&a…