Percona XtraBackup 关于 MySQL备份还原的详细测试
一. Percona XtraBackup 的优点。
(1)无需停止数据库进行InnoDB热备;

(2)增量备份MySQL;

(3)流压缩传输到其它服务器;

(4)在线移动表;

(5)能够比较容易地创建主从同步;

(6)备份MySQL时不会增大服务器负载。

二. Percona XtraBackup 工具集组成
在旧版本中,Percona XtraBackup 工具集里主要包含两个程序:innobackupex 和 xtrabackup。

xtrabackup是C/C++编译的二进制程序,用来备份InnoDB的,并不能备份非InnoDB表,它在内部实现了对InnoDB的热备份。

innobackupex由perl脚本编写,是对xtrabackup的封装,通过调用xtrabackup命令来备份InnoDB表,通过调用mysqldump等命令来实现对非InnoDB表的备份,并且会和MySQL数据库发送命令交互,例如获取Binlog位点、添加锁操作。

因为我们公司,大量使用 innodbbackupex 备份还原,所以,本文的讲解测试仍是以innodbbackupex为主。

三. innodbbackupex常用的参数选项
参数选项 作用描述 备注
--host 指定数据库实例的IP地址。 备份阶段
--port 连接数据库实例的端口号。 备份阶段
--user 备份时连接数据库实例/数据库的用户名。 备份阶段
--password 连接所用账号的密码。 备份阶段
--copy-back 将准备好的备份文件从备份目录复制到原始位置,其原始位置目录必须为空,否则报错(除非指定--force-non-empty-directories选项)。 恢复阶段
--incremental 该选项表示创建增量备份,而不是全量备份。 备份阶段
--incremental-basedir 该选项接受一个字符串参数,表示包含作为增量备份基本数据集的完整备份的目录。与--incremental一起使用。 备份阶段
--incremental-dir 该选项接受一个字符串参数,表示增量备份与完整备份的目录,以进行新的完整备份。与--incremental一起使用。 备份阶段
--redo-only 在prepare阶段,完整备份合并除最后一个增量之外的所有增量时,使用该选项。迫使innobackupex跳过“回滚”阶段,只做一次“重做”。如果已经在全量备份上重放了提交的事务并回滚了未提交的事务,则无法在此备份上添加增量。同样,如果在增量备份上执行,则无法添加其余的增量备份。 Prepare阶段
--incremental-lsn 增量备份是基于LSN来完成的,所以,增量备份也可以指定LSN值进行。 备份阶段
--apply-log 在创建备份后,备份数据其实处于不可用状态。因为在redo log中可能存在未提交的事务和已提交的事务,需要通过准备阶段来使备份数据达到一致状态。通过此阶段,备份数据就可以用来恢复了。在准备阶段,需要指定的参数选项就包含apply-log。
--socket 该选项表示mysql.sock所在位置,以便备份进程登录mysql。在MySQL多实例场景下,需指明。

四. 安装
这个版本是 Percona XtraBackup 2.4 版本。

Step 1 :下载执行文件

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/6/x86_64/Percona-XtraBackup-2.4.9-ra467167cdd4-el6-x86_64-bundle.tar
step 2 :解压执行文件

tar -xvf Percona-XtraBackup-2.4.9-ra467167cdd4-el6-x86_64-bundle.tar
step 3:安装

yum install percona-xtrabackup-24-2.4.9-1.el6.x86_64.rpm –y
step 4 安装验证

查看 可执行文件

which xtrabackup
版本检查

xtrabackup --version
五. 全量备份与全量恢复
Step 1 环境介绍及准备
测试环境:在一台服务器上开启2个实例,一个是3306,另一个是3307.测试的基本步骤是将3306实例上的数据库备份、然后还原到3306实例中。

用来测试的数据库为Test_Xtrabackup

step 2 全量备份
innobackupex --port 3306 --socket /tmp/mysql_3306.sock --user=root --password=输入自己的密码 /data/backup/full
因为测试方便使用了 root 账号,进而不可以输入对应 --host参数。

因为测试服务器上,安装了多实例,所以输入了 --socket 参数。

生成的全量备份文件会存储在一个以备份时间命名的子目录下。

step 3 Prepare 阶段
在创建备份后,备份数据其实处于不可用状态。因为在redo log中可能存在未提交的事务和已经提交的事务,需要通过准备阶段来使备份数据达到一致的状态。通过此阶段,备份数据就可以用来恢复了。

在准备阶段,需要指定选项 --apply-log 和备份文档路径。

innobackupex --apply-log /data/backup/full/2019-04-19_10-56-22
step 4 还原环境的准备
我们打算将数据库还原到同一台服务器上的3307 端口的mysql实例中。

先登入看下。

测试需要 关闭3307 实例

将实例对应的数据文档清空(/data/mysql3307/data)

step 5 恢复阶段
在Prepare阶段过后,如果需要用备份数据来恢复数据库,则只需要指定--copy-back 和备份数据所在目录即可。

innobackupex --datadir=/data/mysql3307/data --copy-back /data/backup/full/2019-04-19_10-56-22
innobackupex 将所有的数据相关文件复制到服务器中的datadir目录,该目录有my.cnf文件中的datadir选项指定。因为是多实例,在此直接指定。

step 6 修改文件的所有权
复制完成后,文件属性不会改变。在大多数的情况下,在启动MySQL数据库之前,需要修改文件的所有权。

chown -R mysql:mysql /data/mysql3307/data
step 7 开启恢复后的实例,数据验证

以上截图说明 3306 上的数据已恢复至3307 实例上。

六. 增量备份与恢复的测试

  1. 备份阶段
    环境准备,在完整备份前,创建了一个 表 T_full_table;并向此表插入了一笔数据,如下图所示:

增量备份基于全量备份,所以需要创建一个全量备份。全量备份的命令如下:

innobackupex --port 3306 --socket /tmp/mysql_3306.sock --user=root --password=你的密码 /data/backup/full
全量备份后生成的(时间子)目录为 2019-04-19_21-28-32,这个目录会在第一次增量备份是用到,incremental-basedir 选项参数需要细化到这一层,否则报错。意思是找不到xtrabackup_checkpoints文件。

全量备份后,向表中insert 2 笔 数据,如下:

第一个增量备份

1
innobackupex --port 3306 --socket /tmp/mysql_3306.sock --user=root --password=你的密码 --incremental --incremental-basedir=/data/backup/full/2019-04-19_21-28-32 /data/backup/incremental
增量备份产生的目录文件为 /data/backup/incremental/2019-04-19_21-30-11

第一次增量备份后,继续insert 2笔数据

第二个增量备份(我们是否可以在增量备份的基础上再做增量备份呢?答案是肯定的,只要把--incremental-basedir设置为上一次增量备份的目录即可。即:增量备份可以基于以前的增量备份完成数据备份。)

innobackupex --port 3306 --socket /tmp/mysql_3306.sock --user=root --password=你的密码 --incremental --incremental-basedir=/data/backup/incremental/2019-04-19_21-30-11 /data/backup/incremental
第二次增量备份产生的目录文件为 /data/backup/incremental/2019-04-19_21-35-33

再次插入2笔数据,用来验证第三次增量备份

第三个增量备份

innobackupex --port 3306 --socket /tmp/mysql_3306.sock --user=root --password=你的密码 --incremental --incremental-basedir=/data/backup/incremental/2019-04-19_21-35-33 /data/backup/incremental
第三次增量备份产生的目录文件为 /data/backup/incremental/2019-04-19_21-38-16

再次插入2笔验证数据,用来验证第四次增量备份。

生成第四个增量备份

innobackupex --port 3306 --socket /tmp/mysql_3306.sock --user=root --password=你的密码 --incremental --incremental-basedir=/data/backup/incremental/2019-04-19_21-38-16 /data/backup/incremental
第四次增量备份产生的目录文件为 /data/backup/incremental/2019-04-19_21-40-02

最后一次插入2笔验证数据

我们希望还原后的数据库是 刚刚作为第三次完整增量备份的数据库状态。

(此时T_full_table 表的数据,应该为 1(全量),2,3 (一增),21,22 (二赠),31,32 (三赠))

  1. 增量恢复的Prepare阶段
    1) 在全量备份上执行

innobackupex --apply-log --redo-only /data/backup/full/2019-04-19_21-28-32
2) 在第一个增量备份上执行 (增量备份产生的子目录是 2019-04-19_21-30-11,前面完整备份的目录是 /data/backup/full/2019-04-19_21-28-32)

innobackupex --apply-log --redo-only --incremental-dir=/data/backup/incremental/2019-04-19_21-30-11 /data/backup/full/2019-04-19_21-28-32
3) 在第二个增量备份上执行 (增量备份产生的子目录是 2019-04-19_21-35-33,前面完整备份的目录是 /data/backup/full/2019-04-19_21-28-32)

innobackupex --apply-log --redo-only --incremental-dir=/data/backup/incremental/2019-04-19_21-35-33 /data/backup/full/2019-04-19_21-28-32
4) 在第二个增量备份上执行 (增量备份产生的子目录是 2019-04-19_21-38-16 ,前面完整备份的目录是 /data/backup/full/2019-04-19_21-28-32)

innobackupex --apply-log --incremental-dir=/data/backup/incremental/2019-04-19_21-38-16 /data/backup/full/2019-04-19_21-28-32

  1. 增量备份的恢复阶段
    通过prepare阶段,base 目录包含了所有数据。在恢复时,只需要通过以下操作即可。

innobackupex --datadir=/data/mysql3307/data --copy-back /data/backup/full/2019-04-19_21-28-32
在数据库实例启动前,需要修改文件的所有权,执行指令如下

chown -R mysql:mysql /data/mysql3307/data

  1. 开启实例,进行验证

恢复后的数据,正是我们想要的数据,测试到达了预期效果。

注:
现在xtrabackup版本升级到了2.4,相比之前的2.1有了比较大的变化:innobackupex 功能全部集成到 xtrabackup 里面,只有一个 binary,另外为了使用上的兼容考虑,innobackupex作为 xtrabackup 的一个软链,即xtrabackup现在支持非Innodb表备份,并且Innobackupex在下一版本中移除,建议通过xtrabackup替换innobackupex。
原文地址https://www.cnblogs.com/xuliuzai/p/10719975.html

Percona XtraBackup 关于 MySQL备份还原的详细测试相关推荐

  1. 如何在Ubuntu 14.04上使用Percona XtraBackup创建MySQL数据库的热备份

    如何在Ubuntu 14.04上使用Percona XtraBackup创建MySQL数据库的热备份 介绍 使用活动数据库系统时遇到的一个非常常见的挑战是执行热备份,即在不停止数据库服务或将其设置为只 ...

  2. mysql备份还原(视图、存储过程)

    最近在备份还原mysql的时候发现,视图还原报错,无法创建视图,在网上查了下资料,找到以下信息: 1.如果备份的数据库含有视图,还原时需要把my.ini中的character-set改为latin1, ...

  3. linux下mysql日志管理及mysql备份还原

    linux下mysql日志管理及mysql备份还原 1.SHOW GLOBAL VARIABLES LIKE '%log%';  显示所有日志相关的选项 2.错误日志:log_error和log_wa ...

  4. mysql备份还原参数详解

    #windows下mysql备份还原,可不用修改my.ini来还原视图(已验证) mysqldump -uroot -p123 --default-character-set=gbk --opt -- ...

  5. xtrabackup备份mysql5.7_【 xtrabackup】CentOS7.x上基于 MySQL 5.7.x的XtraBackup 安装与备份还原...

    MySQL的XtraBackup 备份与恢复 https://shockerli.net/post/xtrabackup-backup-recovery-mysql Percona XtraBacku ...

  6. mysql大数据量的全量备份_mysql备份神器——Xtrabackup全量备份还原

    概述 Xtrabackup是一种物理备份工具,通过协议连接到mysql服务端,然后读取并复制innodb底 层的"数据块",完成所谓的"物理备份". 支持对in ...

  7. 使用Xtrabackup进行MySQL备份

    一.安装 1.简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具.特点: (1)备份 ...

  8. mysql 备份还原

    MySQL的备份与还原 MySQL备份和还原,都是利用mysqldump.mysql和source命令来完成的.  1.Win32下MySQL的备份与还原  1.1 备份  开始菜单 | 运行 | c ...

  9. MySQL备份还原知识要点

    数据库在使用当中都会有数据库备份工作,当数据库发生严重错误无法启动,或者数据丢失时可以及时有效地恢复数据.文章简单介绍如何备份和还原MySQL数据库. 备份数据库 使用mysqldump命令备份数据库 ...

最新文章

  1. Android移动开发之【Android实战项目】DAY14-修改json里某个字段的值
  2. 一点一点看JDK源码(四)java.util.ArrayList 中篇
  3. 利用poi进行数据的excel导出
  4. Android属性动画 ObjectAnimator
  5. SAP CDS view 单元测试框架 Test Double 介绍
  6. 复习一下,免得下次面试又栽在沟里~
  7. Ubuntu的默认root密码是多少,修改root密码
  8. 淡定的写代码,淡定的人生
  9. 软件包管理器前端工具yum的使用
  10. LaTeX最全的数学符号大全(更新中…… )
  11. 银行计算机管理系统开发背景,银行储蓄管理系统的设计与实现
  12. 【Excel文件合并工具】
  13. H5唤起APP指南(附开源唤端库)
  14. python输入三个数形成各种三角形
  15. 在线代理(Web ProxyServer)完全详解
  16. 俄罗斯计算机三进制优缺点,为什么我们没有用上三进制的计算机
  17. fstab文件只读,怎么办
  18. 注册一个域名需要多少钱_域名注册需要多少钱?注册一个域名一般要多少钱?贵吗?...
  19. C语言石头剪刀布游戏课设
  20. 将iTunes降级到12.6版本

热门文章

  1. 自己在项目设计和开发的一些总结
  2. 读《台湾码农的心路历程》
  3. java 广播地址,根据ip地址跟子网掩码获取广播地址的java实现
  4. mysql有三种事务模式_MySQL之事务与三大范式
  5. python tensorflow教程推荐_TensorFlow教程和文章推荐大全 -DZone AI
  6. 与安装应用签名不同怎么解决_天堂巴比伦 安卓游戏安装失败怎么解决
  7. 问题 | UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 29解决办法
  8. 数据结构学习笔记(六):二叉树(Binary Tree)
  9. HTML Help Workshop制作chm帮助文件和在应用程序中的调用
  10. linux查询字段排序,Linux 操作命令 sort