Xtrabackup使用文档

文章目录

  • 一、安装xtrabackup
    • 1.1 选择下载版本
    • 1.2 安装xtrabackup
    • 1.3 执行文件介绍
  • 二、全量备份与恢复
    • 2.1 备份数据
      • 2.1.1 备份前插入测试数据
      • 2.1.2 全量备份数据
      • 2.1.3 校验数据完整性
    • 2.2 恢复数据
      • 2.2.1 关停服务
      • 2.2.2 确认mysql数据目录为空目录
      • 2.2.3 恢复数据
      • 2.2.4 为目录赋权
      • 2.2.5 查看恢复数据
  • 三、增量备份与恢复
    • 3.1 插入测试数据
    • 3.2 进行增量备份
      • 3.2.1 备份数据
      • 3.2.2 校验数据
      • 3.2.3 删除数据
    • 3.3 进行增量恢复
  • 四、单库备份与恢复
    • 4.1 备份单库
      • 4.1.1 备份单库
      • 4.1.2 校验数据
      • 4.1.3 删除test1库测试
    • 4.2 恢复单库

一、安装xtrabackup

xtrabackup官网地址

1.1 选择下载版本

1.2 安装xtrabackup

# 这里我选择使用tar包版本
[root@mysql-1 opt]# wget -O /opt/xtraBackup.tar https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.26/binary/redhat/7/x86_64/Percona-XtraBackup-2.4.26-r19de43b-el7-x86_64-bundle.tar# 解压后是三个rpm包
[root@mysql-2 opt]# tar xvf xtraBackup.tar
percona-xtrabackup-24-2.4.26-1.el7.x86_64.rpm
percona-xtrabackup-24-debuginfo-2.4.26-1.el7.x86_64.rpm
percona-xtrabackup-test-24-2.4.26-1.el7.x86_64.rpm# 安装xtraBackup
yum -y localinstall percona-xtrabackup-*

1.3 执行文件介绍

安装好后Xtrabackup安装完成后有4个可执行文件,其中2个比较重要的备份工具是innobackupex、xtrabackup

[root@mysql-2 opt]# rpm -ql percona-xtrabackup-24-2.4.26-1.el7.x86_64
# 是一个封装xtrabackup的Perl脚本,支持同时备份innodb和myisam,但在对myisam备份时需要加一个全局的读锁。
/usr/bin/innobackupex# xbcloud的目的是从云中下载全部或部分xbstream存档并将其上传到云。同时不会覆盖相同名称的备份。xbcloud通过管道接收来自xbstream的输入,因此可以使用xtrabackup作为管道来调用它,以直接传输至云而无需本地存储。
/usr/bin/xbcloud# 是xtrabackup新的高级特性云备份
/usr/bin/xbcloud_osenv# 加密解密备份工具
/usr/bin/xbcrypt# 流传打包传输工具,类似tar
/usr/bin/xbstream# 是专门用来备份InnoDB表的,和mysql server没有交互;
/usr/bin/xtrabackup

二、全量备份与恢复

2.1 备份数据

2.1.1 备份前插入测试数据

# 创建test1数据库
create database test1;# 切换数据库
use test1;# 创建建表
create table testtable1(id INT NOT NULL PRIMARY KEY);# 插入数据
insert into testtable1 values(1);

2.1.2 全量备份数据

# innobackupex --defaults-file={mysql配置文件} --user={备份用户} --socket={msyql socket文件文职} --password={密码} --backup {备份路径}innobackupex --defaults-file=/etc/my.cnf --user=root --socket=/data/mysql.soc --password="Admin#123" --backup /data/mysql_backup_file

2.1.3 校验数据完整性

 innobackupex --apply-log /data/mysql_backup_file/2022-10-11_16-25-30/

删除库

drop database test1;
drop database mysql;

2.2 恢复数据

2.2.1 关停服务

systemctl stop mysqld

2.2.2 确认mysql数据目录为空目录

# 备份原有数据目录
mv /data/mysql_data/ /data/mysql_data_`date +%Y%m%d`_bak# 创建新的数据目录
mkdir /data/mysql_data

2.2.3 恢复数据

innobackupex --defaults-file=/etc/my.cnf --copy-back /data/mysql_backup_file/2022-10-11_16-25-30/

2.2.4 为目录赋权

chown mysql:mysql -R /data/mysql_data

2.2.5 查看恢复数据

三、增量备份与恢复

3.1 插入测试数据

循环插入数据

for i in `seq 2 10`;do mysql -uroot -pAdmin#123 -S /data/mysql.soc -e "insert into test1.testtable1 value($i)"
done

3.2 进行增量备份

​ 在完整备份和增量备份文件中都有一个文件xtrabackup_checkpoints会记录备份完成时检查点的LSN。在进行新的增量备份时,XtraBackup会比较表空间中每页的LSN是否大于上次备份完成的

​ LSN,如果是,则备份该页,并记录当前检查点的LSN。

​ innobackupex --apply-log:同xtrabackup的–prepare参数,一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步

​ 至数据文件中的事务。因此,此时数据 文件仍处理不一致状态。–apply-log的作用是通过回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态。

3.2.1 备份数据

# innobackupex --defaults-file={配置文件} --user={用户} --password={密码} --socket={指定socket文件}--incremental {指定增量备份目录} --incremental-basedir={上次全备\或者增备目录}innobackupex --defaults-file=/etc/my.cnf --user=root --password=Admin#123 --socket=/data/mysql.soc --incremental /data/mysql_backup_file/ --incremental-basedir=/data/mysql_backup_file/2022-10-11_16-25-30

3.2.2 校验数据

 innobackupex --apply-log /data/mysql_backup_file/2022-10-11_17-29-24

3.2.3 删除数据

delete from test1.testtable1 where id = 10;
delete from test1.testtable1 where id = 6;
delete from test1.testtable1 where id = 6;

3.3 进行增量恢复

# 关闭mysql
systemctl stop mysqld# 备份全量备份
cp /data/mysql_backup_file/2022-10-11_16-25-30 /data/mysql_backup_file/2022-10-11_16-25-30_bak# 将增量备份合并到全备上
innobackupex --apply-log --redo-only /data/mysql_backup_file/2022-10-11_16-25-30/
innobackupex --apply-log --redo-only /data/mysql_backup_file/2022-10-11_16-25-30/ --incremental-dir=/data/mysql_backup_file/2022-10-11_17-29-24# 备份原有数据目录
mv /data/mysql_data/ /data/mysql_data_`date +%Y%m%d`_bak# 创建新的数据目录
mkdir /data/mysql_data# 恢复数据
innobackupex --defaults-file=/etc/my.cnf --copy-back  /data/mysql_backup_file/2022-10-11_16-25-30/# chown mysql:mysql -R /data/mysql_data# 启动mysql
systemctl start mysqld

四、单库备份与恢复

4.1 备份单库

4.1.1 备份单库

# innobackupex --defaults-file={配置文件} --user={用户} --password={密码} --socket={指定socket文件}  --databases={指定数据库} --backup {指定备份目录}
innobackupex --defaults-file=/etc/my.cnf --user=root --password=Admin#123 --socket=/data/mysql.soc  --databases="test1"  --backup /data/mysql_backup_file/

4.1.2 校验数据

innobackupex --apply-log /data/mysql_backup_file/2022-10-11_18-01-22

4.1.3 删除test1库测试

mysql -uroot -pAdmin#123 -S /data/mysql.soc -e "drop database test1;"

4.2 恢复单库

配合msyqdump备份库表结构一起使用

mysqldump -h localhost -u root -p -d db_name > db_name.sql
mysqldump -h localhost -u root -p -d --databases dbname1 dbname2 > db_name.sql
#创建表(库)
create database test1;
create table test1.testtable1(id INT NOT NULL PRIMARY KEY);#丢弃表空间
ALTER TABLE test1.testtable1 DISCARD TABLESPACE;# 关闭mysql
systemctl stop mysql# 释放备份文件
innobackupex --apply-log --export /data/mysql_backup_file/2022-10-11_18-01-22cd /data/mysql_backup_file/2022-10-11_18-01-22/test1

查看备份文件

# 复制备份文件到数据目录
yes|cp /data/mysql_backup_file/2022-10-11_18-01-22/test1/testtable1.* /data/mysql_data/test1/# 启动mysql
systemctl start mysql# 创建表
ALTER TABLE test1.testtable1 IMPORT TABLESPACE;

Xtrabackup使用文档相关推荐

  1. 阿里P8终于总结出:SpringCloud+Docker+Tomcat+Nginx实战文档了

    前言 时间飞逝,转眼间毕业七年多,从事 Java 开发也六年了.我在想,也是时候将自己的 Java 整理成一套体系. 这一次的知识体系面试题涉及到 Java 知识部分.性能优化.微服务.并发编程.开源 ...

  2. linux命令及文档

    printenv 查看环境 hash 查看缓存命令 clock /hwclock/date 查看时间 help + command 获得帮助 command --help / man command ...

  3. 导出swagger2生成的文档

    百度了好多篇用法,没法用.特此记录一下 一.下载项目 下载https://github.com/Swagger2Markup/spring-swagger2markup-demo下的项目,保存,注意文 ...

  4. README 规范和项目文档规范

    1. README 规范 我们直接通过一个 README 模板,来看一下 README 规范中的内容: # 项目名称<!-- 写一段简短的话描述项目 -->## 功能特性<!-- 描 ...

  5. FastAPI 自动生成的docs文档没法使用

    FastAPI 自动生成的docs文档没法使用,当展开路径时候一直在转圈,具体就是这样 这个是由于swagger-ui 3.30.1 中的bug导致,具体bug可以看这里 我们可以通过在FastAPI ...

  6. 【软件工程】VB版机房文档总结

    前言: 软工视频+软工文档+UML视频+UML图的学习过程图! 这部分的知识很厚,只是知道了个大概!最开始 慢悠悠的像个老爷爷走进度,后来遇到点什么事,妈呀,管不了那么多了,赶紧弄完在说,拖了多久了都 ...

  7. 智能文档理解:通用文档预训练模型

    预训练模型到底是什么,它是如何被应用在产品里,未来又有哪些机会和挑战? 预训练模型把迁移学习很好地用起来了,让我们感到眼前一亮.这和小孩子读书一样,一开始语文.数学.化学都学,读书.网上游戏等,在脑子 ...

  8. 基于javaGUI的文档识别工具制作

    基于javaGUI的文档识别工具制作 对于某些文本,其中富含了一些标志,需要去排除,以及去获得段落字数,以下是我个人写的一个比较简单的文档识别工具,含导入文件.导出文件以及一个简单的识别功能. 1.功 ...

  9. 从单一图像中提取文档图像:ICCV2019论文解读

    从单一图像中提取文档图像:ICCV2019论文解读 DewarpNet: Single-Image Document Unwarping With Stacked 3D and 2D Regressi ...

最新文章

  1. Rhel7 Ldap为本地用户认证方式,设置域、服务器位置和下载key
  2. AMIO编辑器开发(三):转向C++,月底遇到第二个瓶颈
  3. 利用注释及自定义加密免杀Webshell
  4. 再见 Spring Task,这个定时任务框架真香!
  5. kubesphere_KubeSphere容器混合云一个人也能轻松运维的K8s
  6. VS各种工程文件说明
  7. paip.提升用户体验=----c++ qt 字体切换功能缺少的总结..
  8. SpringBoot生成二维码
  9. linux arm sbus,嵌入式ARM系列linux2.4配置makefile完全注释(2)
  10. C++数据库编程简介
  11. 微信语音导出-微信收藏语音导出-微信语音转MP3文件
  12. Python3 flags
  13. 我们的指纹是如何形成的,科学家找到主导指纹形成原因
  14. OrangePi PC 玩Linux主线内核踩坑之旅(二)之制作镜像后的查遗补缺
  15. 今日头条搜索排名seo怎么做?今天头条网站优化规则揭秘!
  16. 2012_WOW_Designing Steganographic Distortion Using Directional Filters
  17. ios 在window和mac上另类打包方式
  18. 延迟满足 —— 达到目标需要忍住重重诱惑
  19. eas之F7专用选择界面设置
  20. ChinaSkills-网络系统管理(无线地勘部分评分标准)

热门文章

  1. 没有学历的悲哀:程序员面试通过,却因不是985而被拒之门外!
  2. 解决win10虚拟内存设置失败
  3. 消息队列:基础概念篇
  4. Sql Server 查询性能查看
  5. 企业百家号蓝v认证怎么获得原创标签和推荐标签?
  6. 海思平台交叉编译ssh
  7. 纯CSS3花朵动画js特效
  8. ssh-keygen免密登录详解
  9. Sentinel 之 网关限流
  10. 原生JS实现 购物车制作 和 楼梯导航(11)