Xtrabackup 安装

# 上传文件包
[root@db03 ~]# rz percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm # 下载epel源
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-6.repo
# 安装依赖
yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL
# 下载Xtrabackup
wget httpss://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/redhat/6/x86_64/percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm # 安装
[root@db03 ~]# yum localinstall -y percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm
# 安装好后的命令
[root@db03 ~]# xtrabackup
[root@db03 ~]# innobackupex

Xtrabackup 备份介绍

对于非 innodb 表(比如 myisam)是直接锁表 Copy 数据文件,属于一种温备;

对于 innodb 表(支持事务),不锁表,cp数据页最终以数据文件方式保存下来,并且把 redo 和 undo 一并备走,属于热备方式 。

注意:备份时读取配置文件/etc/my.cnf(如果使用 Xtrabackup 备份,必须要配置 datadir)

Xtrabackup全量备份

准备备份目录

[root@db03 ~]#  mkdir /backup

全量备份

[root@db03 ~]#  innobackupex --user=root --password=123 /backup/full

# 去掉时间戳进行备份
[root@db03 ~]# innobackupex --user=root --password=123 --no-timestamp /backup/full

查看全量备份内容

[root@db03 ~]#  ll /backup/full/
backup-my.cnf
dump
ibdata1
ibdata2
mysql
performance_schema
row
test
xtrabackup_binlog_info # bin-log 信息
xtrabackup_checkpoints # 本次备份的数据的 起始日志序列号(LSN)-结束日志序列号(LSN)
xtrabackup_info # 工具或数据的信息
xtrabackup_logfile # redo-log 信息 [root@db03 full]# cat xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 8417759

Xtrabackup 全量备份恢复数据

删除所有数据库

# 删库
mysql> drop database dump;
mysql> drop database performance_schema;
mysql> drop database row;
mysql> drop database test;

停止数据库服务

[root@db03 ~]#  systemctl stop mysqld.service

模拟 CSR 的过程

# 将 redo 进行重做,已提交的写到数据文件,未提交的使用 undo 回滚,模拟 CSR 的过程
[root@db03 ~]# innobackupex --user=root --password=123 --apply-log /backup/full

恢复数据

方法一(不推荐)

# 移走原数据目录
[root@db03 mysql]# mv data data.back # 将全备的数据目录迁移回来
[root@db03 mysql]# cp -r /backup/full ./data [root@db03 mysql]# chown -R mysql.mysql data

方法二(推荐)

# 使用 innobackupex 恢复数据
[root@db03 mysql]# innobackupex --copy-back /backup/full/
[root@db03 mysql]# chown -R mysql.mysql data

检验结果

# 启动数据库
[root@db03 data]# systemctl start mysqld
# 查看是否恢复
[root@db03 data]# mysql -uroot -p123
mysql> show databases;

Xtrabackup 增量备份

Xtrabackup 每次基于上一次备份进行增量;

增量备份无法单独恢复,必须基于全备进行恢复;

所有增量必须要按顺序合并到全备当中 。

全量备份

[root@db03 ~]#  innobackupex --user=root --password=123 --no-timestamp /backup/full_$(date +%F)

插入新数据

[root@db03 ~]#  mysql -uroot -p123
mysql> use dump
mysql> insert dump values(10000),(20000),(30000);

第一次增量备份

[root@db01 ~]#  innobackupex --user=root --password=123 --no-timestamp --incremental --incremental-basedir=/backup/full_2020-07-23 /backup/inc1

参数说明:
--incremental:开启增量备份功能
--incremental-basedir:上一次备份的路径 # 验证
[root@db03 ~]# cat /backup/full/xtrabackup_checkpoints
backup_type = full-prepared
from_lsn = 0
to_lsn = 8417759
[root@db03 ~]# cat /backup/inc1/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 8417759
to_lsn = 8419281

插入新数据

[root@db03 ~]#  mysql -uroot -p123
mysql> use dump
mysql> insert dump values(100000),(200000),(300000);

第二次增量备份

[root@db03 ~]#  innobackupex --user=root --password=123 --no-timestamp --incremental --incremental-basedir=/backup/inc1/ /backup/inc2

# 验证
[root@db03 backup]# cat /backup/full_2020-07-23/xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 1636167 [root@db03 backup]# cat /backup/inc1/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 1636167
to_lsn = 1640828 [root@db03 backup]# cat /backup/inc2/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 1640828
to_lsn = 1645877

Xtrabackup 增量备份恢复数据

将全备执行 Redo

[root@db03 backup]#  innobackupex --apply-log --redo-only /backup/full_2020-07-23

将第一次增备只执行 redo,合并到第一次全备

[root@db03 backup]#  innobackupex --apply-log --redo-only --incremental-dir=/backup/inc1/ /backup/full_2020-07-23

# 验证
[root@db03 backup]# cat /backup/full_2020-07-23/xtrabackup_checkpoints
backup_type = log-applied
from_lsn = 0
to_lsn = 1640828 # 该值本来是inc1的位置点

将最后一次增备执行 redo 和 undo,合并到第一次全备

[root@db03 backup]#  innobackupex --apply-log --incremental-dir=/backup/inc2/ /backup/full_2020-07-23

# 验证
[root@db03 backup]# cat /backup/full_2020-07-23/xtrabackup_checkpoints
backup_type = log-applied
from_lsn = 0
to_lsn = 1645877 # 该值本来是inc2的位置点

将整体数据进行一次 CSR

[root@db03 backup]#  innobackupex --apply-log /backup/full_2020-07-23/

恢复数据

[root@db03 mysql]#  mv data data.bak
[root@db03 mysql]# innobackupex --copy-back /backup/full_2020-07-23/
[root@db03 mysql]# chown -R mysql.mysql ./data
[root@db03 mysql]# systemctl start mysqld

全量备份 & 增量备份 对比

增备:

优点:占用磁盘空间小,没有重复数据

缺点:恢复麻烦

全备:

优点:恢复容易,只需一次

缺点:占用磁盘空间,每次全备都有重复数据

Xtrabackup 物理备份的更多相关文章

  1. XtraBackup物理备份 阿里云的Mysql备份方案

    XtraBackup物理备份 Percona XtraBackup是世界上唯一的开源,免费的MySQL热备份软件,为InnoDB和XtraDB 数据库执行非阻塞备份.使用Percona XtraBac ...

  2. MariaDB xtrabackup物理备份与还原

    xtrabackup物理备份 1.1 安装xtraback 安装依赖: [root@localhost ~]# yum install -y perl-DBD-MySQL perl-DBI perl- ...

  3. Innobackupex(xtrabackup)物理备份

    1. Percona XtraBackup介绍 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个完全开源的用于 MySQL 数据库物理热备的备份工具,在备份过程中不 ...

  4. MySQL数据库之xtrabackup物理备份(一)

    前言:说到数据库备份,我们知道可以用来对数据库进行备份的工具有mysqldump.mydumer.mysqlpump等等,实际工作中,机器上的数据库不大的话,都是用mysqldump工具来备份,这些备 ...

  5. (4.15)mysql备份还原——物理备份之XtraBackup的下载与安装

    关键词:mysql物理备份,XtraBackup,XtraBackup安装,XtraBackup下载 实践链接:https://www.cnblogs.com/gered/p/11147193.htm ...

  6. 使用 xtrabackup 进行MySQL数据库物理备份

    0. xtrabackup的功能 能实现的功能: 非阻塞备份innodb等事务引擎数据库. 备份myisam表会阻塞(需要锁). 支持全备.增量备份.压缩备份. 快速增量备份(xtradb,原理类似于 ...

  7. mysql之使用xtrabackup进行物理备份、恢复、在线克隆从库、在线重做主从

    注:图片来自<深入浅出MySQL 数据库开发 优化与管理维护 第2版> 物理备份和恢复 1.冷备份:停掉mysql再备份,一般很少用,因为很多应用不允许长时间停机,停机备份的可以直接CP数 ...

  8. MySQL · 物理备份 · Percona XtraBackup 备份原理

    http://mysql.taobao.org/monthly/2016/03/07/ 前言 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MySQL 数据 ...

  9. xtrabackup进行物理备份、恢复、在线克隆从库、在线重做主从

    http://www.lai18.com/content/4733997.html 注:图片来自<深入浅出MySQL 数据库开发 优化与管理维护 第2版> 物理备份和恢复 1.冷备份:停掉 ...

随机推荐

  1. 使用yaml来实现ingress-nginx

    创建一个ingress-nginx [root@k8s-master ingress]# cat ingress-nginx.yaml apiVersion: v1 kind: Namespace m ...

  2. 如何使用github搜索需要的开源项目

    按照项目名/仓库名搜索(大小写不敏感)in:name xxx按照README搜索(大小写不敏感)in:readme xxx按照description搜索(大小写不敏感)in:description x ...

  3. RocketMQ在linx安装及其有关问题解决

    Linx安装和使用: rocketmq官网:http://rocketmq.apache.org/ 首先安装JDK(推荐使用JDK1.8),并配置环境变量 下载rocketmq压碎包并解压到指定目录 ...

  4. Junit测试和反射

    Junit单元测试 测试分类 黑盒测试:不需要写代码,给输入值,看程序能否得到输出期望值. 白盒测试:需要些代码,关注程序具体的执行流程. Junit的使用 步骤 定义一个测试类(测试用例). 定义测 ...

  5. 三十二:WEB漏洞-文件操作之文件下载读取全解

    文件下载读取 原路,检测,利用,修复 利用 数据库配置文件下载或者读取后续 接口密钥信息文件下载或者读取后续 文件名,参数值,目录符号 read.xxx?filename= down.xxx?file ...

  6. java之 Request

    0x01.Request 什么是request 在Servlet API中,定义了一个HttpServletRequest接口,它继承自ServletRequest接口,专门用来封装HTTP请求消息. ...

  7. CSSmargin击穿问题(子元素margin-top会影响父元素)

    最近写一个H5页面的时候发现了这个被忽视的问题,一时没想到什么原因,搜了半天,记录一下,方便他人踩坑.唉,有些东西不用就忘. 一.问题描述 <div class="container& ...

  8. 阿里云弹性公网IP那些事 阿里云云栖号 6月1日 弹性公网IP是独立的公网IP资源,可以绑定到阿里云专有网络VPC类型的ECS、NAT网关、私网负载均衡SLB上,并可以动态解绑,实现公网IP和ECS、NAT网关、SLB的解耦,满足灵活管理的要求。阿里云弹性公网IP那些事 阿里云云栖号 6月1日 弹性络VPC类型的E

    阿里云弹性公网IP那些事 阿里云云栖号 6月1日 弹性公网IP是独立的公网关.私网负载均衡SLB上,并可以动态解绑,实现公网IP和ECS.NAT网关.SLB的解耦,满足灵活管理的要求.

  9. Linux网络数据包的揭秘以及常见的调优方式总结

    https://mp.weixin.qq.com/s/boRWlx1R7TX0NLuI2sZBfQ 作为业务 SRE,我们所运维的业务,常常以 Linux+TCP/UDP daemon 的形式对外提供 ...

  10. java 将内容写入文件 txt

    @Test //将内容写入文件 public void xieru() throws Exception{ FileWriter fileWriter=new FileWriter("d:\ ...