1.安装工具

需要在被备份的mysql数据库上安装第三方备份工具percona-xtrabackup,此程序需要的rpm包较多。所以我们需要下载此安装包

percona-xtrabackup-24-2.4.15-1.el7.x86_64.rpm

(适用于mysql5.7版本)

下载地址
https://repo.percona.com/yum/release/7/RPMS/x86_64/percona-xtrabackup-24-2.4.15-1.el7.x86_64.rpm

2.下载后上传到需要备份的服务器

去对应的目录

[root@localhost mnt]# ll
总用量 7712
drwxr-x--- 5 root root 87 10月 13 21:36 mysqlbak
-rw-r--r-- 1 root root 7893808 10月 12 10:15 percona-xtrabackup-24-2.4.15-1.el7.x86_64.rpm [root@localhost mnt]# yum install -y percona-xtrabackup-24-2.4.15-1.el7.x86_64.rpm 出现complete!才算安装完成 验证是否安装完成 输入
innobackupex –version
出现版本号则安装OK

全备

1.安装完成后我们进行数据库备份执行以下命令

(注意mysql数据库的密码要写正确才能进行备份)

参数--backup 为我们需要备份的目录.出现completedOK!备份完成
innobackupex --defaults-file=/etc/my.cnf --user=root --password="***" --socket=/tmp/mysql.sock --backup /mnt/mysqlbak/

可以看到整个备份过程:连接数据库,开始拷贝redo log,拷贝innodb表文件,锁表、拷贝非innodb表文件,停止拷贝redo log,解锁。

2.查看备份的数据

cd /mnt/mysqlbak && ll

这个是第一次全备

其中,mysql/, performance_schema/, sys/ ,school/ 下存放的是数据库文件。

backup-my.cnf,备份命令用到的配置选项信息;

ib_buffer_pool, buffer pool 中的热数据,当设置 innodb_buffer_pool_dump_at_shutdown=1 ,在关闭 MySQL 时,会把内存中的热数据保存在磁盘里 ib_buffer_pool 文件中,位于数据目录下。

ibdata1,备份的共享表空间文件;

xtrabackup_binlog_info,mysql服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置;

xtrabackup_checkpoints,备份类型(如完全或增量)、备份状态(如是否已经为prepared状态)和LSN(日志序列号)范围信息;

xtrabackup_info,记录备份的基本信息,uuid、备份命令、备份时间、binlog、LSN、以及其他加密压缩等信息。

xtrabackup_logfile,备份的重做日志文件。

3.进入数据库,删除一个测试库

4.删除school库

5.备份数据目录

创建一个数据目录

将/var/lib/mysql/data/ 目录下的所有文件移到备份目录去

6.恢复数据库

恢复数据之前要先关闭数据库

  • 首先执行以下命令,此命令是告诉系统我们要在此备份基础上启动mysql服务

    其中/mnt/mysqlbak/2022-10-14_10-59-30就是前面备份的数据库

innobackupex --apply-log --use-memory=500M /mnt/mysqlbak/2022-10-14_10-59-30

直到出现completed OK!

#--apply-log ( /data/pxb/2017-04-24_02-46-11/ 为备份目录,执行之后 xtrabackup_checkpoints 文件中的 backup_type = full-prepared )

7.执行命令恢复数据库

innobackupex --defaults-file=/etc/my.cnf --copy-back /mnt/mysqlbak/2022-10-14_10-59-30

直到出现completed OK!才算恢复完成

恢复后,一定要去数据目录,把所有的文件修改用户为mysql

8.验证数据库是否恢复成功

登录数据库后 show databases;


增量备份

我们刚才已经有了全量备份。现在我们创建一些新的表插入一些数据进行增量备份;

1.登录数据库

创建一个表,插入数据
use school;
create table t1(id int);
insert into t1 values(1);
insert into t1 values(11);

2.备份增量

现在进行第一次增量备份;其中标红的为全量备份的目录,----incremental后面为我们的增量备份的目录

innobackupex --defaults-file=/etc/my.cnf --user=root --password="***" --incremental /mnt/mysqlbak --socket=/tmp/mysql.sock --incremental-basedir=/mnt/mysqlbak/2022-10-14_10-59-30

出现completed ok!就是备份完成

--incremental 表示告诉mysql进行增量备份
--incremental-basedir 告诉MySQL基于哪个位置点进行增量备份

3.再插入一些数据

insert into t1 VALUES (2);
insert into t1 VALUES(22);

4.进行第二次增量备份

红色为我们上次增量备份的目录

innobackupex --defaults-file=/etc/my.cnf --user=root --password="***" --incremental /mnt/mysqlbak --socket=/tmp/mysql.sock --incremental-basedir=/mnt/mysqlbak/2022-10-14_16-02-08

出现completed ok! 为备份完成

现在查看备份目录,已经有一次全备,两次增备的数据

5.删除数据

mysql> drop table t1;
Query OK, 0 rows affected (0.01 sec)

6.关闭mysql

[root@localhost mysql]# service mysql stop
Shutting down MySQL.... SUCCESS! [root@localhost mysql]# mv data/* bak/ #将数据目录下的文件移走备份目录下去

7.恢复数据

执行以下命令,应用全量备份。目录为全量备份的目录

 #准备一个全备
innobackupex --apply-log --redo-only --use-memory=500M /mnt/mysqlbak/2022-10-14_10-59-30
>出现completed ok 为备份完成 ---
#将增量1应用到完全备份
innobackupex --apply-log --redo-only --use-memory=500M /mnt/mysqlbak/2022-10-14_10-59-30 --incremental-dir=/mnt/mysqlbak/2022-10-14_16-02-08
#incremental-dir 为增量备份的数据
>出现completed ok 为备份完成 ---
#再执行应用第二个增量备份。最后一个增量备份,不需要加redo-only选项
innobackupex --apply-log --use-memory=500M /mnt/mysqlbak/2022-10-14_10-59-30 --incremental-dir=/mnt/mysqlbak/2022-10-14_16-29-56
#最后一个增量备份,不需要加redo-only选项
>出现completed ok 为备份完成 ---
#执行全量恢复
innobackupex --defaults-file=/etc/my.cnf --copy-back /mnt/mysqlbak/2022-10-14_10-59-30
>出现completed ok 为备份完成

8.启动mysql

启动之前需要将数据目录的用户调整为mysql

数据恢复成功

参考https://www.cnblogs.com/waynechou/p/xtrabackup_backup.html

Xtrabackup使用帮助的更多相关文章

  1. Xtrabackup原理及使用innobackupex进行MySQL数据库备份恢复

    Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具. Xtrabackup中主要包含两个工 ...

  2. mysqldump和xtrabackup备份原理实现说明

    背景: MySQL数据库备份分为逻辑备份和物理备份两大类,犹豫到底用那种备份方式的时候先了解下它们的差异: 逻辑备份的特点是:直接生成SQL语句,在恢复的时候执行备份的SQL语句实现数据库数据的重现. ...

  3. xtrabackup 使用说明(续)

    背景: 关于物理备份工具xtrabackup的一些说明可以先看之前写过的文章说明:xtrabackup 安装使用.现在xtrabackup版本升级到了2.4.4,相比之前的2.1有了比较大的变化:in ...

  4. Percona XtraBackup 备份原理说明【转】

    本文来自:http://mysql.taobao.org/monthly/2016/03/07/ 前言 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MyS ...

  5. XtraBackup出现 Can't connect to local MySQL server through socket '/tmp/mysql.sock'

    Xtrabackup做备份时遇到下面错误信息MySQL server: Can't connect to local MySQL server through socket '/tmp/mysql.s ...

  6. MySQL 使用XtraBackup的shell脚本介绍

    mysql_backup.sh是关于MySQL的一个使用XtraBackup做备份的shell脚本,实现了简单的完整备份和增量备份.以及邮件发送备份信息等功能.功能目前还比较简单,后续将继续完善和增加 ...

  7. Xtrabackup 安装使用

    一 简介:      Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品.它能对Inno ...

  8. 「转」xtrabackup新版详细说明

    声明:本文由我的同事@fiona514编写,是我看过的最用心的中文说明介绍,强烈推荐大家学习使用. Percona Xtrabackup 2.4.1 编译及软件依赖 centos5,6 需要升级cma ...

  9. 利用xtrabackup备份mysql数据库

    利用xtrabackup备份mysql数据库 一.安装1.直接下载二进制文件wget http://www.percona.com/downloads/XtraBackup/XtraBackup-2. ...

  10. MySQL5.6下使用xtrabackup部分备份恢复到MySQL5.7

    现有需求:需要备份MySQL5.6环境下的部分表到MySQL5.7环境下并进行恢复 通过xtrabackup 实现部分备份有三种方式: 参考链接:http://blog.csdn.net/zhu197 ...

随机推荐

  1. 全网最简单的大文件上传与下载代码实现(React+Go)

    前言 前段时间我需要实现大文件上传的需求,在网上查找了很多资料,并且也发现已经有很多优秀的博客讲了大文件上传下载这个功能. 我的项目是个比较简单的项目,并没有采用特别复杂的实现方式,所以我这篇文章的目 ...

  2. 跟羽夏学 Ghidra ——工具

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇文章 ...

  3. 数仓Hive和分布式计算引擎Spark多整合方式实战和调优方向

    @ 目录 概述 Spark on Hive Hive on Spark 概述 编译Spark源码 配置 调优思路 编程方向 分组聚合优化 join优化 数据倾斜 任务并行度 小文件合并 CBO 谓词下 ...

  4. Webdriver安装记

    和之前的博文对照,这是一篇不一样的博文 因为终于开始实际应用啦! 首先,要安装Python Python在哪找--官网有链接的:Python Release Python 3.6.3 | Python ...

  5. traefik的80和443端口占用进一步分析

    上一篇文章地址:https://www.cnblogs.com/sanduzxcvbnm/p/14990065.html 建议先看上一篇文章,才更容易理解这篇 1.traefik的deployment ...

  6. SpringCloud组件编写Dockerfile文件模板

    在组件根目录下的Dockerfile文件 # Dockerfile文件内容 FROM idocker.io/jre:1.8.0_212 #自定义的基础镜像 VOLUME /tmp # 挂载目录 ADD ...

  7. 各编程语言 + aardio 相互调用示例

    代码简单.复制可用.aardio 快速调用 C,C++,C#,Java,R,V,Python,JavaScript,Node.js,Rust,PHP,Ruby,PowerShell,Fortran,D ...

  8. 为什么阿里Java开发手册不推荐使用Timestamp

    开发手册 不推荐用java.sql.Date.java.sql.Time网上说的文章有很多. 参考文章:一文告诉你Java日期时间API到底有多烂 但为什么不推荐使用java.sql.Timestam ...

  9. 深入理解AQS--jdk层面管程实现【管程详解的补充】

    什么是AQS 1.java.util.concurrent包中的大多数同步器实现都是围绕着共同的基础行为,比如等待队列.条件队列.独占获取.共享获取等,而这些行为的抽象就是基于AbstractQueu ...

  10. Bug改不完,迭代总延期,咋办?

    摘要:本文从流程上需要改进的地方进行讨论,分四个方面来分析产生这个问题的原因. 本文分享自华为云社区<Bug改不完,迭代总延期,咋办?>,作者: 华为云PaaS服务小智. 前言 随着互联网 ...